Poblar y usar un diccionario en Jitterbit Integration Studio
Introducción
Un diccionario es un tipo especial de variable global que construye un arreglo de pares clave-valor. Un caso de uso frecuente es como una lista de referencia cruzada, como cuando una fuente de datos proporciona una clave y un destino requiere un valor basado en esa clave.
Poblar un diccionario
Una práctica recomendada es inicializar primero el diccionario utilizando la función Dict
:
$dict.mylist = Dict()
Luego, se puede crear una entrada en el diccionario utilizando la función AddToDict
:
AddToDict(<nombre del diccionario>,<clave>, <valor>)
Hay escenarios en los que solo queremos capturar las claves en el diccionario y cualquier valor es irrelevante. En ese caso, es aceptable usar:
AddToDict(<nombre del diccionario>, <clave>, true)
Otro escenario es cuando el valor en sí es una lista, por lo que primero queremos verificar si la entrada del diccionario existe, y luego obtener el valor y agregarlo de nuevo al diccionario. Esto también se puede usar para sumar valores. En este caso se utiliza HasKey
:
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);
);
Leer un diccionario
Si se intenta leer un valor de un diccionario y la clave no existe, esto se considera un fallo. Una práctica recomendada es siempre usar primero HasKey
para verificar que la clave existe. Consulta la tercera línea en el código anterior para un ejemplo. Dado que las entradas del diccionario siempre están en orden alfabético y son siempre únicas, usar AddToDict
con una clave existente sobrescribirá la entrada.
Los diccionarios se leen con frecuencia para generar una lista de datos que se lee con un bucle While
:
arr = Array();
arr = KeyList($dict.mylist);
i = 0;
While(i < Length(arr),
value = $dict.mylist[i];
<some action>
i++);
Los diccionarios también se utilizan en condiciones de transformación como un filtro. Suponga que un diccionario está poblado y que una transformación necesita leer una fuente y solo procesar registros si el valor del diccionario está en el registro. La condición de la transformación de destino tendría un script como este:
pass = true;
If(!HasKey($dict.mylist,<mapped value from source record>), pass = false);
pass;
El alcance de los diccionarios, como todas las variables globales, está limitado a la instancia del hilo de operación. Pero no son seguros para hilos. Tenga cuidado al poblar un diccionario cuando utilice la opción asincrónica con RunOperation
. El diccionario no retendrá sus datos entre múltiples hilos.