Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird die inkrementelle Datenaktualisierung in Dataflow Gen2 für die Data Factory von Microsoft Fabric behandelt. Wenn Sie Datenflüsse für Die Erfassung und Transformation von Daten verwenden, müssen Sie manchmal nur neue oder aktualisierte Daten aktualisieren – insbesondere, wenn Ihre Daten größer werden.
Die inkrementelle Aktualisierung unterstützt Sie dabei:
- Verringern der Aktualisierungszeiten
- Machen Sie Vorgänge zuverlässiger, indem Sie lange laufende Prozesse vermeiden
- Weniger Ressourcen verwenden
Prerequisites
Um die inkrementelle Aktualisierung in Dataflow Gen2 zu verwenden, benötigen Sie Folgendes:
- Eine Fabric-Kapazität
- Eine Datenquelle, die Faltung unterstützt (empfohlen) und eine Date/DateTime-Spalte zum Filtern von Daten enthält
- Ein Datenziel, das die inkrementelle Aktualisierung unterstützt (siehe Zielunterstützung)
- Überprüfen Sie die Einschränkungen , bevor Sie beginnen.
Zielunterstützung
Diese Datenziele unterstützen die inkrementelle Aktualisierung:
- Fabric Lakehouse
- Fabric Warehouse
- Azure SQL-Datenbank
Sie können auch andere Zielorte mit inkrementeller Aktualisierung verwenden. Erstellen Sie eine zweite Abfrage, die auf die mehrstufigen Daten verweist, um Ihr Ziel zu aktualisieren. Mit diesem Ansatz können Sie weiterhin die inkrementelle Aktualisierung verwenden, um die Daten zu reduzieren, die vom Quellsystem verarbeitet werden müssen. Sie müssen jedoch eine vollständige Aktualisierung von den mehrstufigen Daten bis zum endgültigen Ziel durchführen.
Darüber hinaus wird die Standardzielkonfiguration für die inkrementelle Aktualisierung nicht unterstützt. Sie müssen das Ziel explizit in Ihren Abfrageeinstellungen definieren.
Verwenden der inkrementellen Aktualisierung
Erstellen Sie einen neuen Dataflow Gen2, oder öffnen Sie eine vorhandene.
Erstellen Sie im Datenfluss-Editor eine neue Abfrage, die die Daten abruft, die Sie inkrementell aktualisieren möchten.
Überprüfen Sie die Datenvorschau, um sicherzustellen, dass Ihre Abfrage Daten mit einer Spalte "DateTime", "Date" oder "DateTimeZone" zum Filtern zurückgibt.
Stellen Sie sicher, dass Ihre Abfrage vollständig gefaltet wird, was bedeutet, dass die Abfrage an das Quellsystem gedrückt wird. Wenn sie nicht vollständig gefaltet wird, ändern Sie die Abfrage so, dass sie funktioniert. Sie können überprüfen, ob Ihre Abfrage vollständig gefaltet wird, indem Sie sich die Abfrageschritte im Abfrage-Editor ansehen.
Klicken Sie mit der rechten Maustaste auf die Abfrage und wählen Sie inkrementelle Aktualisierung aus.
Konfigurieren Sie die erforderlichen Einstellungen für die inkrementelle Aktualisierung.
- Wählen Sie eine DateTime-Spalte aus, nach der gefiltert werden soll.
- Extrahieren Sie Daten aus der Vergangenheit.
- Bucketgröße.
- Extrahieren Sie nur neue Daten, wenn sich der Maximalwert in dieser Spalte ändert.
Konfigurieren Sie bei Bedarf die erweiterten Einstellungen.
- Inkrementelle Aktualisierungsabfragen sind erforderlich um Folding vollständig zu unterstützen.
Klicken Sie auf OK, um die Einstellungen zu speichern.
Wenn Sie möchten, richten Sie ein Datenziel für die Abfrage ein. Führen Sie dies vor der ersten inkrementellen Aktualisierung durch, oder Ihr Ziel enthält nur die inkrementell geänderten Daten seit der letzten Aktualisierung.
Veröffentlichen Sie den Dataflow Gen2.
Nachdem Sie die inkrementelle Aktualisierung konfiguriert haben, aktualisiert der Datenfluss die Daten automatisch und inkrementell gemäß Ihren Einstellungen. Der Datenfluss ruft nur Daten ab, die seit der letzten Aktualisierung geändert wurden, sodass er schneller ausgeführt wird und weniger Ressourcen verwendet.
Funktionsweise der inkrementellen Aktualisierung im Hintergrund
Bei der inkrementellen Aktualisierung werden Ihre Daten basierend auf der DateTime-Spalte in Buckets aufgeteilt. Jeder Bucket enthält Daten, die seit der letzten Aktualisierung geändert wurden. Der Datenfluss weiß, was geändert wurde, indem der Maximalwert in der von Ihnen angegebenen Spalte überprüft wird.
Wenn der Maximalwert für diesen Bucket geändert wurde, erhält der Datenfluss den gesamten Bucket und ersetzt die Daten im Zielort. Wenn sich der Maximalwert nicht geändert hat, erhält der Datenfluss keine Daten. Hier erfahren Sie, wie es schritt für Schritt funktioniert.
Erster Schritt: Auswerten der Änderungen
Wenn der Datenfluss ausgeführt wird, überprüft er zuerst, was in Ihrer Datenquelle geändert wurde. Er untersucht den Maximalwert in Ihrer DateTime-Spalte und vergleicht ihn mit dem Maximalwert aus der letzten Aktualisierung.
Wenn sich der Maximalwert geändert hat (oder wenn dies ihre erste Aktualisierung ist), markiert der Datenfluss diesen Bucket als "geändert" und verarbeitet ihn. Wenn der Maximalwert identisch ist, überspringt der Datenfluss diesen Bucket vollständig.
Zweiter Schritt: Abrufen der Daten
Jetzt ruft der Datenfluss die Daten für jeden geänderten Bucket ab. Es verarbeitet mehrere Buckets gleichzeitig, um die Effizienz zu steigern.
Der Datenfluss lädt diese Daten in einen Stagingbereich. Sie ruft nur Daten ab, die innerhalb des Zeitraums des Buckets liegen – das bedeutet, dass nur die Daten abgerufen werden, die sich seit Ihrer letzten Aktualisierung geändert haben.
Letzter Schritt: Ersetzen der Daten im Ziel
Der Datenfluss aktualisiert Ihr Ziel mit den neuen Daten. Es verwendet einen "Replace"-Ansatz: Zuerst werden die alten Daten für diesen bestimmten Bucket gelöscht, und dann werden die neuen Daten eingefügt.
Dieser Vorgang wirkt sich nur auf Daten innerhalb des Bucket-Zeitraums aus. Alle Daten außerhalb dieses Bereichs (z. B. ältere historische Daten) bleiben unverändert.
Inkrementelle Aktualisierungseinstellungen erläutert
Zum Konfigurieren der inkrementellen Aktualisierung müssen Sie diese Einstellungen angeben.
Allgemeine Einstellungen
Diese Einstellungen sind erforderlich und geben die grundlegende Konfiguration für die inkrementelle Aktualisierung an.
Wählen Sie eine DateTime-Spalte aus, nach der gefiltert werden soll
Diese erforderliche Einstellung gibt die Spalte an, die Datenflüsse zum Filtern der Daten verwenden. Diese Spalte sollte eine DateTime-, Date- oder DateTimeZone-Spalte sein. Der Datenfluss verwendet diese Spalte zum Filtern der Daten und ruft nur Daten ab, die seit der letzten Aktualisierung geändert wurden.
Extrahieren von Daten aus der Vergangenheit
Diese erforderliche Einstellung gibt an, wie weit zurück der Datenfluss Daten extrahieren soll. Diese Einstellung ruft die anfängliche Datenladung ab. Der Datenfluss ruft alle Daten aus dem Quellsystem innerhalb des angegebenen Zeitraums ab. Dabei sind folgende Werte möglich:
- x Tage
- x Wochen
- x Monate
- x Quartale
- x Jahre
Wenn Sie beispielsweise 1 Monat angeben, ruft der Datenfluss alle neuen Daten aus dem Quellsystem innerhalb des letzten Monats ab.
Eimergröße
Diese erforderliche Einstellung gibt die Größe der Buckets an, die der Datenfluss zum Filtern von Daten verwendet. Der Datenfluss teilt Daten basierend auf der DateTime-Spalte in Buckets auf. Jeder Bucket enthält Daten, die seit der letzten Aktualisierung geändert wurden. Die Bucketgröße bestimmt, wie viele Daten in jeder Iteration verarbeitet werden:
- Eine kleinere Bucketgröße bedeutet, dass der Datenfluss weniger Daten in jeder Iteration verarbeitet, erfordert jedoch mehr Iterationen, um alle Daten zu verarbeiten.
- Eine größere Bucketgröße bedeutet, dass der Datenfluss in jeder Iteration mehr Daten verarbeitet, erfordert jedoch weniger Iterationen, um alle Daten zu verarbeiten.
Nur neue Daten extrahieren, wenn sich der Maximalwert in dieser Spalte ändert
Diese erforderliche Einstellung gibt die Spalte an, die der Datenfluss verwendet, um festzustellen, ob daten geändert wurden. Der Datenfluss vergleicht den Maximalwert in dieser Spalte mit dem Maximalwert aus der vorherigen Aktualisierung. Wenn der Maximalwert geändert wurde, ruft der Datenfluss die Seit der letzten Aktualisierung geänderten Daten ab. Wenn sich der Maximalwert nicht geändert hat, erhält der Datenfluss keine Daten.
Daten nur für abgeschlossene Zeiträume extrahieren
Diese optionale Einstellung gibt an, ob der Datenfluss nur Daten für abgeschlossene Zeiträume extrahieren soll. Wenn Sie diese Einstellung aktivieren, extrahiert der Datenfluss nur Daten für Zeiträume, die abgeschlossen wurden. Der Datenfluss extrahiert nur Daten für Zeiträume, die abgeschlossen sind und keine zukünftigen Daten enthalten. Wenn Sie diese Einstellung deaktivieren, extrahiert der Datenfluss Daten für alle Zeiträume, einschließlich Perioden, die nicht abgeschlossen sind und zukünftige Daten enthalten.
Wenn Sie beispielsweise über eine DateTime-Spalte verfügen, die das Datum der Transaktion enthält und Sie nur die vollständigen Monate aktualisieren möchten, können Sie diese Einstellung mit der Bucketgröße von monthaktivieren. Der Datenfluss extrahiert nur Daten für vollständige Monate und extrahiert keine Daten für unvollständige Monate.
Erweiterte Einstellungen
Einige Einstellungen gelten als erweitert und sind für die meisten Szenarien nicht erforderlich.
Inkrementelle Aktualisierungsabfragen erfordern um Folding vollständig zu unterstützen
Diese Einstellung steuert, ob die inkrementelle Aktualisierungsabfrage "vollständig gefaltet" werden muss. Wenn eine Abfrage vollständig gefaltet wird, wird sie vollständig zum Quellsystem zur Verarbeitung gedrückt.
Wenn Sie diese Einstellung aktivieren, muss Ihre Abfrage vollständig gefaltet werden. Wenn Sie sie deaktivieren, kann die Abfrage teilweise vom Datenfluss anstelle des Quellsystems verarbeitet werden.
Es wird dringend empfohlen, diese Einstellung aktiviert zu halten. Es stellt sicher, dass nach dem Speichern des Datenflusses überprüft wird, ob die Abfragefaltung an die Quelle möglich ist. Wenn diese Überprüfung fehlschlägt, kann ihr Datenfluss unter einer reduzierten Leistung leiden und möglicherweise unnötige, nicht gefilterte Daten abrufen.
In einigen Fällen wird während der Erstellung möglicherweise eine grüne Faltanzeige angezeigt. Wenn wir jedoch die endgültige Datenflussdefinition validieren, ist das Zusammenführen möglicherweise nicht mehr möglich; wenn beispielsweise ein Schritt wie Table.SelectRows das Zusammenführen unterbricht. Dies kann zu einem Überprüfungsfehler führen.
Limitations
Lakehouse-Unterstützung bietet zusätzliche Vorbehalte
Beachten Sie beim Arbeiten mit Lakehouse als Datenziel die folgenden Einschränkungen:
Die maximale Anzahl gleichzeitiger Auswertungen beträgt 10. Dies bedeutet, dass der Datenfluss nur 10 Buckets gleichzeitig auswerten kann. Wenn Sie über mehr als 10 Buckets verfügen, müssen Sie die Anzahl der Buckets einschränken oder die Anzahl gleichzeitiger Auswertungen einschränken.
Wenn Sie in ein Seehaus schreiben, verfolgt der Dataflow, welche Dateien er schreibt. Dies entspricht den Standardpraktiken eines Lakehouses.
Aber hier ist der Haken: Wenn andere Tools (z. B. Spark) oder Prozesse auch in dieselbe Tabelle schreiben, können sie die inkrementelle Aktualisierung beeinträchtigen. Es wird empfohlen, andere Autoren beim Verwenden der inkrementellen Aktualisierung zu vermeiden.
Wenn Sie andere Autoren verwenden müssen, stellen Sie sicher, dass sie nicht mit dem inkrementellen Aktualisierungsprozess in Konflikt geraten. Außerdem werden Tabellenwartungen wie OPTIMIZE- oder REORG TABLE-Vorgänge für Tabellen, die die inkrementelle Aktualisierung verwenden, nicht unterstützt.
Wenn Sie ein Datengateway verwenden, um eine Verbindung mit Ihren Datenquellen herzustellen, stellen Sie sicher, dass das Gateway mindestens auf das Update vom Mai 2025 (3000.270) oder höher aktualisiert wird. Dies ist entscheidend für die Aufrechterhaltung der Kompatibilität und sicherstellen, dass die inkrementelle Aktualisierung ordnungsgemäß mit Lakehouse-Zielen funktioniert.
Das Wechseln von nicht inkrementellen zu inkrementellen Aktualisierungen mit vorhandenen überlappenden Daten im Ziel wird nicht unterstützt. Wenn das Lakehouse-Ziel bereits Daten für Buckets enthält, die sich mit den in den Einstellungen definierten inkrementellen Buckets überlappen, kann das System nicht sicher in eine inkrementelle Aktualisierung konvertieren, ohne die gesamte Delta-Tabelle neu zu schreiben. Es wird empfohlen, die Anfangsaufnahme so zu filtern, dass nur Daten vor dem frühesten inkrementellen Bucket eingeschlossen werden, um Überlappungen zu vermeiden und ein korrektes Aktualisierungsverhalten zu gewährleisten.
Das Datenziel muss auf ein festes Schema festgelegt werden
Das Datenziel muss auf ein festgelegtes Schema eingestellt sein, was bedeutet, dass das Schema der Tabelle im Datenziel festgelegt ist und sich nicht ändern kann. Wenn das Schema der Tabelle im Datenziel auf ein dynamisches Schema festgelegt ist, müssen Sie es in ein festes Schema ändern, bevor Sie die inkrementelle Aktualisierung konfigurieren.
Die einzige unterstützte Aktualisierungsmethode im Datenziel ist replace
Die einzige unterstützte Updatemethode im Datenziel ist replace, was bedeutet, dass der Datenfluss die Daten für jeden Bucket im Datenziel durch die neuen Daten ersetzt. Daten außerhalb des Bucketbereichs sind jedoch nicht betroffen. Wenn Sie Daten im Datenziel haben, das älter als der erste Bucket ist, wirkt sich die inkrementelle Aktualisierung nicht auf diese Daten aus.
Die maximale Anzahl von Buckets beträgt 50 für eine einzelne Abfrage und 150 für den gesamten Datenfluss
Jede Abfrage kann bis zu 50 Buckets verarbeiten. Wenn Sie mehr als 50 Buckets haben, müssen Sie die Bucketgröße vergrößern oder den Zeitraum verringern, um die Anzahl der Buckets zu reduzieren.
Für den gesamten Datenfluss beträgt der Grenzwert 150 Buckets insgesamt. Wenn Sie diesen Grenzwert erreicht haben, können Sie entweder die Anzahl der Abfragen mithilfe der inkrementellen Aktualisierung verringern oder die Bucketgröße für Ihre Abfragen erhöhen.
Unterschiede zwischen der inkrementellen Aktualisierung in Dataflow Gen1 und Dataflow Gen2
Es gibt einige Unterschiede bei der inkrementellen Aktualisierung zwischen Dataflow Gen1 und Dataflow Gen2. Dies sind die wichtigsten Unterschiede:
First-Class-Feature: Inkrementelle Aktualisierung ist jetzt eine erstklassige Funktion in Dataflow Gen2. In Dataflow Gen1 haben Sie die inkrementelle Aktualisierung konfiguriert, nachdem Sie den Datenfluss veröffentlicht haben. In Dataflow Gen2 können Sie ihn direkt im Dataflow-Editor konfigurieren. Dies erleichtert das Konfigurieren und Verringern des Fehlerrisikos.
Kein Verlaufsdatenbereich: In Dataflow Gen1 haben Sie den Verlaufsdatenbereich angegeben, wenn Sie die inkrementelle Aktualisierung konfiguriert haben. In Dataflow Gen2 geben Sie diesen Bereich nicht an. Der Datenfluss entfernt keine Daten aus dem Ziel, das sich außerhalb des Bucketbereichs befindet. Wenn Sie Daten im Ziel haben, die älter als der erste Bucket sind, wirkt sich die inkrementelle Aktualisierung nicht darauf aus.
Automatische Parameter: In Dataflow Gen1 haben Sie die Parameter für die inkrementelle Aktualisierung angegeben, wenn Sie sie konfiguriert haben. In Dataflow Gen2 geben Sie diese Parameter nicht an. Der Datenfluss fügt die Filter und Parameter automatisch als letzten Schritt in der Abfrage hinzu.
FAQ
Ich habe eine Warnung erhalten, dass ich dieselbe Spalte zum Erkennen von Änderungen und Filtern verwendet habe. Was bedeutet das?
Wenn Sie diese Warnung erhalten, bedeutet dies, dass die Spalte, die Sie zum Erkennen von Änderungen angegeben haben, auch zum Filtern der Daten verwendet wird. Dies wird nicht empfohlen, da dies zu unerwarteten Ergebnissen führen kann.
Verwenden Sie stattdessen eine andere Spalte, um Änderungen zu erkennen und die Daten zu filtern. Wenn Daten zwischen Buckets verschoben werden, erkennt der Datenfluss die Änderungen möglicherweise nicht richtig und erstellt möglicherweise duplizierte Daten in Ihrem Ziel.
Sie können diese Warnung beheben, indem Sie eine andere Spalte verwenden, um Änderungen zu erkennen und die Daten zu filtern. Sie können die Warnung auch ignorieren, wenn Sie sicher sind, dass sich die Daten nicht zwischen Aktualisierungen für die von Ihnen angegebene Spalte ändern.
Ich möchte eine inkrementelle Aktualisierung mit einem Datenziel verwenden, das nicht unterstützt wird. Was kann ich tun?
Wenn Sie die inkrementelle Aktualisierung mit einem Datenziel verwenden möchten, das sie nicht unterstützt, gehen Sie wie folgt vor:
Aktivieren Sie die inkrementelle Aktualisierung ihrer Abfrage, und erstellen Sie eine zweite Abfrage, die auf die mehrstufigen Daten verweist. Verwenden Sie dann diese zweite Abfrage, um Ihr endgültiges Ziel zu aktualisieren. Durch diesen Ansatz wird die Datenverarbeitung aus Ihrem Quellsystem immer noch reduziert. Sie müssen jedoch eine vollständige Aktualisierung der mehrstufigen Daten bis zum endgültigen Ziel durchführen.
Stellen Sie sicher, dass Sie die Größe des Fensters und des Buckets richtig festlegen. Wir garantieren nicht, dass mehrstufige Daten außerhalb des Bucketbereichs verfügbar bleiben.
Eine weitere Option besteht darin, das inkrementelle Amassmuster zu verwenden. Schauen Sie sich unseren Leitfaden an: Inkrementelle Anhäufung von Daten mit Dataflow Gen2.
Wie kann ich feststellen, ob meine Abfrage die inkrementelle Aktualisierung aktiviert hat?
Sie können sehen, ob ihre Abfrage die inkrementelle Aktualisierung aktiviert hat, indem Sie das Symbol neben der Abfrage im Datenflusseditor überprüfen. Wenn das Symbol ein blaues Dreieck enthält, ist die inkrementelle Aktualisierung aktiviert. Wenn das Symbol kein blaues Dreieck enthält, ist die inkrementelle Aktualisierung nicht aktiviert.
Meine Quelle erhält zu viele Anforderungen, wenn ich die inkrementelle Aktualisierung verwende. Was kann ich tun?
Sie können steuern, wie viele Anforderungen Ihr Datenfluss an das Quellsystem sendet. Gehen Sie dabei folgendermaßen vor:
Wechseln Sie zu den globalen Einstellungen ihres Dataflows, und suchen Sie nach der Einstellung für parallele Abfrageauswertungen. Legen Sie dies auf eine niedrigere Zahl fest, um die an Ihr Quellsystem gesendeten Anforderungen zu reduzieren. Dies trägt dazu bei, die Last dieser Quelle zu verringern und deren Leistung zu verbessern.
Um diese Einstellung zu finden: Wechseln Sie zur Registerkarte ">" für globale Einstellungen>, und legen Sie die maximale Anzahl paralleler Abfrageauswertungen fest.
Es wird empfohlen, diesen Grenzwert nur zu verwenden, wenn Ihr Quellsystem die Standardanzahl gleichzeitiger Anforderungen nicht verarbeiten kann.
Ich möchte die inkrementelle Aktualisierung verwenden, aber ich stelle fest, dass der Datenfluss nach der Aktivierung länger zur Aktualisierung braucht. Was kann ich tun?
Die inkrementelle Aktualisierung sollte ihren Datenfluss beschleunigen, indem weniger Daten verarbeitet werden. Aber manchmal passiert das Gegenteil. Dies bedeutet in der Regel, dass der Aufwand für die Verwaltung von Buckets und die Überprüfung auf Änderungen mehr Zeit benötigt, als Sie sparen, indem Sie weniger Daten verarbeiten.
Hier erfahren Sie, was Sie ausprobieren können:
Passen Sie Ihre Einstellungen an: Erhöhen Sie Ihre Bucket-Größe, um die Anzahl der Buckets zu verringern. Weniger Eimer bedeuten weniger Mehraufwand bei der Verwaltung.
Probieren Sie eine vollständige Aktualisierung aus: Wenn das Anpassen von Einstellungen nicht hilft, erwägen Sie, die inkrementelle Aktualisierung zu deaktivieren. Eine vollständige Aktualisierung ist für Ihr spezifisches Szenario möglicherweise effizienter.