Ir para o conteúdo

Estruturas de dados no Jitterbit Integration Studio

Introdução

Estruturas de dados podem ser fornecidas como esquemas durante a configuração da atividade ou podem ser definidos dentro da transformação em si. Quando estruturas de dados são fornecidas em uma atividade, os esquemas são herdados pela transformação, usando a atividade como origem ou destino na operação. Depois que os esquemas de origem e destino de uma transformação são definidos, você cria mapeamentos de transformação entre os esquemas de origem e destino para definir como os dados devem ser processados.

Para obter informações sobre como resolver certos erros de execução de operação causados por estruturas de dados, consulte Solução de problemas de operação.

Tipos de estrutura de dados

No Harmony, os esquemas de origem e destino podem usar estruturas de dados que são consideradas planas ou hierárquico.

Estrutura plana

Uma estrutura de dados plana consiste em um ou mais campos e registros individuais em uma estrutura bidimensional. Exemplos incluem arquivos CSV, arquivos XML simples e tabelas de banco de dados individuais. Uma estrutura de dados plana também é chamada de estrutura de arquivo plano.

Example Flat Structure in XML Format
<customer>
    <id>10123</id>
    <name>ABC Co.</name>
    <street>1 Main St.</street>
    <city>Anytown</city>
    <state>NY</state>
    <zip>12345</zip>
</customer>

Estrutura hierárquica

Uma estrutura de dados hierárquica possui um ou mais relacionamentos pai-filho ou aninhados entre campos e registros em uma estrutura complexa. Uma estrutura de dados hierárquica é às vezes chamada de estrutura relacional, multinível, dados complexos_ ou árvore.

Example Hierarchical Structure in XML Format
<customer>
    <id>10123</id>
    <name>ABC Co.</name>
        <addresses>
            <address>
                <street>1 Main St.</street>
                <city>Anytown</city>
                <state>NY</state>
                <zip>12345</zip>
            </address>
            <address>
                <street>1 Time Square</street>
                <city>New York City</city>
                <state>NY</state>
                <zip>54321</zip>
            </address>
        </addresses>
</customer>

Exibição de estruturas de dados

As estruturas de dados são exibidas em formato de árvore, que pode ser expandida e recolhida para mostrar a árvore inteira ou apenas uma parte dela.

Cada árvore consiste em nós e campos, onde campos dentro da estrutura de dados de origem podem ser mapeados para campos dentro da estrutura de dados de destino.

Os nós têm um triângulo de divulgação à esquerda do nome do nó, que é usado para recolher ou expandir o nó. Por padrão, os nós são expandidos em até 8 níveis de profundidade para esquemas com 750 nós ou menos e em até 5 níveis de profundidade para esquemas com mais de 750 nós. Todos os nós abaixo de um nó de destino podem ser expandidos de uma só vez usando a opção de menu de ações do esquema Expandir todos os nós abaixo deste nó (consulte Nós de destino no modo de mapeamento). Se você expandir ou recolher nós, o Integration Studio lembrará o último estado de expansão que você estava usando na próxima vez que acessar a transformação.

Uma vez expandidos, os nós exibem todos os nós filhos e campos contidos. Os nós podem ser considerados pastas com nós filhos como subpastas. Os campos estão contidos nos nós e são listados com seu tipo de dado (boolean, integer, double, binary, string).

Por exemplo, na estrutura alvo mostrada abaixo, o nó json inclui o nó filho item, que contém os campos employeeId, name, e title. O nó item também contém o nó filho employeeDetails, que contém os campos salary, isWorking, e status.

estrutura de dados de destino

Exibição de campos mapeados

Um mapeamento de transformação consiste em campos ou nós de destino e seus scripts correspondentes. Esses scripts podem conter referências a campos ou nós de origem ou a componentes do projeto, usar funções ou conter outra lógica de script válida. Um mapeamento não inclui campos de destino que não sejam mapeados.

Quando objetos de origem e variáveis são definidos no campo de destino, eles aparecem como blocos dentro do campo de destino. O campo de destino mapeado é exibido com uma linha vertical roxa ao longo do lado esquerdo do bloco do campo de destino:

objetos de origem do campo de destino

Quando você está no modo de mapeamento e um esquema de origem e um de destino estão visíveis na tela, uma linha cinza claro visual mostra a conexão com o objeto de origem quando você passa o mouse sobre um campo de origem ou de destino.

linhas de destino

A linha preta sólida mostrada na imagem acima é explicada na próxima seção, Nós de loop.

O lado de destino do mapeamento também indica se um campo possui valores padrão (destacados em vermelho na imagem abaixo) ou junções (destacadas em verde na imagem abaixo). Por exemplo, esta transformação insere dados em um banco de dados cujo id os campos são auto-incrementados e cujos created_at campo é definido como igual à hora atual por padrão. Ele também mostra que a tabela filha qa_employee foi unido no campo id à sua tabela pai qa_restaurant:

valores padrão do campo de destino anotados pp

Se um nó recolhido contiver mapeamentos de campos de destino, esse nó será mostrado em negrito para indicar que contém mapeamentos:

nó de destino recolhido

Nós de loop

Um nó de loop é um nó de origem ou destino com valores de dados repetidos, como itens de linha em uma fatura ou um conjunto de registros de clientes.

Quando os campos dos nós do loop são mapeados, uma linha preta sólida do iterador aparece automaticamente, indicando que o processo de transformação percorrerá o conjunto de dados de origem. A localização das linhas do iterador geradas depende da multiplicidade dos nós do loop de origem correspondentes.

Uma transformação pode ter zero ou mais linhas de iterador. Quando há várias linhas de iterador, a precedência é dada de cima para baixo na estrutura de destino.

Para alternar a exibição de uma linha individual do iterador, clique diretamente no círculo mais próximo do nó de destino:

alternância de nó de loop

A linha do nó do loop individual se torna um esboço laranja que, quando clicado novamente, exibe a linha completa:

esboço do nó do loop

Exemplo

Como exemplo de mapeamento de nó de loop, considere a seguinte estrutura de origem hierárquica contendo um nó de origem de nível superior (item) com campos que fornecem informações sobre uma empresa. Um nó de origem filho, locationDetails, inclui uma matriz (json$item.locationDetails$item.) de objetos com campos para múltiplas localizações de lojas dentro de uma empresa. Tanto o nó pai quanto o nó filho são considerados nós de loop porque os dados podem conter múltiplos registros de empresas com múltiplos registros de localização de lojas para cada empresa.

Agora, considere que esses dados estão sendo mapeados para uma estrutura de destino plana, resultando em um registro para cada localização de loja. Conforme você mapeia os campos, uma linha iteradora aparece automaticamente conectando os nós de loop de origem e destino. Essa linha indica que o destino fará o loop tantas vezes quantos conjuntos de dados forem repetidos na origem ou, neste exemplo, fará o loop por cada registro de localização de loja para cada empresa.

nó de loop

Mapear de uma fonte de múltiplas instâncias para um destino de instância única

Quando o alvo gerado nó de loop depende de mais de um nó do loop de origem, talvez seja necessário resolver uma incompatibilidade de ocorrência com o mapeamento.

Se a estrutura de dados de origem for uma matriz de múltiplos objetos e estiver sendo mapeada para uma estrutura de dados de destino com um único objeto, esta caixa de diálogo será exibida:

incompatibilidade de ocorrência

Para usar a primeira instância da fonte no mapeamento, selecione Sim para inserir automaticamente um símbolo de hash (#) no caminho de referência do elemento de dados. Isso significa que apenas o primeiro registro será mapeado. Por exemplo, dado o mapeamento a seguir, apenas o primeiro registro de cliente na matriz é mapeado para a estrutura de destino que contém apenas um único cliente. Observe que cada campo de destino mapeado agora contém um script, conforme indicado pelo ícone de script.

resolução de instância do nó de loop

Ao alternar para o modo de script para qualquer campo mapeado, você verá que um #1 foi adicionado dentro do caminho do objeto de origem mapeado para indicar que a primeira instância está mapeada.

mapeamento de instâncias

Se não quiser que a primeira instância da fonte seja usada, você pode especificar outra lógica usando as funções de resolução de instância (consulte Funções de instância).

Normalização de dados

Se você estiver mapeando dados de uma estrutura plana para uma estrutura hierárquica, os dados podem precisar ser normalizados antes de serem transformados.

Por padrão, o Harmony usa um algoritmo de normalização para construir a árvore de destino. Isso converterá a estrutura plana da fonte em uma estrutura de fonte hierárquica que pode então ser mapeada para a estrutura de destino hierárquica.

Na estrutura de destino, o elemento raiz e todos os elementos de múltiplas instâncias sob a raiz são usados para criar a estrutura dos elementos de origem secundários. Os atributos (ou campos) desses elementos de origem secundários são elementos de dados simples que são então usados nos mapeamentos do elemento de destino correspondente.

Com a estrutura de origem definida corretamente, o processo de normalização é simplificado para combinar nós com os mesmos pais.

Existem três opções para normalização:

  • Normalização Completa: Todos os elementos com o mesmo pai e todos os campos são reduzidos a um único elemento. (Este é o padrão.)
  • Normalização parcial: O mesmo que normalização completa, exceto que os filhos mais baixos não são normalizados.
  • Sem normalização: Cada registro plano cria uma ramificação de elementos; nenhuma redução de elementos é realizada ao criar a estrutura de origem hierárquica.

É possível que a estrutura hierárquica contenha um único nó de instância. Nesse caso, apenas o primeiro elemento dessa raiz será mantido, e registros simples que conflitarem com esse nó de dados raiz serão ignorados.

Para desabilitar a normalização, defina a variável Jitterbit jitterbit.transformation.disable_normalization para true (ver Variáveis Jitterbit de Transformação).

Mapeamento de instância e múltiplo

O mapeamento de Transformação é o processo usado para definir a relação de dados entre entradas e uma saída de dados resultante. Dependendo dos tipos de estrutura de dados utilizados, o mapeamento de transformação pode ser descrito como mapeamento de instâncias ou mapeamento múltiplo.

Mapeamento de instância

Mapeamento de instâncias descreve quando o mapeamento de uma instância de destino depende possivelmente de mais de uma instância de uma fonte. O mapeamento de instâncias pode ser plano-para-plano (um-para-um) ou hierárquico-para-plano (muitos-para-um).

Mapeamento múltiplo

O mapeamento múltiplo descreve o mapeamento de duas estruturas de dados hierárquicas ou o mapeamento de uma única estrutura plana que é, na verdade, hierárquica por natureza, com seus segmentos inferiores contendo múltiplos conjuntos de valores, como pares nome/valor. O mapeamento múltiplo pode ser hierárquico para hierárquico (muitos para muitos) ou plano para hierárquico (um para muitos).

Exemplos

Exemplos de situações para mapeamento de instâncias e múltiplos podem ser encontrados na documentação do Design Studio:

Embora esses exemplos sejam para o Design Studio, os mesmos conceitos podem ser aplicados no Integration Studio.

Para módulos de treinamento prático com exemplos de mapeamento de arquivos de banco de dados, texto e XML simples e complexos, consulte Introdução ao Jitterbit Integration Studio.

OSZAR »