Freigeben über


Optimale Aktualisierung für materialisierte Seeblicke in einem Seehaus

Jedes Mal, wenn eine geplante Aktualisierung für Ihre materialisierten Seeansichten ausgeführt wird, bestimmt Fabric basierend auf den Änderungen in den Quelldaten die beste Strategie– keine Aktualisierung, inkrementell oder vollständig. Dieses Verhalten wird als optimale Aktualisierung bezeichnet, und es hilft Ihnen, Ihre materialisierten Seeansichten auf dem neuesten Stand zu halten, während Die Berechnungskosten und Die Aktualisierungszeit minimiert werden.

In diesem Artikel wird erläutert, wie eine optimale Aktualisierung funktioniert, was jede Strategie tut und wie Sie bei Bedarf in den vollständigen Aktualisierungsmodus wechseln.

Hinweis

Die optimale Aktualisierung wird in den folgenden Szenarien nicht unterstützt:

  • PySpark-Definitionen: Materialisierte Seeansichten müssen mit Spark SQL definiert werden. PySpark wird derzeit nicht unterstützt.
  • Nicht-Delta-Quelltabellen: Materialisierte Seeansichten, die Nicht-Delta-Tabellen als Quelle verwenden, führen immer eine vollständige Aktualisierung durch. Inkrementelle und keine Aktualisierungsstrategien erfordern Delta-Tabellenquellen.

Vorteile einer optimalen Aktualisierung

Durch die Analyse von Delta-Commits in Quelltabellen kann eine optimale Aktualisierung intelligente Entscheidungen darüber treffen, wie Ihre Daten verarbeitet werden. Wenn möglich, kann dies zu folgendem Ergebnis führen:

  • Niedrigere Kosten: Weniger Rechen- und Speicheraufwand werden verwendet, wenn Fabric erkennt, dass sich die Quelldaten nicht geändert haben, und die Aktualisierung wird vollständig übersprungen. Es gelten keine zusätzlichen Gebühren für eine optimale Aktualisierung– Sie werden basierend auf der Berechnungsnutzung während aktualisierungsvorgängen in Rechnung gestellt.
  • Verbesserte Effizienz: Schnellere Aktualisierungszyklen, wenn nur geänderte Daten verarbeitet werden müssen, sodass Sie neuere Erkenntnisse liefern können.
  • Zeitersparnis: Reduzierte Aktualisierungsdauer beim Anwenden der inkrementellen Verarbeitung, anstatt das vollständige Dataset neu zu komplizieren.

Optimale Aktualisierungsstrategien

In der folgenden Tabelle werden die Aktualisierungsstrategien beschrieben, die von einer optimalen Aktualisierungsmethode ausgewählt werden können:

Aktualisierungsrichtlinie Description
Keine Aktualisierung Wenn in den Quelltabellen keine neuen Delta-Commits erkannt werden, überspringt Fabric die Aktualisierung vollständig, um unnötige Berechnungen zu vermeiden.
Schrittweise Aktualisierung Verarbeitet nur die geänderten Daten, wenn neue Delta-Commits in den Quelltabellen erkannt werden.
Vollständige Aktualisierung Komppiliert die gesamte materialisierte Seeansicht aus dem vollständigen Quelldatensatz. Diese Strategie wird verwendet, wenn nicht unterstützte Ausdrücke erkannt werden, wenn Änderungen nicht inkrementell verarbeitet werden können oder wenn das Quelldatenset klein genug ist, dass eine vollständige Neukompilierung schneller ist als die inkrementelle Verarbeitung.

Von Bedeutung

Für die inkrementelle Aktualisierung ist die Delta-Änderungsdatenfeed-Eigenschaft (delta.enableChangeDataFeed=trueCDF) für alle Quelltabellen erforderlich, auf die in der materialisierten Seeansichtsdefinition verwiesen wird. Ohne AKTIVIERTes CDF kann eine optimale Aktualisierung nur zwischen keiner Aktualisierung und vollständiger Aktualisierung wählen. Weitere Informationen finden Sie unter "Inkrementelle Aktualisierung aktivieren".

Optimale Aktualisierung einrichten

Der optimale Aktualisierungsumschalter bietet Ihnen Strategien zur Vermeidung der Aktualisierung sowie zur vollständigen Aktualisierung, ohne dass zusätzliche Konfiguration erforderlich ist. Um die inkrementelle Aktualisierungsstrategie zu entsperren, müssen Sie auch den Änderungsdatenfeed in Ihren Quelltabellen aktivieren.

Aktivieren des optimalen Aktualisierungsmodus

Standardmäßig ist der optimale Aktualisierungsmodus für eine materialisierte Seeansichtslinie aktiviert. Wenn sie nicht aktiviert ist, führen Sie die folgenden Schritte aus, um sie zu aktivieren:

  1. Gehen Sie zu Ihrem Seehaus und wählen Sie den Materialisierten Seeblick aus.

  2. Wählen Sie "Verwalten" und dann den Umschalter " Optimale Aktualisierung" aus, um ihn zu aktivieren.

    Screenshot, der die Umschaltfläche zeigt, um den optimalen Aktualisierungsmodus zu aktivieren.

Inkrementelle Aktualisierung aktivieren

Um die inkrementelle Aktualisierung zu verwenden, müssen Sie die Eigenschaft "Delta change data feed" (CDF) für alle Quelltabellen oder materialisierten Seeansichten aktivieren, auf die in der materialisierten Seeansichtsdefinition verwiesen wird. Mit CDF kann Fabric nur die Zeilen lesen, die seit der letzten Aktualisierung geändert wurden, anstatt das vollständige Dataset neu zu verarbeiten.

Ohne AKTIVIERTes CDF kann eine optimale Aktualisierung nur zwischen keiner Aktualisierung und vollständiger Aktualisierung wählen.

Die inkrementelle Aktualisierung wird für nur Anfügedaten unterstützt. Wenn die Quelldaten Löschungen oder Aktualisierungen enthalten, führt Fabric eine vollständige Aktualisierung durch.

Hinweis

Das Aktivieren von CDF in den Quelltabellen hat keine messbaren Speicher- oder Leistungsauswirkungen für Anfüge-Workloads, also das Szenario, das die inkrementelle Aktualisierung unterstützt. CDF ist eine standardmäßige Delta Lake-Tabelleneigenschaft, von der auch andere Fabric-Features profitieren können. Weitere Informationen zur Funktionsweise des CDF finden Sie unter Verwenden des Delta Lake-Änderungsdatenfeeds.

Sie können CDF bei der Erstellung aktivieren, indem Sie TBLPROPERTIES in der CREATE Anweisung einschließen.

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

Verwenden Sie ALTER TABLE für vorhandene Quelltabellen, um CDF zu aktivieren:

ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

So aktivieren Sie z. B. CDF in beiden Quelltabellen aus dem Leitfaden für die ersten Schritte:

ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

SQL-Konstrukte, die von der inkrementellen Aktualisierung unterstützt werden

Die inkrementelle Aktualisierung funktioniert, wenn Ihre materialisierte Lake-View-Definition nur die hier beschriebenen SQL-Konstrukte verwendet. Wenn Ihre Abfrage Konstrukte enthält, die nicht in dieser Tabelle enthalten sind—wie LEFT JOIN oder nichtdeterministische Funktionen—aktualisiert Fabric weiterhin Ihre Daten, greift aber stattdessen auf eine vollständige Aktualisierung zurück.

SQL-Konstrukt Bemerkung
SELECT Ausdruck Unterstützt Ausdrücke mit deterministischen integrierten Funktionen. Die folgenden Konstrukte führen zu einer vollständigen Aktualisierung: nicht unterstützte Aggregatfunktionen (SUM(), , COUNT(), AVG()MIN(), MAX(), STDDEV()usw.), GROUP BY, DISTINCT(ROW_NUMBER(), , RANK(), LAG()LEAD()usw.) und nicht deterministische Funktionen (rand(), uuid(), current_timestamp(), current_date(), usw.).
FROM
WHERE Nur deterministische integrierte Funktionen werden unterstützt.
INNERE VERKNÜPFUNG
UNION ALL
Einschränkung der Datenqualität Nur deterministische integrierte Funktionen werden in Einschränkungen unterstützt.
Unterabfrage Unterabfragen in Ausdrücken (SELECT, WHERE) führen zur vollständigen Aktualisierung.
WITH Allgemeine Tabellenausdrücke werden unterstützt.

Hinweis

Die Verwendung nicht unterstützter Konstrukte verhindert nicht, dass Sie einen materialisierten Seeblick erstellen. Dies bedeutet nur, dass Fabric eine vollständige Aktualisierung anstelle einer inkrementellen Aktualisierung verwendet.

Vollständige Aktualisierung

Optimale Aktualisierung fällt bei Bedarf automatisch auf die vollständige Aktualisierung zurück, sodass Sie sie normalerweise nicht erzwingen müssen. Es gibt jedoch Fälle, in denen Sie eine vollständige Aktualisierung manuell auslösen möchten, z. B. um unerwartete Ergebnisse zu beheben oder Daten nach einer Korrektur erneut zu verarbeiten.

Ausführen einer einmaligen vollständigen Aktualisierung mit SQL

Führen Sie den folgenden Befehl aus, um eine vollständige Aktualisierung einer bestimmten materialisierten Seeansicht zu erzwingen:

REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL

Hinweis

Wenn der Arbeitsbereichsname Leerzeichen enthält, schließen Sie ihn in Backticks ein: `My Workspace`.lakehouse.schema.view_name

Optimale Aktualisierung deaktivieren

Wenn jede geplante Ausführung eine vollständige Aktualisierung durchführen soll, können Sie den optimalen Aktualisierungsschalter deaktivieren. Dadurch werden sowohl die Nichtaktualisierungs- als auch die inkrementellen Strategien deaktiviert– jede Ausführung komppiliert das vollständige Dataset, auch wenn keine Quelldaten geändert wurden.

  1. Gehen Sie zu Ihrem Seehaus und wählen Sie den Materialisierten Seeblick aus.

  2. Klicken Sie auf "Verwalten" , und deaktivieren Sie den Umschalter " Optimale Aktualisierung ".

    Screenshot, der die Umschaltfläche zeigt, um in den vollständigen Aktualisierungsmodus zu wechseln.