Ir para o conteúdo

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.