Diff Funktionen im Jitterbit Integration 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:
- Initialisieren Sie die Diff-Sitzung und definieren Sie den Typ des zu verwendenden Diff-Algorithmus. Derzeit werden entweder „chunked“ oder „ordered“ unterstützt. Chunked funktioniert immer, aber ordered kann 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 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 einen Chunked Diff) oder die OrderedDiffKeyList
Funktion (für einen geordneten Diff), um den/die Primärschlüssel der Quelltabelle zu definieren:
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 der „geordnete“ Diff-Algorithmus verwendet wird.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 den „chunked“ Diff-Algorithmus fest. Ein größerer 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.
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 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();
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
: 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");
DiffNode
Erklärung
void DiffNode(string nodeName)
Syntax
DiffNode(<nodeName>)
Erforderliche Parameter
nodeName
: Eine Zeichenfolge, die den sich wiederholenden Knoten angibt, der für den 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();
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 richtig 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();
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
: Zeichenfolgennamen 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 sortiert ist (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 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 wird das System gezwungen, alle Einträge als „hinzugefügt“ zu behandeln.1
(Purge): 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 in einem vorhandenen Diff-Prozess etwas 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);
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);