Partager via


REFRESH Clause POLICY

S’applique à :case cochée oui Databricks SQL case cochée oui Databricks Runtime

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 .

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 . 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 n’est pas possible d’être incrémentielle, la création é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 n’est pas possible d’être incrémentielle, la création é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. Par exemple:

  • OPERATOR_NOT_SUPPORTED: un opérateur, tel qu’une jointure complexe, empêche l’incrémentisation.
  • EXPRESSION_NOT_DETERMINSTIC: une fonction non déterministe, telle que RAND, est utilisée dans la requête.

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 EXPLAINCREATE MATERIALIZED VIEW . Voir EXPLAIN CREATE MATERIALIZED VIEW.

Examples

-- Create a materialized view with an incremental policy
CREATE MATERIALIZED VIEW IF NOT EXISTS my_mv
REFRESH POLICY INCREMENTAL
AS SELECT a, sum(b) FROM my_catalog.example.my_table GROUP BY a;