Partager via


REFRESH Clause POLICY (pipelines)

Important

Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Ajoute une stratégie d’actualisation à la vue matérialisée, en contrôlant quand incrémentiser l’actualisation. S’applique à l’instruction CREATE MATERIALIZED VIEW (pipelines).

Pour en savoir plus sur l’incrémentisation, consultez Actualisation incrémentielle pour les vues matérialisées. Vous pouvez vérifier si une requête SQL est incrémentielle 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

Paramètres

  • refresh_policy

    Définit une stratégie d’actualisation pour la vue matérialisée. Si la REFRESH POLICY valeur est omise, AUTO est la stratégie par défaut.

    La stratégie d’actualisation définit comment une actualisation gère l’incrémentisation de la vue matérialisée.

    • AUTO

      Le système sélectionne automatiquement l’actualisation incrémentielle ou complète, en fonction du modèle de coût.

      État Comportement
      L’actualisation incrémentielle est disponible. Utilise le modèle de coût pour déterminer qui est moins cher, incrémentiel ou complet.
      L’actualisation incrémentielle n’est pas disponible. Effectue une actualisation complète.
      La création ou la re-initialisation est requise (par exemple, lors de la modification du schéma) Effectue une actualisation complète.
    • INCREMENTAL

      Le système utilise des actualisations incrémentielles lorsque cela est possible. Sur CREATE, si la requête ne peut pas être incrémentielle, l’instruction create échoue.

      État Comportement
      L’actualisation incrémentielle est disponible. Effectue une actualisation incrémentielle.
      L’actualisation incrémentielle n’est pas disponible. Effectue une actualisation complète.
      La création ou la re-initialisation est requise, mais l’incrémentisation est possible pour la requête. Effectue une actualisation complète.
      La création ou la re-initialisation est requise et l’incrémentisation n’est pas possible pour la requête. L’opération échoue.
    • INCREMENTAL STRICT

      Le système utilise des actualisations incrémentielles. Sur CREATE, si la requête ne peut pas être incrémentielle, l’instruction create échoue.

      État Comportement
      L’actualisation incrémentielle est disponible. Effectue une actualisation incrémentielle.
      L’actualisation incrémentielle n’est pas disponible. L'actualisation échoue.
      La création ou la re-initialisation est requise, mais l’incrémentisation est possible pour la requête. Effectue une actualisation complète.
      La création ou la re-initialisation est requise et l’incrémentisation n’est pas possible pour la requête. L’opération échoue.
    • FULL

      Le système utilise toujours une actualisation complète.

      État Comportement
      L’actualisation incrémentielle est disponible. Effectue une actualisation complète.
      L’actualisation incrémentielle n’est pas disponible. Effectue une actualisation complète.
      La création ou la re-initialisation est requise. Effectue une actualisation complète.

Comportement en cas d’échec

Lorsqu’une actualisation échoue, car elle ne peut pas répondre à la stratégie d’actualisation (pour REFRESH POLICY INCREMENTAL (STRICT)), le système retourne une classe d’erreur contenant MATERIALIZED_VIEW_NOT_INCREMENTALIZABLE des informations détaillées qui décrivent la raison de ne pas être incrémentielle :

  • AGGREGATE_NOT_TOP_NODE: GROUP BY avec des expressions complexes ci-dessus, elle n’est pas prise en charge.
  • EXPRESSION_NOT_DETERMINSTIC: une fonction non déterministe, telle que RAND, est utilisée dans la requête.
  • INPUT_NOT_IN_DELTA: Un ou plusieurs jeux de données sources ne sont pas des tables Delta.
  • OPERATOR_NOT_INCREMENTALIZABLE: un opérateur, tel qu’une jointure complexe, empêche l’incrémentisation.
  • ROW_TRACKING_NOT_ENABLED: les tables sources qui nécessitent le suivi des lignes n’ont pas activé le suivi des lignes.
  • SUBQUERY_EXPRESSION_NOT_INCREMENTALIZABLE: une ou plusieurs sous-requêtes de votre requête ne sont pas incrémentielles.
  • UDF_NOT_DETERMINISTIC: une ou plusieurs fonctions définies par l’utilisateur utilisées dans l’expression ne sont pas marquées comme déterministes.
  • WINDOW_WITHOUT_PARTITION_BY: spécifications de fenêtre sans PARTITION_BY incrémentiel.

Pour comprendre ce qui rend une requête incrémentielle modifiable, consultez Actualisation incrémentielle pour les vues matérialisées.

Pour vérifier si une requête SQL est incrémentielle, utilisez l’instruction EXPLAIN CREATE MATERIALIZED VIEW dans Databricks SQL. Voir EXPLAIN CREATE MATERIALIZED VIEW.

Examples

-- 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;