Preencher e usar um dicionário no Jitterbit Integration Studio
Introdução
Um dicionário é um tipo especial de variável global que constrói um array de pares chave-valor. Um caso de uso frequente é como uma lista de referência cruzada, como quando uma fonte de dados fornece uma chave e um destino requer um valor com base nessa chave.
Preencher um dicionário
Uma prática recomendada é primeiro inicializar o dicionário usando a função Dict
:
$dict.mylist = Dict()
Uma entrada no dicionário pode então ser criada usando a função AddToDict
:
AddToDict(<nome do dicionário>,<chave>, <valor>)
Existem cenários em que queremos simplesmente capturar as chaves no dicionário e quaisquer valores são irrelevantes. Nesse caso, é aceitável usar:
AddToDict(<nome do dicionário>, <chave>, true)
Outro cenário é onde o valor em si é uma lista, então queremos primeiro verificar se a entrada do dicionário existe e, em seguida, obter o valor e anexá-lo de volta ao dicionário. Isso também pode ser usado para somar valores. HasKey
é usado nesse caso:
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);
);
Ler um dicionário
Se uma tentativa for feita para ler um valor de um dicionário e a chave não existir, isso é tratado como uma falha. Uma prática recomendada é sempre usar primeiro HasKey
para verificar se a chave existe. Veja a terceira linha do código acima como exemplo. Como as entradas do dicionário estão sempre em ordem alfabética e são sempre únicas, usar AddToDict
com uma chave existente irá sobrescrever a entrada.
Os dicionários são frequentemente lidos para gerar uma lista de dados que é lida com um While
loop:
arr = Array();
arr = KeyList($dict.mylist);
i = 0;
While(i < Length(arr),
value = $dict.mylist[i];
<some action>
i++);
Os dicionários também são usados em condições de transformação como um filtro. Suponha que um dicionário esteja populado e uma transformação precise ler uma fonte e processar registros apenas se o valor do dicionário estiver no registro. A condição da transformação de destino teria um script como este:
pass = true;
If(!HasKey($dict.mylist,<mapped value from source record>), pass = false);
pass;
O escopo dos dicionários, como todas as variáveis globais, é limitado à instância da thread da operação. Mas eles não são seguros para threads. Tenha cuidado ao popular um dicionário ao usar a opção assíncrona com RunOperation
. O dicionário não reterá seus dados entre múltiplas threads.