Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Chaque fois qu’une actualisation planifiée s’exécute pour vos vues matérialisées de lac, Fabric détermine la meilleure stratégie à utiliser, sans actualisation, incrémentielle ou complète, en fonction de ce qui a changé dans les données sources. Ce comportement est appelé actualisation optimale et vous aide à maintenir vos vues matérialisées de lac à jour tout en réduisant les coûts de calcul et l’heure d’actualisation.
Cet article explique comment une actualisation optimale fonctionne, ce que fait chaque stratégie et comment basculer en mode d’actualisation complète si nécessaire.
Remarque
L’actualisation optimale n’est pas prise en charge dans les scénarios suivants :
- Définitions PySpark : l’actualisation optimale s’applique uniquement aux MLV définis avec Spark SQL. Les MLV définis par PySpark utilisent toujours l’actualisation complète.
- Tables sources non-Delta: Les vues de lacs matérialisées qui utilisent des tables non-Delta comme source effectuent toujours une actualisation complète. Les stratégies incrémentielles et sans actualisation nécessitent des sources de table Delta.
Avantages de l’actualisation optimale
En analysant les validations delta sur les tables sources, une actualisation optimale peut prendre des décisions intelligentes sur la façon de traiter vos données. Dans la situation possible, cela peut entraîner :
- Coût inférieur : moins de calcul et de stockage sont utilisés lorsque Fabric détecte que les données sources ne changent pas et ignorent entièrement l’actualisation. Aucun frais supplémentaire ne s’applique à une actualisation optimale : vous êtes facturé en fonction de l’utilisation du calcul pendant les opérations d’actualisation.
- Amélioration de l’efficacité : cycles d’actualisation plus rapides lorsque seules les données modifiées doivent être traitées, ce qui vous aide à fournir des insights plus frais.
- Économies de temps : durée d’actualisation réduite lorsque le traitement incrémentiel est appliqué au lieu de recomputer le jeu de données complet.
Stratégies d’actualisation optimales
Le tableau suivant décrit les stratégies d’actualisation que l’actualisation optimale peut sélectionner :
| Stratégie d’actualisation | Descriptif |
|---|---|
| Aucune actualisation | Si aucune nouvelle validation delta n’est détectée sur les tables sources, Fabric ignore entièrement l’actualisation, évitant ainsi le calcul inutile. |
| Actualisation incrémentielle | Traite uniquement les données modifiées lorsque de nouvelles validations delta sont détectées sur les tables sources. |
| Actualisation complète | Recompute l’ensemble de la vue matérialisée du lac à partir du jeu de données source complet. Cette stratégie est utilisée lorsque des expressions non prises en charge sont détectées, lorsque les modifications ne peuvent pas être traitées de manière incrémentielle, ou lorsque le jeu de données source est suffisamment petit pour qu’un récompute complet soit plus rapide que le traitement incrémentiel. |
Important
L'actualisation incrémentielle nécessite la propriété CDF (Delta Change Data Feed) sur toutes les tables sources référencées dans la définition matérialisée de la vue de lac. Sans CDF activé, l’actualisation optimale peut uniquement choisir entre aucune actualisation et actualisation complète. Pour plus d’informations, consultez Activer l’actualisation incrémentielle.
Configurer une actualisation optimale
L'option de basculement d'actualisation optimale vous offre des stratégies sans actualisation et avec actualisation complète sans paramétrage supplémentaire. Pour déverrouiller la stratégie d’actualisation incrémentielle, vous devez également activer le flux de données modifiées sur vos tables sources.
Activer le mode d’actualisation optimal
Par défaut, le mode d'actualisation optimal est activé pour le linéage d'une vue matérialisée du lac. S’il n’est pas activé, procédez comme suit pour l’activer :
Accédez à votre lakehouse et sélectionnez Les vues matérialisées du lac.
Sélectionnez Gérer, puis sélectionnez le bouton bascule d’actualisation optimale pour l’activer.
Activer l’actualisation incrémentielle
Pour utiliser l’actualisation incrémentielle, vous devez activer la propriété de flux de données de modification delta (CDF) sur toutes les tables sources ou vues de lac matérialisées référencées dans la définition de vue de lac matérialisée. CDF permet à Fabric de lire uniquement les lignes qui ont changé depuis la dernière actualisation, au lieu de retraiter le jeu de données complet.
Sans CDF activé, l’actualisation optimale peut uniquement choisir entre aucune actualisation et actualisation complète.
L’actualisation incrémentielle est prise en charge uniquement pour les données d’ajout. Si les données sources incluent des suppressions ou des mises à jour, Fabric effectue une actualisation complète.
Remarque
L’activation de CDF sur vos tables sources n’a aucun effet mesurable sur le stockage ou les performances pour les charges de travail d’ajout uniquement, ce qui est le scénario pris en charge par l’actualisation incrémentielle. CDF est une propriété standard des tables Delta Lake dont peuvent également profiter d’autres fonctionnalités de Fabric. Pour plus d’informations sur le fonctionnement de CDF, consultez Utiliser le flux de données de modification Delta Lake.
Vous pouvez activer le CDF au moment de la création en incluant TBLPROPERTIES dans l’instruction CREATE :
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
Pour les tables sources existantes, utilisez cette option ALTER TABLE pour activer CDF :
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Par exemple, pour activer CDF sur les deux tables sources à partir du guide de prise en main :
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Constructions SQL prises en charge par l’actualisation incrémentielle
L’actualisation incrémentielle fonctionne lorsque la définition de votre vue matérialisée de lac utilise uniquement les constructions SQL décrites ici. Si votre requête inclut des constructions non prises en charge( telles que des fonctions de fenêtre ou des fonctions non déterministes), Fabric actualise toujours vos données, mais revient à une actualisation complète.
| Élément SQL | Remarque |
|---|---|
| Expression SELECT | Les fonctions et expressions intégrées déterministes sont prises en charge. Non pris en charge pour l’actualisation incrémentielle : fonctions d’agrégation (SUM(), , COUNT()AVG()MIN(), MAX()STDDEV(), , etc.), GROUP BY, DISTINCTfonctions de fenêtre et fonctions non déterministes telles que rand(), uuid(), . current_timestamp() |
| FROM | Prend en charge les tables Delta et les vues matérialisées du lac. Les sous-requêtes et les CTEs fonctionnent s’ils utilisent uniquement les clauses prises en charge. |
| WHERE | Seules les fonctions intégrées déterministes sont prises en charge. |
| JOINTURE INTERNE | Pris en charge. |
| JOINTURE EXTERNE GAUCHE / JOINTURE SÉMIGRAPHIQUE GAUCHE | Pris en charge. L’actualisation incrémentielle fonctionne uniquement si la table de droite reste inchangée pendant le cycle d’actualisation. Toute modification apportée à la table de droite déclenche une actualisation complète. |
| UNION ALL | Pris en charge. |
| WITH | Expressions de table courantes (CTE) si elles utilisent uniquement des clauses supportées. |
| Sous-requêtes dans les expressions | Les sous-requêtes au sein des expressions SELECT ou WHERE (telles que les sous-requêtes scalaires ou EXISTS) déclenchent une actualisation complète si une table référencée a des modifications. |
| Contraintes de qualité des données | Seules les fonctions intégrées déterministes sont prises en charge dans les contraintes. |
Remarque
L’utilisation de constructions non prises en charge n’empêche pas de créer une vue matérialisée du lac. Cela signifie uniquement que Fabric utilise une actualisation complète au lieu d’une actualisation incrémentielle.
Actualisation complète
L’actualisation optimale revient automatiquement à une actualisation complète si nécessaire, de sorte que vous n’avez pas normalement besoin de la forcer. Toutefois, il existe des cas où vous souhaiterez peut-être déclencher une actualisation complète manuellement, par exemple pour résoudre les résultats inattendus ou pour retraiter les données après une correction.
Exécuter une actualisation complète ponctuelle avec SQL
Pour forcer une actualisation complète d’une vue matérialisée spécifique, exécutez la commande suivante :
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
Remarque
Si le nom de votre espace de travail contient des espaces, placez-le entre des guillemets inversés : `My Workspace`.lakehouse.schema.view_name
Désactiver l’actualisation optimale
Si vous souhaitez que chaque exécution planifiée effectue une actualisation complète, vous pouvez désactiver le commutateur d’actualisation optimale. Cela désactive les stratégies non actualisées et incrémentielles : chaque exécution recompute le jeu de données complet, même si aucune donnée source n’a changé.
Accédez à votre lakehouse et sélectionnez Les vues matérialisées du lac.
Cliquez sur Gérer et désactivez le commutateur d'actualisation optimale.