Verarbeiten von Einfügungen, Updates und Löschungen
Gilt für: SQL Server SSIS Integration Runtime in Azure Data Factory
Im Datenfluss eines Integration Services-Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, werden mit dem zweiten Task Einfügungen, Updates und Löschungen voneinander getrennt. Dann können Sie entsprechende Befehle verwenden, um sie für das Ziel zu übernehmen.
Hinweis
Der erste Task beim Entwerfen des Datenflusses eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, ist die Konfiguration der Quellkomponente, die die Abfrage ausführt, bei der die Änderungsdaten abgerufen werden. Weitere Informationen zu dieser Komponente finden Sie unter Abrufen und Verstehen der Änderungsdaten. Eine Beschreibung des Gesamtprozesses zur Erstellung eines Pakets, das ein inkrementelles Laden von Änderungsdaten ausführt, finden Sie unter Change Data Capture (SSIS).
Zuordnen von benutzerfreundlichen Werten zur Trennung von Einfügungen, Updates und Löschungen
In der Beispielabfrage, bei der Änderungsdaten abgerufen werden, gibt die cdc.fn_cdc_get_net_changes_<capture_instance>-Funktion nur die Metadatenspalte mit der Bezeichnung __$operation zurück. Diese Metadatenspalte enthält einen Ordinalwert, der angibt, welcher Vorgang die Änderung verursacht hat.
Hinweis
Weitere Informationen zu der Abfrage, die die cdc.fn_cdc_get_net_changes_<capture_instance>-Funktion verwendet, finden Sie unter Erstellen der Funktion zum Abrufen der Änderungsdaten.
Das Abgleichen eines Ordinalwerts mit seinem entsprechenden Vorgang ist nicht so einfach wie die Verwendung eines mnemonischen Codes des Vorgangs. Zum Beispiel kann 'D' leicht einen Löschvorgang und 'I' einen Einfügevorgang darstellen. Die Beispielabfrage, die im Thema Erstellen der Funktion zum Abrufen der Änderungsdatenerstellt wurde, nimmt diese Konvertierung von einem Ordinalwert in einen benutzerfreundlichen Zeichenfolgenwert vor, der in einer neuen Spalte zurückgegeben wird. Das folgende Codesegment zeigt diese Konvertierung:
select
...
case __$operation
when 1 then 'D'
when 2 then 'I'
when 4 then 'U'
else null
end as CDC_OPERATION
Konfigurieren einer Transformation für bedingtes Teilen zur Weiterleitung von Einfügungen, Updates und Löschungen
Die Transformation für bedingtes Teilen ist ideal zur Weiterleitung von Zeilen mit Änderungsdaten an eine von drei Ausgaben. Die Transformation überprüft den Wert der CDC_OPERATION -Spalte in jeder Zeile und bestimmt, ob diese Änderung eine Einfügung, Löschung bzw. ein Update war.
Hinweis
Die Spalte CDC_OPERATION enthält einen benutzerfreundlichen vom numerischen Wert in der __$operation -Spalte abgeleiteten Zeichenfolgenwert.
So teilen Sie Einfügungen, Updates und Löschungen zur Verarbeitung durch Verwendung einer Transformation für bedingtes Teilen
Fügen Sie auf der Registerkarte Datenfluss eine Transformation für bedingtes Teilen hinzu.
Verbinden Sie die Ausgabe der OLE DB-Quelle mit der Transformation für bedingtes Teilen.
Geben Sie im Transformations-Editor für bedingtes Teilenim unteren Bereich des Editors die folgenden drei Zeilen ein, um die drei Ausgaben zu bestimmen
Geben Sie eine Zeile mit der Bedingung
CDC_OPERATION == "I"
ein, um eingefügte Zeilen an die Ausgabe für Einfügungen weiterzuleiten.Geben Sie eine Zeile mit der Bedingung
CDC_OPERATION == "U"
ein, um aktualisierte Zeilen an die Ausgabe für Updates weiterzuleiten.Geben Sie eine Zeile mit der Bedingung
CDC_OPERATION == "D"
ein, um gelöschte Zeilen an die Ausgabe für Löschungen weiterzuleiten.
Nächster Schritt
Nachdem Sie die Zeilen zur Verarbeitung geteilt haben, besteht der nächste Schritt darin, die Änderungen auf das Ziel anzuwenden.
Nächstes Thema: Anwenden der Änderungen auf das Ziel
Weitere Informationen
Transformation für bedingtes Teilen
Teilen eines Datasets mithilfe der Transformation für bedingtes Teilen