Clause REFRESH POLICY (pipelines)
Ajoute une politique de refresh à la vue matérialisée, contrôlant quand incrémenter le refresh. S'applique à l'instruction CREATE MATERIALIZED VIEW (pipelines).
Pour en savoir plus sur l’incrémentalisation, consultez refresh incrémentiel pour les vues matérialisées. Vous pouvez vérifier si une requête SQL est incrémentable avec l'instruction EXPLAIN CREATE MATERIALIZED VIEW dans Databricks SQL. Voir EXPLAIN CREATE MATERIALIZED VIEW.
Syntaxe
REFRESH POLICY refresh_policy
refresh_policy:
AUTO | INCREMENTAL | INCREMENTAL STRICT | FULL
parameter
-
stratégie d'actualisation
Définit une stratégie de refresh pour la vue matérialisée. Si le
REFRESH POLICYest omis,AUTOest la politique default.La politique de refresh définit la manière dont un refresh gère l'incrémentation de la vue matérialisée.
-
AUTOLe système sélectionne automatiquement le refresh incrémentiel ou complet, en fonction du modèle de coût.
-
État | Comportement |
|---|---|
L'incrémentiel est disponible pour le refresh. | Utilise le modèle de coûts pour déterminer ce qui est le moins cher : incrémentiel ou complet. |
L'incrémentiel n'est pas disponible pour le refresh. | Effectue un refresh complet. |
La création ou la réinitialisation est requise (par exemple, lors d'un changement de schéma). | Effectue un refresh complet. |
-
INCREMENTALLe système utilise des actualisations incrémentielles lorsque c'est possible. Sur
CREATE, si la query ne peut pas être incrémentée, l'instruction de création échoue.
État | Comportement |
|---|---|
L'incrémentiel est disponible pour le refresh. | Effectue un refresh incrémentiel. |
L'incrémentiel n'est pas disponible pour le refresh. | Effectue un refresh complet. |
La création ou la réinitialisation est requise, mais l'incrémentation est possible pour la query. | Effectue un refresh complet. |
La création ou la réinitialisation est requise, et l'incrémentalisation n'est pas possible pour la query. | L'opération échoue. |
-
INCREMENTAL STRICTLe système utilise des actualisations incrémentielles. Sur
CREATE, si la query ne peut pas être incrémentée, l'instruction de création échoue.
État | Comportement |
|---|---|
L'incrémentiel est disponible pour le refresh. | Effectue un refresh incrémentiel. |
L'incrémentiel n'est pas disponible pour le refresh. | Le refresh échoue. |
La création ou la réinitialisation est requise, mais l'incrémentation est possible pour la query. | Effectue un refresh complet. |
La création ou la réinitialisation est requise, et l'incrémentalisation n'est pas possible pour la query. | L'opération échoue. |
-
FULLLe système utilise toujours un full refresh.
État | Comportement |
|---|---|
L'incrémentiel est disponible pour le refresh. | Effectue un refresh complet. |
L'incrémentiel n'est pas disponible pour le refresh. | Effectue un refresh complet. |
La création ou la réinitialisation est requise. | Effectue un refresh complet. |
Comportement en cas d'échec
Lorsqu'un refresh échoue parce qu'il ne peut pas respecter la politique de refresh (pour REFRESH POLICY INCREMENTAL (STRICT)), le système renvoie une classe d'erreur de MATERIALIZED_VIEW_NOT_INCREMENTALIZABLE avec des informations détaillées qui décrivent la raison de ne pas être incrémentable :
AGGREGATE_NOT_TOP_NODE:GROUP BYavec des expressions complexes au-dessus n'est pas pris en charge.EXPRESSION_NOT_DETERMINISTIC: une fonction non déterministe, commeRAND, est utilisée dans la query.INPUT_NOT_IN_DELTA: Un ou plusieurs datasets sources ne sont pas des tables Delta.OPERATOR_NOT_INCREMENTALIZABLE: un opérateur, tel qu'une jointure complexe, empêche l'incémentalisation.ROW_TRACKING_NOT_ENABLED: Les tables sources qui nécessitent le suivi des lignes n'ont pas le suivi des lignes activé.SUBQUERY_EXPRESSION_NOT_INCREMENTALIZABLE: Une ou plusieurs sous-requêtes de votre query ne sont pas incrémentalisables.UDF_NOT_DETERMINISTIC: Une ou plusieurs UDF utilisées dans l'expression ne sont pas marquées comme déterministes.WINDOW_WITHOUT_PARTITION_BY: Les spécifications de fenêtre sansPARTITION_BYne sont pas incrémentables.
Pour comprendre ce qui rend une query incrémentale, consultez refresh incrémentiel pour les vues matérialisées.
Pour vérifier si une query SQL est incrémentable, utilisez l’instruction EXPLAIN CREATE MATERIALIZED VIEW dans Databricks SQL. Consultez EXPLAIN CREATE MATERIALIZED VIEW.
Exemples
-- Create a materialized view with an incremental policy
CREATE OR REFRESH MATERIALIZED VIEW my_mv
REFRESH POLICY INCREMENTAL
AS SELECT a, sum(b) FROM my_catalog.example.my_table GROUP BY a;