Füllen und verwenden Sie ein Wörterbuch in Jitterbit Integration Studio
Einführung
Ein Wörterbuch ist eine spezielle Art globaler Variable, die ein Array aus Key-Value Paaren erstellt. Ein häufiger Anwendungsfall ist die Verwendung als Querverweisliste, beispielsweise wenn eine Datenquelle einen Schlüssel bereitstellt und ein Ziel einen Wert basierend auf diesem Schlüssel erfordert.
Ein Wörterbuch füllen
Eine erforderliche bewährte Vorgehensweise besteht darin, zuerst das Wörterbuch mit zu initialisieren Dict
Funktion:
$dict.mylist = Dict()
Ein Wörterbucheintrag kann dann mit erstellt werden AddToDict
Funktion:
AddToDict(<dict name>,<key>, <value>)
Es gibt Szenarien, in denen wir einfach die Schlüssel im Wörterbuch erfassen möchten und alle Werte irrelevant sind. In diesem Fall ist folgende Verwendung akzeptabel:
AddToDict(<dict name>, <key>, true)
Ein anderes Szenario ist, wenn der Wert selbst eine Liste ist. Daher möchten wir zuerst prüfen, ob der Wörterbucheintrag vorhanden ist, und dann den Wert abrufen und ihn wieder an das Wörterbuch anhängen. Dies kann auch zum Summieren von Werten verwendet werden. HasKey
wird in diesem Fall 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);
);
Lesen Sie ein Wörterbuch
Wenn versucht wird, einen Wert aus einem Wörterbuch zu lesen und der Schlüssel nicht existiert, wird dies als Fehler behandelt. Eine bewährte Vorgehensweise besteht darin, immer zuerst zu verwenden HasKey
, um zu überprüfen, ob der Schlüssel vorhanden ist. Ein Beispiel finden Sie in der dritten Zeile des obigen Codes. Da Wörterbucheinträge immer in alphabetischer Reihenfolge und immer eindeutig sind, verwenden Sie AddToDict
mit einem vorhandenen Schlüssel überschreibt den Eintrag.
Wörterbücher werden häufig gelesen, um eine Liste von Daten zu generieren, die mit einem gelesen werden While
Schleife:
arr = Array();
arr = KeyList($dict.mylist);
i = 0;
While(i < Length(arr),
value = $dict.mylist[i];
<some action>
i++);
Wörterbücher werden auch in Transformation verwendet als Filter. Angenommen, ein Wörterbuch ist gefüllt und eine Transformation muss eine Quelle lesen und Datensätze nur verarbeiten, wenn der Wörterbuchwert im Datensatz enthalten ist. Die Bedingung der Transformation würde ein Script wie dieses enthalten:
pass = true;
If(!HasKey($dict.mylist,<mapped value from source record>), pass = false);
pass;
Der Gültigkeitsbereich von Wörterbüchern ist wie bei allen globalen Variablen auf die Instanz des Operation beschränkt. Sie sind jedoch nicht threadsicher. Seien Sie vorsichtig beim Füllen eines Wörterbuchs, wenn Sie die asynchrone Option mit verwenden RunOperation
. Das Wörterbuch behält seine Daten zwischen mehreren Threads nicht.