Freigeben über


REFRESH POLICY-Klausel (Pipelines)

Von Bedeutung

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Verwalten von Azure Databricks-Vorschauen.

Fügt der materialisierten Ansicht eine Aktualisierungsrichtlinie hinzu, die steuert, wann die Aktualisierung inkrementellisiert werden soll. Gilt für die CREATE MATERIALIZED VIEW Anweisung (Pipelines).

Weitere Informationen zur Inkrementierung finden Sie unter Inkrementelle Aktualisierung für materialisierte Ansichten. Mit der EXPLAIN CREATE MATERIALIZED VIEW Anweisung in Databricks SQL können Sie überprüfen, ob eine SQL-Abfrage inkrementell ist. Siehe EXPLAIN CREATE MATERIALIZED VIEW.

Syntax

REFRESH POLICY refresh_policy

refresh_policy:
  AUTO | INCREMENTAL | INCREMENTAL STRICT | FULL

Die Parameter

  • refresh_policy

    Definiert eine Aktualisierungsrichtlinie für die materialisierte Ansicht. Wenn dies REFRESH POLICY nicht angegeben wird, AUTO ist die Standardrichtlinie.

    Die Aktualisierungsrichtlinie definiert, wie eine Aktualisierung die Inkrementierung der materialisierten Ansicht behandelt.

    • AUTO

      Das System wählt automatisch eine inkrementelle oder vollständige Aktualisierung basierend auf dem Kostenmodell aus.

      Staat Verhalten
      Inkrementell ist für die Aktualisierung verfügbar. Verwendet das Kostenmodell, um zu bestimmen, welches billiger, inkrementell oder vollständig ist.
      Inkrementell ist für die Aktualisierung nicht verfügbar. Führt eine vollständige Aktualisierung aus.
      Erstellen oder Erneute Initialisieren ist erforderlich (z. B. bei Schemaänderung) Führt eine vollständige Aktualisierung aus.
    • INCREMENTAL

      Das System verwendet nach Möglichkeit inkrementelle Aktualisierungen. Wenn CREATEdie Abfrage nicht inkrementellisiert werden kann, schlägt die Create-Anweisung fehl.

      Staat Verhalten
      Inkrementell ist für die Aktualisierung verfügbar. Führt eine inkrementelle Aktualisierung aus.
      Inkrementell ist für die Aktualisierung nicht verfügbar. Führt eine vollständige Aktualisierung aus.
      Die Erstellung oder Erneute Initialisierung ist erforderlich, die inkrementelle Inkrementierung ist jedoch für die Abfrage möglich. Führt eine vollständige Aktualisierung aus.
      Die Erstellung oder Erneute Initialisierung ist erforderlich, und die Inkrementierung ist für die Abfrage nicht möglich. Der Vorgang schlägt fehl.
    • INCREMENTAL STRICT

      Das System verwendet inkrementelle Aktualisierungen. Wenn CREATEdie Abfrage nicht inkrementellisiert werden kann, schlägt die Create-Anweisung fehl.

      Staat Verhalten
      Inkrementell ist für die Aktualisierung verfügbar. Führt eine inkrementelle Aktualisierung aus.
      Inkrementell ist für die Aktualisierung nicht verfügbar. Bei der Aktualisierung tritt ein Fehler auf.
      Die Erstellung oder Erneute Initialisierung ist erforderlich, die inkrementelle Inkrementierung ist jedoch für die Abfrage möglich. Führt eine vollständige Aktualisierung aus.
      Die Erstellung oder Erneute Initialisierung ist erforderlich, und die Inkrementierung ist für die Abfrage nicht möglich. Der Vorgang schlägt fehl.
    • FULL

      Das System verwendet immer eine vollständige Aktualisierung.

      Staat Verhalten
      Inkrementell ist für die Aktualisierung verfügbar. Führt eine vollständige Aktualisierung aus.
      Inkrementell ist für die Aktualisierung nicht verfügbar. Führt eine vollständige Aktualisierung aus.
      Die Erstellung oder Erneute Initialisierung ist erforderlich. Führt eine vollständige Aktualisierung aus.

Verhalten bei Fehlern

Wenn eine Aktualisierung fehlschlägt, da sie die Aktualisierungsrichtlinie nicht erfüllen kann (für REFRESH POLICY INCREMENTAL (STRICT)), gibt das System eine Fehlerklasse MATERIALIZED_VIEW_NOT_INCREMENTALIZABLE mit detaillierten Informationen zurück, die den Grund für die Inkrementierung nicht inkrementell beschreiben:

  • AGGREGATE_NOT_TOP_NODE: GROUP BY Mit komplexen Ausdrücken darüber wird es nicht unterstützt.
  • EXPRESSION_NOT_DETERMINSTIC: Eine nicht deterministische Funktion, z RAND. B. , wird in der Abfrage verwendet.
  • INPUT_NOT_IN_DELTA: Mindestens ein Quelldatensatz sind keine Delta-Tabellen.
  • OPERATOR_NOT_INCREMENTALIZABLE: Ein Operator, z. B. eine komplexe Verknüpfung, verhindert die Inkrementierung.
  • ROW_TRACKING_NOT_ENABLED: Quelltabellen, für die zeilennachverfolgung erforderlich ist, sind nicht für die Zeilennachverfolgung aktiviert.
  • SUBQUERY_EXPRESSION_NOT_INCREMENTALIZABLE: Mindestens eine Unterabfrage in Ihrer Abfrage kann nicht inkrementell werden.
  • UDF_NOT_DETERMINISTIC: Mindestens eine udFs, die im Ausdruck verwendet werden, sind nicht als deterministisch gekennzeichnet.
  • WINDOW_WITHOUT_PARTITION_BY: Fensterspezifikationen ohne PARTITION_BY inkrementelle Größe sind nicht inkrementell.

Informationen dazu, was eine Abfrage inkrementell machen kann, finden Sie unter "Inkrementelle Aktualisierung für materialisierte Ansichten".

Verwenden Sie die EXPLAIN CREATE MATERIALIZED VIEW Anweisung in Databricks SQL, um zu überprüfen, ob eine SQL-Abfrage inkrementell ist. Siehe 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;