Zum Inhalt springen

Diff-Funktionen im Jitterbit Integration Studio

Verwenden Sie 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. Bei einer Datenbank muss die Quelltabelle über einen Schlüsselsatz verfügen, 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 einer Diff-Operation werden alle Quellzeilen als „hinzugefügt“ klassifiziert. Bei jedem weiteren Durchlauf verarbeitet Jitterbit nur hinzugefügte, geänderte oder gelöschte Zeilen. Dies kann die Verarbeitungszeit erheblich verkürzen, wenn eine Quelltabelle zahlreiche Datensätze enthält, die sich selten ändern.

Wie in den folgenden Schritten zu sehen ist, besteht eine „Diff Operation“ normalerweise aus mehreren verketteten Operationen; jede nachfolgende Operation verarbeitet 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-Algorithmus. Derzeit werden entweder „Chunked“ oder „Ordered“ unterstützt. „Chunked“ funktioniert immer, „Ordered“ kann jedoch 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 späteren 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 der Diff Sitzung

Initialisieren Sie die Diff-Sitzung durch Aufrufen von InitializeDiff Funktion mit einer eindeutigen "Diff-ID", gefolgt von entweder DiffKeyList Funktion (für einen Chunked Diff) oder die OrderedDiffKeyList Funktion (für einen geordneten Diff) zum Definieren des/der Primärschlüssel(s) der Quelltabelle:

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. 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 Die 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 bei hierarchischen Quellen den Knoten an, der als Wiederholungsknoten für den Diff verwendet werden soll.
  • OrderedDiffKeyList: Gibt die Sortierreihenfolge der Quelle an, wenn der geordnete Diff-Algorithmus verwendet wird.
  • ResetDiff: Setzt die Diff-Sitzung zurück oder löscht sie. Wird in der Fehlerbehandlung verwendet, um die Diff-Sitzung bei einem Fehler zurückzusetzen.
  • SetDiffChunkSize: Legt einen Parameter für den Chunked-Diff-Algorithmus fest. Ein höherer Wert ist schneller, verbraucht aber mehr Speicher.

Diff-Beispiele

Ein Beispiel für die Verwendung von Diff in Design Studio, siehe Datenänderungen mit Tabellen- oder Dateiänderungen erfassen. Dies kann für die Verwendung in Integration Studio extrapoliert werden.

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();

DiffComplete

Erklärung

void DiffComplete()

Syntax

DiffComplete()

Beschreibung

Kennzeichnet den Diff-Prozess als abgeschlossen. Diese Methode wird aufgerufen, wenn der Diff-Prozess erfolgreich abgeschlossen ist. 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();

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();

DiffKeyList

Erklärung

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

Syntax

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

Erforderliche Parameter

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

Beschreibung

Legt die Liste der Schlüssel fest, die zur eindeutigen Identifizierung eines Datensatzes in der Diff-Quelle verwendet werden sollen. Diese Methode wird typischerweise 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");

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 Wiederholungsknoten verwendet werden soll, für den 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();

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 identisch sein, um den Diff korrekt zu identifizieren.

Beschreibung

Initialisiert eine neue Diff-Sitzung.

Der als diffId muss sich von allen anderen im System verwendeten Diff-Kennungen unterscheiden, muss aber bei jedem Ausführen der Operation gleich sein. Läuft bereits eine Diff-Sitzung, schlägt der Aufruf dieser Methode fehl. Um eine alte Diff-Sitzung zu löschen (z. B. bei einem Systemausfall), rufen Sie die Funktion auf. ResetDiff einmal.

Diese Methode wird normalerweise im Pre-Source Script der ersten Operation aufgerufen, die einen Diff/eine 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();

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: Stringnamen von Spaltenschlüsseln zur eindeutigen Identifizierung eines Datensatzes in einer Quelle
  • isAscending1, isAscending2,... isAscendingN: Boolesche Werte für jede Spalte, die angeben, ob jede Spalte aufsteigend sortiert ist (true) oder absteigend (false)

  • Die Anzahl der angegebenen Argumente muss mindestens zwei betragen und 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 sortiert sind. In diesem Fall wird keine Blockgröße verwendet, und der Speicherverbrauch stellt kein Problem dar. Diese Methode wird typischerweise 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) Angabe, 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 behandelt das System alle Einträge als „hinzugefügt“.
  • 1(Bereinigen): Entfernt alle Dateien, die von einer vorherigen Diff-Sitzung übrig geblieben sind. Der letzte Snapshot wird dabei nicht zurückgesetzt; es werden lediglich veraltete Dateien aus alten, fehlgeschlagenen oder abgebrochenen Diff-Sitzungen gelöscht.

Diese Methode wird typischerweise aufgerufen, wenn in einem bestehenden Diff-Prozess etwas geändert wurde oder ein Diff-Prozess fehlgeschlagen ist und in einem inkonsistenten Zustand zurückbleibt. Sie sollte nicht während der normalen Diff-Verarbeitung aufgerufen werden. Wenn hierfür 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);

SetDiffChunkSize

Erklärung

void SetDiffChunkSize(int chunkSize)

Syntax

SetDiffChunkSize(<chunkSize>)

Erforderliche Parameter

  • chunkSize: Größe der beim Differenzieren verwendeten Chunks in Bytes

Beschreibung

Legt die Chunk-Größe (in Bytes) fest, die beim Vergleichen verwendet wird.

Eine größere Chunk-Größe führt zwar zu mehr Speicherbedarf, verarbeitet den Vergleich aber schneller. Der Standardwert beträgt 50.000 Bytes; bei ausreichendem Speicher kann dieser Wert erhöht werden.

Diese Methode wird typischerweise zusammen 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

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