Preencher e Usar um Dicionário
Introdução
Um dicionário é um tipo especial de variável global que constrói uma matriz 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 baseado nessa chave.
Preencher um Dicionário
Uma prática recomendada é inicializar primeiro o dicionário usando o Dict
função:
$dict.mylist = Dict()
Uma entrada de dicionário pode então ser criada usando o AddToDict
função:
AddToDict(<dict name>,<key>, <value>)
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(<dict name>, <key>, true)
Outro cenário é onde o próprio valor é uma lista, portanto, 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 neste 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);
);
Leia um Dicionário
Se for feita uma tentativa de ler um valor de um dicionário e a chave não existir, isso será tratado como uma falha. Uma prática recomendada é sempre usar primeiro HasKey
para verificar se a chave existe. Veja a terceira linha no código acima para um exemplo. Como as entradas do dicionário estão sempre em ordem alfabética e são sempre únicas, usando AddToDict
com uma chave existente substituirá a entrada.
Os dicionários são frequentemente lidos para gerar uma lista de dados que são lidos com um While
laço:
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 seja preenchido e uma transformação precise ler uma origem e processar apenas registros 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 do thread da operação. Mas eles não são thread-safe. Tenha cuidado ao preencher um dicionário ao usar a opção assíncrona com RunOperation
. O dicionário não reterá seus dados entre vários threads.