Ir para o conteúdo

Processamento de Esquema

Introdução

Ao usar um esquema definido pelo usuário, em determinadas circunstâncias os dados poderão ser convertidos durante o processamento. Esta página descreve quando e como os dados são convertidos.

Nomes de Campos e Nós

Os nomes de campos e nós são convertidos em namespaces válidos seguindo o padrão XML. Para referência, consulte NCNameChar para os caracteres permitidos conforme definido pelo W3C.

Nomes com Espaços

Os espaços incluídos como parte de um campo ou nome de nó são substituídos por um sublinhado (_).

Caracteres Especiais em Esquemas

Caracteres especiais em esquemas definidos pelo usuário são processados de forma diferente dependendo do tipo de esquema. Essas conversões são limitadas apenas às estruturas do esquema e não afetam os dados reais.

O tratamento de caracteres especiais depende do tipo de esquema, conforme descrito na tabela abaixo. Caracteres especiais incluem, mas não estão limitados a estes caracteres não alfanuméricos:

. _ - $ # @ ?

O suporte para caracteres especiais do Cloud Studio é limitado pelo suporte para caracteres especiais do próprio tipo de esquema. Por exemplo, incluindo um $, #, @, ou ? em um campo de esquema XML ou nome de nó não é suportado porque esses caracteres especiais não são suportados por XML.

Ao espelhar um esquema fornecido por um banco de dados, quaisquer caracteres especiais em um campo de esquema ou nome de nó são substituídos por sublinhados, conforme necessário para criar um esquema XML válido.

Tratamento de Caracteres Especiais em Esquemas Personalizado plano ou Hierárquico Esquema Esquema CSV carregado Esquema JSON carregado Esquema XML carregado
Os caracteres especiais no lado de origem ou de destino de uma transformação são retidos como estão verificar verificar
Os caracteres especiais no lado de origem ou de destino de uma transformação são substituídos por um ponto de interrogação (?) verificar
Os caracteres especiais no lado de origem ou de destino de uma transformação são substituídos por um sublinhado (_) verificar
Caracteres especiais em um script em um campo de destino em uma transformação são substituídos por um ponto de interrogação (?) verificar verificar verificar

Arquivos CSV com Cabeçalhos

Se fornecer um arquivo CSV com uma linha de cabeçalho como um arquivo de esquema de amostra, estas regras serão aplicadas para gerar nomes de colunas:

  • Os caracteres especiais são substituídos por um ponto de interrogação (?).
  • Os espaços são substituídos por um sublinhado (_).
  • Se o nome de uma coluna estiver em branco, ele será substituído por f1, f2, f3, e assim por diante.
  • Se o nome de uma coluna começar com um número, ele será prefixado com um sublinhado (_).
  • Se um nome de coluna for repetido, ele será anexado com 2, 3, 4, e assim por diante.

Tipos de Dados

Estas seções descrevem o suporte do Jitterbit para determinados tipos de dados. Para todos os tipos de dados suportados em Jitterbit Scripts, consulte Tipos de dados em Jitterbit Script.

Tipos de Dados de Precisão Ilimitada

Tipos de dados de precisão ilimitada, como XML decimal, são convertidos em tipos de dados duplos e, portanto, têm um limite de precisão imposto a eles que pode, como resultado, truncar os dados.

O limite de precisão está dentro da faixa dos valores mínimo e máximo de um comprimento assinado, que é –2.147.483.648 a 2.147.483.647. Se estiver fora desse intervalo, considere usar um tipo de dados string para evitar o truncamento de dados.

Tipos de Dados Não Primitivos

Os tipos de dados primitivos boolean, date, double, float, integer, long, e string e o tipo de dados não primitivo decimal são suportados em todos os tipos de esquema. Ao criar ou editar um flat ou hierárquico ou editar qualquer esquema carregado em uma transformação, esses tipos de dados estarão disponíveis para escolha na lista suspensa Tipo. Para novos esquemas personalizados, outros tipos de dados não primitivos, como datetime não são suportados.

No entanto, outros tipos de dados não primitivos são suportados para esquemas que são gerados automaticamente a partir de um esquema gerado pelo conector ou foram espelhados de tal esquema. Depois de gerados, esses esquemas também podem ser editados manualmente no editor de esquema customizado. Se o esquema contiver quaisquer tipos de dados não primitivos, eles também serão listados no menu suspenso Tipo ao editar esse esquema.

Valores Nulos

Os campos que possuem um valor nulo são incluídos no esquema de dados resultante, apesar de não terem dados. Como também não possuem tipo de dados definido, esses campos são tratados como tendo um tipo de dados string.

Namespaces de Esquema XML

Namespaces em esquemas XML são suportados. Se mais de um namespace for usado em um esquema XML, o Harmony Agente converte o esquema XML em vários arquivos XSD durante o processamento.

Solução de Problemas

Devido a alterações feitas nas versões Harmony 10.25 e 10.27, você poderá observar um comportamento diferente em projetos criados antes dessas versões. Essas alterações afetam esquemas XML que foram espelhados e têm maior probabilidade de impactar mapeamentos que usam funções XML que envolvem namespaces, como o SelectNodes função. Neste caso, os mapeamentos que antes eram válidos podem agora ser inválidos com um erro relacionado à sintaxe da função XML.

Compare as diferenças entre este exemplo de esquema XML espelhado anterior à versão 10.25 com um criado na versão 10.25 ou posterior:

esquema xml anotado

  • Exemplo de esquema XML anterior à versão 10.25: Em projetos criados antes da versão 10.25, os esquemas XML espelhados usam o prefixo de namespace padrão para documentos XML: xsi. Conforme mostrado destacado em vermelho acima, xmlns:xsi declara o namespace e os campos não mapeados são exibidos no esquema com o atributo xsi:nil="true".
  • Exemplo de esquema XML na versão 10.25 e posterior: Em projetos criados na versão 10.25 e posterior e destacados em verde acima, os esquemas XML espelhados usam o prefixo de namespace ns para declarar um namespace qualificado. Os campos não mapeados não são exibidos no esquema.

Nas versões 10.25 e 10.26, se você importou um projeto com um esquema XML espelhado criado antes da versão 10.25, o esquema foi reprocessado e alterado para usar o prefixo de namespace qualificado.

A partir da versão 10.27, os projetos importados cujos esquemas XML espelhados foram criados antes da 10.25 retêm o prefixo de namespace do esquema XML padrão para que o esquema seja idêntico àquele quando foi criado. Essa alteração significa que quaisquer projetos anteriores à 10.25 importados para a versão atual deverão funcionar conforme projetados originalmente.

Para forçar uma atualização de um esquema XML anterior à 10.25 para usar o prefixo de namespace atualizado, você pode gerar novamente o esquema atualizando-o ou reconfigurando a atividade que fornece o esquema.

Tags de Fechamento Automático do Esquema XML

Tags de fechamento automático em elementos em esquemas XML são suportadas com alguma manipulação do XML de amostra usado para gerar o esquema. Para enviar o elemento XML na payload sem um valor mapeado, você pode usar uma função Jitterbit e uma variável Jitterbit conforme descrito abaixo.

Manipule o XML de Amostra

A manipulação é necessária quando um arquivo de amostra XML usa notação abreviada para uma tag de abertura e fechamento em um elemento como este:

<tag/>

Se tal abreviação for usada diretamente em um esquema XML, o nó não poderá ser mapeado quando usado como esquema de destino de uma transformação.

Para resolver, manipule o XML de amostra que está sendo usado para gerar o esquema para expandir as tags de abertura e fechamento ao redor do elemento e forneça um valor de amostra para que um tipo de dados seja atribuído ao elemento:

<tag>example</tag>

O elemento aparecerá então como um campo no esquema XML e, quando usado como esquema de destino em uma transformação, você poderá mapear para esse campo.

Mapear para o Campo XML

Se você não possui um objeto ou variável de origem para mapear para o campo de destino, você pode colocar a função Jitterbit Null no script de transformação para usar como valor mapeado:

<trans>
Null()
</trans>

A montante da transformação usando o esquema XML, defina uma destas variáveis Jitterbit (dependendo de qual for apropriada ao seu caso de uso) para controlar o que é enviado: