Zum Inhalt springen

Diff-Funktionen im Jitterbit Design Studio

Verwenden von Diff-Funktionen zum Synchronisieren von Daten

Die Jitterbit Diff/Synchronize-Funktion kann in Transformations verwendet werden, um Daten in einer einzelnen Tabelle mit jedem beliebigen Ziel zu synchronisieren.

Die Quelle muss eine Datenbank oder eine CSV-Datei sein. Wenn es sich um eine Datenbank handelt, muss die Quelltabelle einen Schlüsselsatz enthalten, der eine Datenzeile eindeutig identifiziert. Hierarchische Quelltabellenbeziehungen werden nicht unterstützt.

Mit der Diff-Funktion werden die Quelldaten in drei Kategorien unterteilt:

  • Zeilen hinzugefügt
  • Zeilen aktualisiert
  • gelöschte Zeilen

Beim ersten Ausführen eines Diff Operation werden alle Quellzeilen als „hinzugefügt“ klassifiziert. Bei jedem nachfolgenden Durchlauf werden von Jitterbit nur hinzugefügte, geänderte oder gelöschte Zeilen verarbeitet. Dies kann in Fällen, in denen eine Quelltabelle zahlreiche Datensätze enthält, die sich selten ändern, erhebliche Verarbeitungszeit sparen.

Wie in den folgenden Schritten zu sehen ist, besteht eine „Diff Operation“ normalerweise aus mehreren verketteten Operationen; jede nachfolgende Operation behandelt jeweils Hinzufügungen, Aktualisierungen und Löschungen.

Um eine Diff Operation einzurichten, gehen Sie folgendermaßen vor:

  1. Initialisieren Sie die Diff-Sitzung und definieren Sie den zu verwendenden Diff-Algorithmustyp. Derzeit entweder chunked oder ordered werden unterstützt. Die chunked diff-Algorithmus wird immer funktionieren, aber ordered kann schneller sein, wenn die Reihenfolge der Quelldatenzeilen gewährleistet ist.
  2. Hinzugefügte, aktualisierte und gelöschte Zeilen verarbeiten. Die Reihenfolge der Verarbeitung ist beliebig und hängt von der Reihenfolge der Vorgänge ab, die die Synchronisierung implementieren.
  3. Schließen Sie die Diff-Sitzung ab. Dadurch wird der Diff-Prozess als abgeschlossen gekennzeichnet. Andernfalls kann es bei einem zukünftigen Diff Operation dazu kommen, dass keine Datensätze verarbeitet werden.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Schritt 1: Initialisieren Sie die Diff-Sitzung

Initialisieren Sie die Diff-Sitzung durch Aufrufen von InitializeDiff Funktion mit einer eindeutigen "Diff-ID", gefolgt von entweder DiffKeyList Funktion (für eine chunked diff) oder die OrderedDiffKeyList Funktion (für eine ordered diff), um den/die Primärschlüssel der Quelltabelle zu definieren:

Example
InitializeDiff("A-unique-diff-ID-for-each-diff-process");
DiffKeyList("pk1", "pk2");

Schritt 2: Hinzugefügte, aktualisierte und gelöschte Zeilen verarbeiten

Vor jeder Transformation werden die Funktionen DiffAdd, DiffUpdate, Und DiffDelete aufgerufen werden. Jede Transformation, die nach diesen Funktionsaufrufen ausgeführt wird, erhält die hinzugefügten, aktualisierten oder gelöschten Zeilen. Die Quelle der Transformations muss dieselbe Datenbanktabelle oder CSV-Datei sein, das Ziel kann jedoch in allen drei Fällen unterschiedlich sein.

Schritt 3: Abschließen der Diff-Sitzung

Der DiffComplete Funktion sollte aufgerufen werden, wenn die drei Fälle erfolgreich behandelt wurden. (Im Fehlerfall wird die ResetDiff Stattdessen sollte die Funktion verwendet werden.) Dadurch wird der Diff-Prozess als abgeschlossen gekennzeichnet. Andernfalls kann ein zukünftiger Diff-Operation dazu führen, dass keine Datensätze verarbeitet werden.

Zusätzliche Diff-Funktionen

  • DiffNode: Gibt für hierarchische Quellen den Knoten an, der als Wiederholungsknoten zum Ausführen des Diff verwendet werden soll.
  • OrderedDiffKeyList: Gibt die Sortierreihenfolge der Quelle an, wenn die ordered Diff-Algorithmus wird verwendet.
  • ResetDiff: Setzt die Diff-Sitzung zurück oder löscht sie. Wird bei der Fehlerbehandlung verwendet, um die Diff-Sitzung bei einem Fehler zurückzusetzen.
  • SetDiffChunkSize: Legt einen Parameter für die chunked Diff-Algorithmus. Ein größerer Wert ist schneller, verbraucht aber mehr Speicher.

Hinweis

Ein weiteres Beispiel finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

DiffAdd

Erklärung

void DiffAdd()

Syntax

DiffAdd()

Beschreibung

Fordert die hinzugefügten Datensätze als Eingabe für die nächste ausgeführte Transformation an.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Start by processing the added records in this operation:
DiffAdd();

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

DiffComplete

Erklärung

void DiffComplete()

Syntax

DiffComplete()

Beschreibung

Kennzeichnet den Diff-Prozess als abgeschlossen. Diese Methode muss aufgerufen werden, wenn der Diff-Prozess erfolgreich abgeschlossen wurde. Andernfalls verbleibt der Diff-Prozess in einem inkonsistenten Zustand. In diesem Fall werden beim nächsten Ausführen des Diff Operation keine Datensätze verarbeitet.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Flag the diff operation as complete
DiffComplete();

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

DiffDelete

Erklärung

void DiffDelete()

Syntax

DiffDelete()

Beschreibung

Fordert die gelöschten Datensätze als Eingabe für die nächste ausgeführte Transformation an.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Requesting deleted records for the transformation run
DiffDelete();

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

DiffKeyList

Erklärung

void DiffKeyList(string k1[, string k2,... string kN])

Syntax

DiffKeyList(<k1>[, <k2>,... <kN>])

Erforderliche Parameter

  • k1, k2,... kN: Zeichenfolgenschlüssel, die die Spalten in der Diff-Quelle identifizieren, die zur eindeutigen Identifizierung jedes Datensatzes verwendet werden sollen

Beschreibung

Legt die Liste der Schlüssel fest, die zur eindeutigen Identifizierung eines Datensatzes in der Diff-Quelle verwendet werden sollen. Diese Methode wird normalerweise in Verbindung mit dem InitializeDiff Funktion.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Using a chunked diff with the synchronizing primary keys
// of CustomerId and OrderId:
DiffKeyList("CustomerId", "OrderId");

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

DiffNode

Erklärung

void DiffNode(string nodeName)

Syntax

DiffNode(<nodeName>)

Erforderliche Parameter

  • nodeName: Eine Zeichenfolge, die den sich wiederholenden Knoten angibt, der für die Diff Operation verwendet werden soll

Beschreibung

Bei hierarchischen Quellen gibt dies den Knoten an, der als sich wiederholender Knoten verwendet werden soll, an dem der Diff ausgeführt wird.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Run the diff on the XML element node <Listing>
DiffNode("Listing");

DiffUpdate

Erklärung

void DiffUpdate()

Syntax

DiffUpdate()

Beschreibung

Fordert die aktualisierten Datensätze als Eingabe für die nächste ausgeführte Transformation an.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Requesting updated records for the transformation run
DiffUpdate();

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

InitializeDiff

Erklärung

void InitializeDiff(string diffId)

Syntax

InitializeDiff(<diffId>)

Erforderliche Parameter

  • diffId: Eine Zeichenfolge, die den Diff-Operation eindeutig von anderen auf dem System ausgeführten Diff-Vorgängen unterscheidet. Die Zeichenfolge muss bei jedem Durchlauf des Operation gleich sein, um den Diff korrekt zu identifizieren.

Beschreibung

Initialisiert eine neue Diff-Sitzung.

Die als diffId muss sich von allen anderen im System verwendeten Diff-Bezeichnern unterscheiden, muss aber bei jedem Ausführen der Operation gleich sein. Wenn bereits eine Diff-Sitzung ausgeführt wird, schlägt ein Aufruf dieser Methode fehl. Um eine alte Diff-Sitzung zu löschen (z. B. im Falle eines Systemausfalls), rufen Sie die Funktion auf ResetDiff() einmal.

Diese Methode wird normalerweise im Pre-Source Script der ersten Operation aufgerufen, die eine Diff-/Synchronisierung implementiert.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Synchronize the order database:
InitializeDiff("Order Database Synchronization");

// Using chunked diff with the synchronizing primary keys
// of CustomerId and OrderId:
DiffKeyList("CustomerId", "OrderId");

// With sufficient memory available, increase the chunk size:
SetDiffChunkSize(100000);

// Start by processing the added records in this operation:
DiffAdd();

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

OrderedDiffKeyList

Erklärung

void OrderedDiffKeyList(string k1, bool isAscending1[, string k2, bool isAscending2,... string kN, bool isAscendingN])

Syntax

OrderedDiffKeyList(<k1>, <isAscending1>[, <k2>, <isAscending2>,... <kN>, <isAscendingN>])

Erforderliche Parameter

  • k1, k2,... kN: String-Namen von Spaltenschlüsseln, die zur eindeutigen Identifizierung eines Datensatzes in einer Quelle verwendet werden sollen
  • isAscending1, isAscending2,... isAscendingN: Boolesche Werte für jede Spalte, die angeben, ob jede Spalte aufsteigend (true) oder absteigend (false)

  • Die Anzahl der angegebenen Argumente muss zwei oder mehr betragen und muss eine gerade Zahl sein.

Beschreibung

Legt die Liste der Schlüssel fest, die zur eindeutigen Identifizierung eines Datensatzes in der Quelle verwendet werden, und gibt die Datensatzreihenfolge des Schlüssels entweder aufsteigend (true) oder absteigend (false).

Verwenden Sie diese Methode (anstelle der DiffKeyList Funktion) in Fällen, in denen die Quelldatensätze garantiert in einer bestimmten Reihenfolge vorliegen.

Die Diff-Verarbeitung ist effizienter, wenn die Quellfelder jedes Mal gleich angeordnet sind. In diesen Fällen wird keine Blockgröße verwendet und die Speichernutzung stellt kein Problem dar. Diese Methode wird normalerweise in Verbindung mit dem InitializeDiff Funktion.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

ResetDiff

Erklärung

void ResetDiff(string diffId, int action)

Syntax

ResetDiff(<diffId>, <action>)

Erforderliche Parameter

  • diffId: Eine Zeichenfolge, die den Diff-Operation eindeutig von anderen auf dem System ausgeführten Diff-Vorgängen unterscheidet.
  • action: Eine Ganzzahl (entweder 0 oder 1), die angibt, wie die Diff-Sitzung zurückgesetzt werden soll

Beschreibung

Setzt eine bestehende Diff-Sitzung zurück.

Die action Parameter (entweder 0 oder 1) gibt an, wie die Diff-Sitzung zurückgesetzt werden soll:

  • 0 (Zurücksetzen): Vergisst den letzten Snapshot vollständig und beginnt von vorne. Dadurch wird das System gezwungen, alle Einträge als „hinzugefügt“ zu behandeln.
  • 1 (Bereinigen): Entfernt alle Dateien, die von einer vorherigen Diff-Sitzung übrig geblieben sind. Dadurch wird der letzte Snapshot nicht zurückgesetzt; es werden nur veraltete Dateien gelöscht, die von alten, fehlgeschlagenen oder abgebrochenen Diff-Sitzungen übrig geblieben sind.

Diese Methode wird normalerweise aufgerufen, wenn etwas in einem vorhandenen Diff-Prozess geändert wurde oder wenn ein Diff-Prozess fehlgeschlagen ist und in einem inkonsistenten Zustand zurückbleibt. Sie sollte während der normalen Diff-Verarbeitung nicht aufgerufen werden. Wenn für diese Methode keine Diff-Sitzung vorhanden ist, diff_id, es wird keine Aktion ausgeführt.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// Purge any files left over from a previous diff session,
// but keep the latest snapshot
ResetDiff("Order Database Synchronization", 1);

Hinweis

Ein vollständiges Beispiel mit weiteren Funktionen finden Sie unter Datenänderungen mit Tabellen- oder Dateiänderungen erfassen.

SetDiffChunkSize

Erklärung

void SetDiffChunkSize(int chunkSize)

Syntax

SetDiffChunkSize(<chunkSize>)

Erforderliche Parameter

  • chunkSize: Größe in Bytes für Chunks, die beim Differenzieren verwendet werden

Beschreibung

Legt die Blockgröße (in Bytes) fest, die beim Diff-Verfahren verwendet wird.

Bei einer größeren Blockgröße benötigt das System zwar mehr Speicher, verarbeitet das Diff-Verfahren jedoch schneller. Der Standardwert ist 50.000 Bytes. Wenn Sie über ausreichend Speicher verfügen, können Sie diese Zahl erhöhen.

Diese Methode wird normalerweise in Verbindung mit dem aufgerufen InitializeDiff Funktion.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiele

// With sufficient memory available, increase the chunk size:
SetDiffChunkSize(100000);