Erros e regras de validação de mapeamento de Transformação no Jitterbit Integration Studio
Introdução
Os mapeamentos de Transformação devem ser válidos para que uma transformação seja válida. Esta página aborda como identificar mapeamentos inválidos e visualizar os erros de validação associados a eles, bem como como resolver erros de validação.
Erros de validação
As Transformações são tratadas da mesma forma que outros componentes do projeto ao identificar a validade do componente em uma escala de projeto. Ou seja, você pode identificar transformações inválidas na quadro de design e no painel do projeto conforme abordado em Validade do componente. Erros de validação dentro de um mapeamento são incluídos na validação de transformações.
Para que uma transformação seja válida, ela não deve ter nenhum erro de validação dentro da própria transformação. Para ser considerada válida, uma transformação deve atender a estas regras:
- Um mapeamento não pode conter referências a campos ou variáveis inexistentes.
- Um mapeamento não pode conter conflitos de tipo de dados.
- Um mapeamento deve usar uma sintaxe de script válida.
- Um nó de loop de destino não pode ter múltiplas fontes.
- Um esquema deve ser fornecido para uma atividade de origem ou destino adjacente.
Além disso, certos campos de destino podem exigir um mapeamento ou podem não permitir um mapeamento. Por exemplo, os campos unidos de uma tabela filha não podem ser mapeados para. Detalhes adicionais são fornecidos em Regras de validação mais adiante nesta página.
Para resolver esses erros, você pode identificar erros dentro da própria transformação e fazer ajustes de acordo. Mapeamentos inválidos são exibidos para um bloco de campo de destino inteiro ou para objetos mapeados individuais dentro de um bloco de campo de destino.
Campo de destino inteiro
Quando um mapeamento de campo de destino inteiro é inválido, uma linha vertical vermelha aparece ao longo do lado esquerdo do bloco do campo de destino, um O ícone de aviso é exibido no canto superior direito do campo de destino. Ao passar o mouse sobre o ícone de aviso, o motivo do mapeamento ser inválido é listado.
Este tipo de mapeamento inválido pode resultar do mapeamento de campos que não podem ser mapeados, por exemplo, ao tentar mapear para uma ID de objeto exclusiva em uma atividade Inserir do Salesforce usado como um alvo.
Quando um mapeamento de campo de destino inteiro é potencialmente inválido, uma linha vertical laranja aparece ao longo da esquerda do bloco de campo de destino. Ao passar o mouse sobre o campo, o motivo do mapeamento potencialmente inválido é listado.
Esse tipo de mapeamento inválido pode resultar da ausência de um mapeamento que pode ser necessário, por exemplo, de uma chave primária não mapeada em uma atividade de Inserção de Banco de Dados usado como um alvo.
Mapeamentos inválidos ou potencialmente inválidos também podem resultar de vários objetos (como mais de um objeto de origem ou variável) sendo mapeados para um campo de destino sem nenhuma lógica especificando como processar esses objetos.
Para resolver mapeamentos inválidos, remova o mapeamento ou abra o campo no modo script para adicionar lógica de processamento. Mapeamentos potencialmente inválidos têm a intenção de sinalizar um problema potencial, mas podem ser deixados "como estão" se você tiver determinado que o mapeamento é válido.
Para remover um mapeamento, passe o mouse sobre o campo de destino e use o Ícone Remover mapeamento.
Para abrir um campo com um mapeamento inválido no modo de script para adicionar lógica de processamento, passe o mouse sobre os campos de destino e clique em ícone Editar.
Objeto mapeado individual
Quando um objeto mapeado individual dentro de um campo de destino é inválido, o objeto mapeado é contornado em vermelho com um ícone de aviso exibido à direita:
Mapeamentos individuais podem ser inválidos se um objeto de origem mapeado não estiver mais presente após a edição de um esquema, se houver uma incompatibilidade obrigatória/opcional com a cardinalidade de um campo de destino ou se os campos de origem e destino tiverem tipos de dados incompatíveis.
O mapeamento de campos de origem e destino com tipos de dados potencialmente incompatíveis é sinalizado para todos os esquemas, independentemente de terem tipos de dados definidos, como aqueles definidos a partir de uma atividade do Salesforce ou do banco de dados, ou se tiverem apenas rótulos de tipo de dados, como aqueles definidos a partir de um arquivo de amostra ou que foram definidos manualmente (para esses tipos de esquemas, todos os campos são tratados como sequências de caracteres, independentemente de terem rótulos de tipo de dados).
Uma incompatibilidade de tipo de dados não indica necessariamente que há um problema com o mapeamento. Por exemplo, se um campo de origem com um tipo de dados inteiro for mapeado para um campo de destino com um tipo de dados string, os dados resultantes serão uma string que contém um valor numérico. Campos de origem com qualquer tipo de dados podem ser mapeados para um campo de destino com um tipo de dados string, portanto, esses mapeamentos não são sinalizados de forma alguma.
No entanto, se o inverso for verdadeiro, e um campo de origem com uma string ou outro tipo de dado for mapeado para um tipo de dado de destino incompatível, tais mapeamentos podem ser sinalizados como potencialmente incompatíveis. Campos mapeados com tipos de dados potencialmente incompatíveis são exibidos com uma borda laranja:
Ao passar o mouse, o motivo da potencial incompatibilidade é listado. Para remover o mapeamento, clique no Ícone Remover mapeamento.
Observe que a indicação de uma possível incompatibilidade de tipo de dados aparece apenas para mapeamentos simples de um objeto de origem para um campo de destino e não é exibida se o campo de destino contiver lógica de script.
Para campos de destino que são mapeados usando lógica de script, depois que o script é processado e a saída resultante é avaliada, o valor é convertido para o tipo de dados do campo de destino para o qual ele está sendo mapeado. Espera-se que o usuário saiba, com base na saída sendo convertida para o tipo de dados do campo de destino, se essa saída final é o resultado desejado.
Como exemplo, digamos que o campo de destino é um double
tipo de dados. Independentemente do tipo de dados no script, após o script ser processado, a saída final do mapeamento é convertida em um double
. Isso é ilustrado com os exemplos de script de transformação abaixo.
<trans>
1 + "string"
</trans>
O script acima é avaliado como um valor de "1string"
com um string
tipo de dados. Então, durante o processamento do mapeamento de transformação, essa saída é convertida em um double
tipo de dados. Como a saída começa com um dígito, qualquer dígito inicial seria transferido para a saída de mapeamento final, pois os números são válidos para um double
. A saída final para o mapeamento é um valor de 1
com um double
tipo de dados.
<trans>
"string" + 1
</trans>
O segundo script, acima, é avaliado como um valor de "string1"
com um string
tipo de dados. Durante o processamento do mapeamento de transformação, esta saída é convertida em um double
tipo de dados. Neste caso, porque um valor não-dígito, que não é válido para um double
, está no início do valor retornado, nenhum valor é transportado. Em vez disso, o campo de destino assume o valor padrão para um número; ou seja, a saída final para o mapeamento é um valor de 0
com um double
tipo de dados.
Em alguns casos, você pode desejar substituir o tipo de dados do campo de destino e, na verdade, transferir a saída usando um tipo de dados diferente. Para estes, você pode usar o Format
ou FormatDate
funções dentro do script de mapeamento de campo de destino. Certifique-se de que a função esteja na última declaração do script, pois o valor retornado do script sempre vem da linha final.
Regras de validação
Para que uma transformação seja válida, ela deve ser configurada corretamente. As mensagens de erro cobertas abaixo são exibidas ao visualizar os erros de validação associados à transformação como um componente do quadro de design ou painel do projeto conforme abordado em Validade do componente.
Se uma transformação não tiver sido configurada ou estiver configurada incorretamente, esta mensagem de erro de validação será retornada:
Transformation is not configured properly.
Essa mensagem aparece mais comumente quando você adicionou uma nova transformação a uma operação e ela ainda não foi configurada. Para resolver, abra a tela de configuração da transformação e configure a transformação adequadamente. Não é necessário que uma transformação contenha mapeamentos se seu esquema de destino consistir apenas em nós sem campos. Se o esquema de destino contiver campos, pelo menos um mapeamento deverá estar presente para que a transformação seja configurada corretamente.
Além disso, para que uma transformação seja válida, ela não deve ter nenhum erro de validação dentro da própria transformação. Para ser considerada válida, uma transformação deve atender a estas regras:
- Um mapeamento não pode conter referências a campos ou variáveis inexistentes.
- Um mapeamento não pode conter conflitos de tipo de dados.
- Um mapeamento deve usar uma sintaxe de script válida.
- Um nó de loop de destino não pode ter múltiplas fontes.
- Um esquema deve ser fornecido para uma atividade de origem ou destino adjacente.
Além disso, certos campos de destino podem exigir um mapeamento ou podem não permitir um mapeamento. Por exemplo, os campos unidos de uma tabela filha não podem ser mapeados para. Mapeamentos inválidos são indicados visualmente na tela de configuração de transformação, conforme abordado em Erros de validação anteriormente nesta página.
Dependendo do erro, a variação apropriada dessas possíveis mensagens de erro é retornada se esta regra não for atendida:
Mapping refers to a non-existent [source / target / variable] field $[path].
Potential data type conflict in mapping.
Target field $[node.name] [must be mapped / cannot be mapped].
Target field $[node.name] is linked to [database joins] of its parent. You cannot map a value to this element.
records: Error on line [#]: [Script validation syntax error].
Mappings of a target loop node depend on more than one source loop node.
[Source / Target] schema must be provided.
Para resolver, tente estas dicas de solução de problemas:
- Se você tiver referências a campos inexistentes, conflitos de tipo de dados ou outros mapeamentos inválidos, localize o mapeamento inválido e desmapeie-o ou verifique o esquema para garantir que todos os campos sejam contabilizados e tenham tipos de dados compatíveis. Se você tiver referências a variáveis inexistentes, verifique para garantir que a variável existe.
- Se você tiver erros de validação de script, verifique o mapeamento e faça ajustes dentro do script. Mensagens de validação também são exibidas abaixo de cada script relatado linha por linha. Ou seja, após resolver um erro em uma linha, erros de sintaxe adicionais para resolver podem ser relatados para linhas subsequentes. Continue fazendo alterações até que a mensagem indique que o script é válido.
- Se você tiver um nó de loop de destino que depende de mais de um nó de loop de origem, siga as instruções fornecidas em Mapear de uma origem de várias instâncias para um destino de instância única em Estruturas de dados.
- Se você tiver atividades de origem ou destino adjacentes à transformação, certifique-se de fornecer um esquema para cada uma delas. Os esquemas podem ser fornecidos de dentro da atividade durante sua configuração (veja a documentação de cada conector), ou por definir um esquema diretamente de dentro da transformação.
Além disso, se uma transformação for inválida por algum outro motivo que não possa ser facilmente determinado, esta mensagem de erro será retornada:
Transformation is invalid.