Funções de Diff
Use Funções Diff para Sincronizar Dados
O recurso Jitterbit Diff/Synchronize pode ser usado em transformações para sincronizar dados em uma única tabela para qualquer tipo de destino.
A origem deve ser um banco de dados ou um arquivo CSV. Se for um banco de dados, a tabela de origem deverá ter um conjunto de chaves que identifique exclusivamente uma linha de dados. As relações hierárquicas da tabela de origem não são suportadas.
O recurso diff é usado para dividir os dados de origem em três categorias:
- Linhas adicionadas
- Linhas atualizadas
- Linhas excluídas
Na primeira vez que uma operação diff é executada, todas as linhas de origem são classificadas como "adicionadas". A cada execução subsequente, apenas as linhas adicionadas, alteradas ou excluídas serão processadas pelo Jitterbit. Isso pode economizar um tempo de processamento significativo nos casos em que uma tabela de origem possui vários registros que são alterados com pouca frequência.
Como visto nas etapas abaixo, uma “ operação diff” geralmente consiste em diversas operações encadeadas; cada operação sucessiva trata de adições, atualizações e exclusões, respectivamente.
Para configurar uma operação diff, siga estas etapas:
- Inicialize a sessão diff e defina o tipo de algoritmo diff a ser usado. Atualmente, quer
chunked
ouordered
são suportados. Ochunked
o algoritmo diff sempre funcionará, masordered
poderá ser mais rápido se a ordem das linhas dos dados de origem for garantida. - Lidar com linhas adicionadas, atualizadas e excluídas. A ordem em que são tratados é arbitrária e depende da ordem das operações que implementam a sincronização.
- Finalize a sessão de comparação. Isso sinaliza o processo diff como concluído; caso contrário, uma operação de comparação futura poderá resultar no processamento de nenhum registro.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Etapa 1: Inicializar a Sessão Diff
Inicialize a sessão diff chamando o InitializeDiff
função com um "diff ID" exclusivo seguido por DiffKeyList
função (para um chunked
diff) ou o OrderedDiffKeyList
função (para um ordered
diff) para definir a(s) chave(s) primária(s) da tabela de origem:
InitializeDiff("A-unique-diff-ID-for-each-diff-process");
DiffKeyList("pk1", "pk2");
Etapa 2: Manipular Linhas Adicionadas, Atualizadas e Excluídas
Antes de cada transformação, as funções DiffAdd
, DiffUpdate
, e DiffDelete
são chamados. Qualquer transformação executada após essas chamadas de função receberá as linhas adicionadas, atualizadas ou excluídas, respectivamente. A origem das transformações deve ser a mesma tabela de banco de dados ou arquivo CSV, mas o destino pode ser diferente nos três casos.
Etapa 3: Finalize a Sessão Diff
O DiffComplete
a função deve ser chamada quando os três casos forem tratados com sucesso. (No caso de erros, a ResetDiff
deve ser usada em vez disso.) Isso sinaliza o processo diff como concluído; caso contrário, uma operação de comparação futura poderá resultar no processamento de nenhum registro.
Funções Diff Adicionais
DiffNode
: Para fontes hierárquicas, especifica o nó que deve ser usado como o nó de repetição para executar o diff.OrderedDiffKeyList
: Especifica a ordem de classificação da fonte quando oordered
algoritmo diff é usado.ResetDiff
: Reinicia ou limpa a sessão diff. Usado no tratamento de erros para reiniciar a sessão diff em caso de falha.SetDiffChunkSize
: Define um parâmetro para ochunked
algoritmo diff. Um valor maior é mais rápido, mas usa mais memória.
Nota
Para um exemplo adicional, veja Capturar alterações de dados com alterações de tabela ou arquivo.
DiffAdd
Declaração
void DiffAdd()
Sintaxe
DiffAdd()
Descrição
Solicita os registros adicionados como entrada para a próxima transformação executada.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Start by processing the added records in this operation:
DiffAdd();
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
DiffComplete
Declaração
void DiffComplete()
Sintaxe
DiffComplete()
Descrição
Sinaliza o processo de comparação como concluído. Este método deve ser chamado quando o processo diff for concluído com êxito; caso contrário, o processo diff ficará em um estado inconsistente. Nesse caso, na próxima vez que a operação diff for executada, nenhum registro será processado.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Flag the diff operation as complete
DiffComplete();
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
DiffDelete
Declaração
void DiffDelete()
Sintaxe
DiffDelete()
Descrição
Solicita os registros excluídos como entrada para a próxima transformação executada.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Requesting deleted records for the transformation run
DiffDelete();
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
DiffKeyList
Declaração
void DiffKeyList(string k1[, string k2,... string kN])
Sintaxe
DiffKeyList(<k1>[, <k2>,... <kN>])
Parâmetros Obrigatórios
k1, k2,... kN
: Chaves de string que identificam as colunas na fonte diff a serem usadas para identificar exclusivamente cada registro
Descrição
Define a lista de chaves a serem usadas para identificar exclusivamente um registro na fonte diff. Este método é normalmente chamado em conjunto com o InitializeDiff
função.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Using a chunked diff with the synchronizing primary keys
// of CustomerId and OrderId:
DiffKeyList("CustomerId", "OrderId");
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
DiffNode
Declaração
void DiffNode(string nodeName)
Sintaxe
DiffNode(<nodeName>)
Parâmetros Obrigatórios
nodeName
: Uma string que especifica o nó repetidor a ser usado para a operação diff
Descrição
Para fontes hierárquicas, isso especifica o nó a ser usado como o nó de repetição no qual o diff é executado.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Run the diff on the XML element node <Listing>
DiffNode("Listing");
DiffUpdate
Declaração
void DiffUpdate()
Sintaxe
DiffUpdate()
Descrição
Solicita os registros atualizados como entrada para a próxima transformação executada.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Requesting updated records for the transformation run
DiffUpdate();
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
InitializeDiff
Declaração
void InitializeDiff(string diffId)
Sintaxe
InitializeDiff(<diffId>)
Parâmetros Obrigatórios
diffId
: Uma string que identifica exclusivamente a operação diff de outras operações diff em execução no sistema. A string deve ser a mesma para cada execução da operação para identificar a diferença corretamente.
Descrição
Inicializa uma nova sessão diff.
A string passada como diffId
deve ser diferente de todos os outros identificadores de diferença usados no sistema, mas deve ser o mesmo cada vez que a operação for executada. Se uma sessão diff já estiver em execução, uma chamada para este método falhará. Para limpar uma sessão diff antiga (como no caso de uma falha do sistema), chame a função ResetDiff()
uma vez.
Esse método normalmente é chamado no script pré-fonte da primeira operação que implementa uma comparação/sincronização.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Synchronize the order database:
InitializeDiff("Order Database Synchronization");
// Using chunked diff with the synchronizing primary keys
// of CustomerId and OrderId:
DiffKeyList("CustomerId", "OrderId");
// With sufficient memory available, increase the chunk size:
SetDiffChunkSize(100000);
// Start by processing the added records in this operation:
DiffAdd();
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
OrderedDiffKeyList
Declaração
void OrderedDiffKeyList(string k1, bool isAscending1[, string k2, bool isAscending2,... string kN, bool isAscendingN])
Sintaxe
OrderedDiffKeyList(<k1>, <isAscending1>[, <k2>, <isAscending2>,... <kN>, <isAscendingN>])
Parâmetros Obrigatórios
k1, k2,... kN
: Nomes de strings de chaves de coluna a serem usadas para identificar exclusivamente um registro em uma fonte-
isAscending1, isAscending2,... isAscendingN
: Valores booleanos para cada coluna indicando se cada coluna é classificada em ordem crescente (verdadeiro) ou decrescente (false
) -
O número de argumentos fornecidos deve ser dois ou mais e deve ser um número par.
Descrição
Define a lista de chaves usadas para identificar exclusivamente um registro na fonte e especifica a ordem de registro da chave como crescente (true
) ou descendente (false
).
Use este método (em vez do DiffKeyList
função) nos casos em que é garantido que os registros de origem estejam em uma ordem específica.
O processamento Diff é mais eficiente se os campos de origem forem ordenados sempre da mesma maneira. Nesses casos, nenhum tamanho de bloco será usado e o uso de memória não será um problema. Este método normalmente é chamado em conjunto com o método InitializeDiff
função.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
ResetDiff
Declaração
void ResetDiff(string diffId, int action)
Sintaxe
ResetDiff(<diffId>, <action>)
Parâmetros Obrigatórios
diffId
: Uma string que identifica exclusivamente a operação diff de outras operações diff em execução no sistemaaction
: Um inteiro (0 ou 1) especificando como a sessão diff deve ser reiniciada
Descrição
Reinicia uma sessão diff existente.
O action
parâmetro (0 ou 1) especifica como a sessão diff deve ser redefinida:
- 0 (Redefinir): Esquece completamente o último instantâneo e começa do início. Isso forçará o sistema a tratar todas as entradas como "adicionadas".
- 1 (Limpar): Remove todos os arquivos restantes de uma sessão diff anterior. Isso não redefine o último instantâneo; ele apenas limpa os arquivos obsoletos deixados por sessões diff antigas, com falha ou canceladas.
Este método é normalmente chamado quando algo foi alterado em um processo diff existente ou se um processo diff falhou e ficou em um estado inconsistente. Ele não deve ser chamado durante o processamento diff normal. Se nenhuma sessão diff estiver presente para isso diff_id
, nenhuma ação é realizada.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// Purge any files left over from a previous diff session,
// but keep the latest snapshot
ResetDiff("Order Database Synchronization", 1);
Nota
Para um exemplo completo incluindo outras funções, veja Capturar alterações de dados com alterações de tabela ou arquivo.
SetDiffChunkSize
Declaração
void SetDiffChunkSize(int chunkSize)
Sintaxe
SetDiffChunkSize(<chunkSize>)
Parâmetros Obrigatórios
chunkSize
: Tamanho em bytes para blocos usados durante a comparação
Descrição
Define o tamanho do bloco (em bytes) usado durante a comparação.
Um tamanho de bloco maior fará com que o sistema use mais memória, mas processará a comparação mais rápido. O padrão é 50000 bytes; se você tiver memória suficiente, poderá aumentar esse número.
Este método é normalmente chamado em conjunto com o InitializeDiff
função.
Aviso
As funções de Diff podem ser usadas apenas em um único agente privado, pois os instantâneos de comparação não são compartilhados. Não use em um grupo de agentes com mais de um agente. Eles não são compatíveis com agentes de nuvem.
Exemplos
// With sufficient memory available, increase the chunk size:
SetDiffChunkSize(100000);