SAP Data Services erläutern
Zugriff auf Daten
Entwickeln von Jobs und Datenflüssen
Fehlerbehebung bei Batch-Jobs
Verwenden von Funktionen, Skripten und Variablen
Abfragen von Daten mit Plattformtransformationen
Teilen und Kombinieren von Daten mit Plattformtransformationen
Beheben von Fehlern und Wiederherstellen von Fehlern
Zum Verbuchen von Daten
Entwickeln erweiterter ETL-Szenarien mit SAP-Data-Services -Integrator-Transformationen
Optimierung der Performance

Zielbasierte Datenänderungserfassung (CDC) verwenden

Objective

After completing this lesson, you will be able to zielbasierte CDC verwenden

Zielbasierte Datenänderungserfassung (CDC)

Die quellbasierte CDC wertet die Quelltabellen aus, um zu ermitteln, was sich geändert hat, und extrahiert nur geänderte Zeilen, die in die Zieltabellen geladen werden sollen. Die zielbasierte CDC hingegen extrahiert alle Daten aus der Quelle, vergleicht die Quell- und Zielzeilen und lädt dann nur die geänderten Zeilen mit neuen Ersatzschlüsseln in das Ziel.

Verwenden Sie zielbasierte CDC, wenn quellenbasierte Informationen begrenzt sind.

Um die zielbasierte Erfassung geänderter Daten zu implementieren, müssen Sie die Table_Comparison-Transformation verwenden. Andere Transformationen können Ihnen dabei helfen, Ihren Datenfluss abzuschließen.

Zielbasierte CDC-Transformationen

Drei Data-Services -Transformationen unterstützen die zielbasierte CDC:

TransformationBeschreibung
TabellenvergleichVergleicht zwei Datasets und erzeugt deren Differenz als Dataset mit als asINSERT oder UPDATE gekennzeichneten Zeilen.
Beibehaltung der HistorieKonvertiert Zeilen, die als UPDATE gekennzeichnet sind, in UPDATE plus INSERT, sodass die ursprünglichen Werte im Ziel beibehalten werden. Geben Sie die Spalte an, in der nach aktualisierten Daten gesucht werden soll.
Generieren des SchlüsselsGeneriert neue Schlüssel für Quelldaten, beginnend mit einem Wert, der auf vorhandenen Schlüsseln basiert, die Sie in der Tabelle angegeben haben.

Die Schritte der zielbasierten Änderungsdatenerfassung sind in der folgenden Abbildung dargestellt:

Zielbasiertes CDC mit Geschichtssicherung

Beibehalten des Verlaufs durch Anlegen eines Datenflusses, der Folgendes enthält:

  • Eine Quelltabelle, die die auszuwertenden Zeilen enthält.
  • Eine Query-Transformation, die Spalten aus der Quelle zuordnet.
  • Eine Table Comparison -Transformation, die die Daten in der Quelltabelle mit den Daten in der Zieltabelle vergleicht, um zu ermitteln, was sich geändert hat.
  • Eine History Preserving-Transformation, die bestimmte UPDATE-Zeilen basierend auf den Spalten, in denen sich Werte geändert haben, in INSERT-Zeilen konvertiert. Diese Transformation erzeugt eine zweite Zeile im Ziel, anstatt die erste Zeile zu überschreiben.
  • Eine Schlüsselgenerierungstransformation, die neue Schlüssel für die aktualisierten Zeilen generiert, die nun als INSERT gekennzeichnet sind.
  • Eine Zieltabelle, die die Zeilen empfängt. Die Zieltabelle kann keine Vorlagentabelle sein.

Die Tabellenvergleichstransformation

Sie können Änderungen ermitteln und weiterleiten, die seit der letzten Aktualisierung eines Ziels mit der Tabellenvergleichstransformation vorgenommen wurden. Diese Transformation vergleicht zwei Datasets und erzeugt die Differenz zwischen ihnen als Dataset mit Zeilen, die als INSERT oder UPDATE gekennzeichnet sind.

Eingabe, Vergleich und Ausgabe

Die Transformation vergleicht die Eingabetabelle und die Vergleichstabelle.  Er wählt Zeilen aus der Vergleichstabelle basierend auf den Primärschlüsselwerten aus dem Eingabe-Dataset aus. Anschließend vergleicht es Spalten, die in den Schemas für beide Eingaben vorhanden sind.

Das Eingabe-Dataset muss als NORMAL gekennzeichnet sein.

Das Ausgabe-Dataset enthält nur die Zeilen, die den Unterschied zwischen den Tabellen ausmachen. Das Schema des Ausgabe-Datasets entspricht dem Schema der Vergleichstabelle.

Wenn eine Spalte einen Datumsdatentyp in einer Tabelle und einen Datetime-Datentyp in der anderen Tabelle hat, vergleicht die Transformation nur den Datumsabschnitt der Daten. Bei den Spalten kann es sich auch um die Datentypen time und datetime handeln. In diesem Fall vergleicht Data Services nur den Zeitabschnitt der Daten.

Table_Comparison-Transformationsergebnisse

Es gibt drei mögliche Ergebnisse der -Transformation für jede Zeile im Eingabe-Dataset:

  • Die Zeile wird ignoriert.

    Der Primärschlüsselwert aus dem Eingabe-Dataset stimmt mit einem Wert in der Vergleichstabelle überein, aber der Vergleich zeigt keine Änderungen an den Zeilenwerten an.

  • Eine INSERT-Zeile wird generiert.

    Der Primärschlüsselwert aus dem Eingabe-Dataset stimmt mit keinem Wert in der Vergleichstabelle überein. Die Transformation erzeugt eine INSERT-Zeile mit den Werten aus der Eingabe-Dataset-Zeile.

    Wenn die Vergleichstabelle Spalten enthält, die im Eingabe-Dataset nicht vorhanden sind, fügt die Transformation diese Spalten dem Ausgabeschema hinzu und füllt sie mit NULL-Werten.

  • Eine UPDATE-Zeile wird generiert.

    Der Primärschlüsselwert aus dem Eingabe-Dataset stimmt mit einem Wert in der Vergleichstabelle überein. Die Werte in den Nicht-Schlüssel-Vergleichsspalten unterscheiden sich in den entsprechenden Zeilen vom Eingabe-Dataset und der Vergleichstabelle.

    Die Transformation erzeugt eine UPDATE-Zeile mit den Werten aus der Eingabe-Dataset-Zeile.

    Wenn die Vergleichstabelle Spalten enthält, die im Eingabe-Dataset nicht vorhanden sind, fügt die Transformation diese Spalten dem Ausgabeschema hinzu und füllt sie mit Werten aus der Vergleichstabelle.

  • Standardmäßig werden keine DELETE-Vorgänge erzeugt, aber Sie können die Option Gelöschte Zeile(n) aus Vergleichstabelle ermitteln auswählen, um sie aus der Vergleichstabelle zu extrahieren.

Optionen der Table_Comparison-Transformation

Optionen der Table_Comparison-Transformation

OptionBeschreibung
TabellennameGibt den vollqualifizierten Namen der Quelltabelle an. Tabellenname wird als datastore.owner.table dargestellt. Datastore ist der Name des Datastores, den Data Services für den Zugriff auf die Schlüsselquelltabelle verwendet. Der Eigentümer hängt vom Datenbanktyp ab, der der Tabelle zugeordnet ist.
Generierte SchlüsselspalteGibt eine Spalte in der Vergleichstabelle an. Wenn die Vergleichstabelle mehr als eine Zeile mit einem bestimmten Primärschlüsselwert enthält, vergleicht diese Transformation die Zeile mit dem größten generierten Schlüsselwert dieser Zeilen und ignoriert die anderen Zeilen.
Eingabe enthält doppelte SchlüsselBietet Unterstützung für Eingabezeilen mit doppelten Primärschlüsselwerten.
Gelöschte Zeilen aus Vergleichstabelle ermittelnIdentifiziert Zeilen, die aus der Quelle gelöscht wurden.
VergleichsmethodeGreifen Sie auf die Vergleichstabelle zu, indem Sie eine zeilenweise Auswahl, eine im Cache abgelegte Vergleichstabelle oder eine sortierte Eingabe verwenden.
Primärschlüsselspalten eingebenGibt die Spalten im Eingabe-Dataset an, die jede Zeile eindeutig identifizieren. Diese Spalten müssen in der Vergleichstabelle mit denselben Spaltennamen und Datentypen vorhanden sein.
Spalten vergleichenVerbessert die Performance, indem nur die Teilmenge der Spalten, die Sie aus dem Eingabeschema in dieses Feld ziehen, verglichen wird. Wenn keine Spalten aufgelistet sind, werden alle Spalten im Eingabe-Dataset, die sich auch in der Vergleichstabelle befinden, als Vergleichsspalten verwendet.

Die geschichtsträchtige Transformation

Die History-Preserving-Transformation verfügt über eigene Dateneingabeanforderungen, Datenausgabeergebnisse und Optionen.

Historie Datensets erhalten

  • Eingabedatenset

    Dieser Datensatz ist das Ergebnis eines Vergleichs zwischen zwei Versionen derselben Daten. Zeilen mit geänderten Daten aus der neueren Version werden als UPDATE-Zeilen und neue Daten aus der neueren Version als INSERT-Zeilen gekennzeichnet. Sie kann Zeilen enthalten, die als DELETE gekennzeichnet sind, wenn die Option in der Table_Comparison-Transformation festgelegt wurde.

  • Ausgabedatenset

    Dieses Datenset enthält Zeilen, die als INSERT oder UPDATE gekennzeichnet sind.

History_Preserving-Transformationsoptionen

Optionen zum Beibehalten des Verlaufs

Die History-Preserving-Transformation bietet die in dieser Tabelle beschriebenen Optionen:

OptionBeschreibung
Gültig vonGeben Sie eine date- oder datetime-Spalte aus dem Quellschema an. Geben Sie eine Datumsspalte Gültig ab an, wenn das Ziel ein Gültigkeitsdatum verwendet, um Datenänderungen zu verfolgen.
Adresse gültig bisGeben Sie einen Datumswert im Format JJJJ.MM.TT an. Das Gültig-bis-Datum darf nicht mit dem Gültig-ab-Datum übereinstimmen.
SpalteGeben Sie eine Spalte aus dem Quellschema an, die die aktuell gültige Zeile aus einer Reihe von Zeilen mit demselben Primärschlüssel identifiziert. Die Spalte Kennzeichen gibt an, ob es sich bei einer Zeile um die aktuellsten Daten im Ziel für einen bestimmten Primärschlüssel handelt.
Wert setzenDefinieren Sie einen Ausdruck, der einen Wert mit demselben Datentyp wie der Wert in der Spalte Kennzeichen setzen ausgibt. Verwenden Sie diesen Wert, um die Spalte „Aktuelles Kennzeichen" zu aktualisieren. Die neue Zeile im Ziel behält den Verlauf einer vorhandenen Zeile bei.
Wert zurücksetzenDefinieren Sie einen Ausdruck, der einen Wert mit demselben Datentyp wie der Wert in der Spalte Zurücksetzungskennzeichen ausgibt. Verwenden Sie diesen Wert, um die Spalte mit dem aktuellen Kennzeichen in einer vorhandenen Zeile im Ziel zu aktualisieren, wenn die Zeile im Ziel Änderungen in einer oder mehreren Vergleichsspalten enthält.
Löschzeilen als Aktualisierungszeilen beibehaltenKonvertieren Sie DELETE-Zeilen in UPDATE-Zeilen im Ziel. Wenn Sie zuvor die Werte Gültig ab und Gültig bis festgelegt haben, setzt diese Option den Wert Gültig bis auf das Ausführungsdatum. Verwenden Sie diese Option, um sich langsam ändernde Dimensionen beizubehalten, indem Sie zuerst einen vollständigen Datensatz über die Table Comparison -Transformation eingeben. Wählen Sie die Option Gelöschte Zeilen aus Vergleichstabelle ermitteln in der Tabellenvergleichstransformation aus.
Spalten vergleichenListen Sie die Spalten im Eingabe-Dataset auf, um sie mit Änderungen zu vergleichen.
  • Wenn die Werte in den angegebenen Vergleichsspalten in jeder Version übereinstimmen, kennzeichnet die Transformation die Zeile als UPDATE. Die Zeile aus der vorherigen Version sowie die Datums- und Kennzeicheninformationen werden aktualisiert.
  • Wenn die Werte in jeder Version nicht übereinstimmen, wird die Zeile aus der neuesten Version bei der Ausgabe von der Transformation als INSERT gekennzeichnet. Dadurch wird dem Lager eine neue Zeile mit den neuen Werten hinzugefügt.

    Aktualisierungen von Spalten ohne Beibehaltung des Verlaufs aktualisieren alle Versionen der Zeile, wenn die Aktualisierung auf dem natürlichen Schlüssel erfolgt, aber nur die neueste Version, wenn sich die Aktualisierung auf den generierten Schlüssel bezieht.

Die Schlüsselgenerierungstransformation

Die Schlüsselgenerierungstransformation generiert neue Schlüssel, bevor das Dataset auf dieselbe Weise wie die key_generation-Funktion in das Ziel eingefügt wird.

Wenn es erforderlich ist, künstliche Schlüssel in einer Tabelle zu generieren, sucht diese Transformation den maximal vorhandenen Schlüsselwert aus einer Tabelle und verwendet ihn als Startwert, um neue Schlüssel zu generieren. Die Transformation erwartet, dass die generierte Schlüsselspalte Teil des Eingabeschemas ist.

Beispiel: Die History-Preserving-Transformation erzeugt Zeilen, die einem Warehouse hinzugefügt werden sollen, und diese Zeilen haben denselben Primärschlüssel wie Zeilen, die bereits im Warehouse vorhanden sind. Fügen Sie in diesem Fall der Lagertabelle einen generierten Schlüssel hinzu, um diese beiden Zeilen mit demselben Primärschlüssel zu unterscheiden.

Key_Generation-Datensets

  • Eingabe-Dataset

    Dieser Datensatz ist das Ergebnis eines Vergleichs zwischen zwei Versionen derselben Daten. Geänderte Daten aus der neueren Version werden als UPDATE-Zeile und neue Daten aus der neueren Version als INSERT-Zeile gekennzeichnet.

  • Ausgabe-Dataset

    Dieses Dataset ist ein Duplikat des Eingabe-Datasets, wobei Schlüsselwerte in der generierten Schlüsselspalte für Eingabezeilen hinzugefügt werden, die als INSERT gekennzeichnet sind.

Optionen für die Schlüsselgenerierungstransformation

Die Tabelle zeigt die Optionen, die mit der Schlüsselgenerierungstransformation verfügbar sind:

OptionBeschreibung
TabellennameGeben Sie den vollqualifizierten Namen der Schlüsselquelltabelle an, aus der der maximal vorhandene Schlüssel ermittelt wird. Diese Tabelle muss bereits in das Repository importiert worden sein. Der Tabellenname wird als datastore.owner.table dargestellt, wobei Datastore der Name des Datastores ist, den Data Services für den Zugriff auf die Schlüsselquelltabelle verwendet, und der Eigentümer hängt vom Datenbanktyp ab, der mit der Tabelle verknüpft ist.
Generierte SchlüsselspalteGeben Sie die Spalte in der Schlüsselquelltabelle an, die die vorhandenen Schlüsselwerte enthält. Im Eingabe-Dataset muss eine Spalte mit demselben Namen vorhanden sein. Der neue Schlüssel wird in diese Spalte eingefügt.
InkrementwerteGeben Sie das Intervall zwischen generierten Schlüsselwerten an.

Probieren wir es aus

Ich möchte Sie durch die Implementierung eines zielbasierten Datenflusses zur Datenerfassung geänderter Daten führen: