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:
- 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.
- 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.
- 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:
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 unterscheidetaction
: Eine Ganzzahl (entweder0
oder1
) 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);