Ein Wörterbuch in Jitterbit Integration Studio befüllen und verwenden
Einführung
Ein Wörterbuch ist eine spezielle Art von globaler Variable, die ein Array von Schlüssel-Wert-Paaren erstellt. Ein häufiges Anwendungsbeispiel ist eine Kreuzreferenzliste, wie zum Beispiel, wenn eine Datenquelle einen Schlüssel bereitstellt und ein Ziel einen Wert basierend auf diesem Schlüssel benötigt.
Ein Wörterbuch befüllen
Eine empfohlene Best Practice ist es, das Wörterbuch zuerst mit der Dict
Funktion zu initialisieren:
$dict.mylist = Dict()
Ein Wörterbucheintrag kann dann mit der AddToDict
Funktion erstellt werden:
AddToDict(<dict name>,<key>, <value>)
Es gibt Szenarien, in denen wir einfach die Schlüssel im Wörterbuch erfassen möchten und die Werte irrelevant sind. In diesem Fall ist es akzeptabel, Folgendes zu verwenden:
AddToDict(<dict name>, <key>, true)
Ein weiteres Szenario ist, wenn der Wert selbst eine Liste ist, sodass wir zuerst überprüfen möchten, ob der Wörterbucheintrag existiert, und dann den Wert abrufen und wieder zum Wörterbuch hinzufügen. Dies kann auch verwendet werden, um Werte zu summieren. In diesem Fall wird HasKey
verwendet:
my_value = <data from source>;
my_key = <data from source>;
If(HasKey($dict.mylist,my_key) // Check if my_key is in the dictionary
, // If true
value = $dict.mylist[my_key]; // Get the original value
new_value = value + “|” + my_value; // Append the new value
AddToDict($dict.mylist,new_value); // Write the new appended value back to the dictionary
, // If false
AddToDict($dict.mylist,my_value);
);
Ein Wörterbuch lesen
Wenn versucht wird, einen Wert aus einem Wörterbuch zu lesen und der Schlüssel nicht existiert, wird dies als Fehler behandelt. Eine Best Practice ist es, immer zuerst HasKey
zu verwenden, um zu überprüfen, ob der Schlüssel existiert. Siehe die dritte Zeile im obigen Code für ein Beispiel. Da Wörterbucheinträge immer in alphabetischer Reihenfolge und immer einzigartig sind, wird die Verwendung von AddToDict
mit einem vorhandenen Schlüssel den Eintrag überschreiben.
Dictionaries werden häufig gelesen, um eine Liste von Daten zu generieren, die mit einer While
Schleife gelesen wird:
arr = Array();
arr = KeyList($dict.mylist);
i = 0;
While(i < Length(arr),
value = $dict.mylist[i];
<some action>
i++);
Dictionaries werden auch in Transformationsbedingungen als Filter verwendet. Angenommen, ein Dictionary ist gefüllt und eine Transformation muss eine Quelle lesen und nur Datensätze verarbeiten, wenn der Dictionary-Wert im Datensatz enthalten ist. Die Bedingung der Zieltransformation hätte ein Skript wie dieses:
pass = true;
If(!HasKey($dict.mylist,<mapped value from source record>), pass = false);
pass;
Der Geltungsbereich von Dictionaries, wie bei allen globalen Variablen, ist auf die Instanz des Operationsthreads beschränkt. Sie sind jedoch nicht threadsicher. Seien Sie vorsichtig beim Befüllen eines Dictionaries, wenn Sie die asynchrone Option mit RunOperation
verwenden. Das Dictionary behält seine Daten nicht zwischen mehreren Threads.