Ir para o conteúdo

Validade do Mapeamento de Transformação

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 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 no 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 conter erros de validação na 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 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, determinados campos de destino podem exigir um mapeamento ou podem não permitir um mapeamento. Por exemplo, os campos associados de uma tabela filho não podem ser mapeados. Detalhes adicionais são fornecidos em Regras de validação mais adiante nesta página.

Para resolver esses erros, você pode identificar erros na própria transformação e fazer os ajustes necessários. 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 todo o mapeamento do campo de destino é inválido, uma linha vertical vermelha aparece à esquerda do bloco do campo de destino, um ícone de aviso warning é 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.

Esse tipo de mapeamento inválido pode resultar do mapeamento de campos que não podem ser mapeados, por exemplo, ao tentar mapear para um ID de objeto exclusivo em uma atividade de inserção do Salesforce usado como alvo.

campo de destino inválido

Quando todo o mapeamento do campo de destino é potencialmente inválido, uma linha vertical laranja aparece à esquerda do bloco do campo de destino. Ao passar o mouse sobre o campo, o motivo do mapeamento ser potencialmente inválido é listado.

Este tipo de mapeamento inválido pode resultar da ausência de um mapeamento que possa 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 alvo.

campo de destino potencialmente inválido

Mapeamentos inválidos ou potencialmente inválidos também podem resultar de vários objetos (como mais de um objeto ou variável de origem) sendo mapeados para um campo de destino sem qualquer lógica especificando como processar esses objetos.

Para resolver mapeamentos inválidos, remova o mapeamento ou abra o campo no modo de script para adicionar lógica de processamento. Os mapeamentos potencialmente inválidos destinam-se a sinalizar um problema potencial, mas podem ser deixados "como estão" se você tiver determinado que o mapeamento é válido.

Para remover um mapeamento, clique no ícone de exclusão delete 2 no objeto mapeado.

Para abrir um campo com mapeamento inválido no modo script para adicionar lógica de processamento, clique no ícone de aviso warning para mostrar o ícone de adição aviso e opções de menu. Para um campo com um mapeamento potencialmente inválido, o ícone de adição warning já está presente. Clique em Adicionar Script para entrar no modo de script.

campo de destino script de adição inválido

Objeto Mapeado Individual

Quando um objeto mapeado individual dentro de um campo de destino é inválido, o objeto mapeado é destacado em vermelho com um ícone de aviso warning exibido à direita:

objeto inválido do campo de destino

Clique no ícone de aviso aviso para exibir o motivo do mapeamento ser inválido. Para remover o mapeamento, clique no ícone de exclusão warning ou Remover.

campo de destino objeto inválido pairar

Os mapeamentos individuais poderão 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 de destino tiverem tipos de dados incompatíveis.

O mapeamento de campos de origem e de destino com tipos de dados potencialmente incompatíveis é sinalizado para todos os esquemas, independentemente de eles terem tipos de dados definidos, como aqueles definidos em uma atividade do Salesforce ou do banco de dados, ou se eles tiverem apenas rótulos de tipo de dados, como aqueles definidos de um arquivo de amostra ou que foram definidos manualmente (para esses tipos de esquemas, todos os campos são tratados como strings, 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. Os 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.

incompatibilidade de tipo de dados do campo de destino

No entanto, se o inverso for verdadeiro e um campo de origem com uma string ou outro tipo de dados for mapeado para um tipo de dados de destino incompatível, tais mapeamentos poderão ser sinalizados como potencialmente incompatíveis. Os campos mapeados com tipos de dados potencialmente incompatíveis são exibidos com uma borda laranja:

incompatibilidade de incompatibilidade de tipo de dados do campo de destino

Ao passar o mouse, o motivo da possível incompatibilidade é listado. Para remover o mapeamento, clique no ícone de exclusão delete 2.

foco de incompatibilidade de incompatibilidade de tipo de dados do campo de destino

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 mapeados usando lógica de script, depois que o script for processado e a saída resultante for avaliada, o valor será convertido no tipo de dados do campo de destino para o qual está sendo mapeado. Espera-se que o usuário saiba, com base na saída que está sendo convertida para o tipo de dados do campo de destino, se essa saída final é o resultado desejado.

Por exemplo, digamos que o campo de destino seja um double tipo de dados. Independentemente do tipo de dados no script, após o processamento do script, a saída final do mapeamento é convertida em um double. Isso é ilustrado com os exemplos de script de transformação abaixo.

Transformation Script 1
<trans>
1 + "string"
</trans>

O script acima avalia 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 final do mapeamento, já que os números são válidos para um double. A saída final do mapeamento é um valor de 1 com um double tipo de dados.

Transformation Script 2
<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 sem dígito, que não é válido para um double, estiver no início do valor retornado, nenhum valor será transferido. Em vez disso, o campo de destino assume o valor padrão de um número; ou seja, a saída final do 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 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 do campo de destino. Certifique-se de que a função esteja na última instruçã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 abordadas 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 mal configurada, estas mensagens de erro de validação serão retornadas:

Transformation is not configured properly.

Esta mensagem aparece mais comumente quando você adiciona 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 conter erros de validação na 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 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, determinados campos de destino podem exigir um mapeamento ou podem não permitir um mapeamento. Por exemplo, os campos associados de uma tabela filho não podem ser mapeados. Mapeamentos inválidos são indicados visualmente na tela de configuração da transformação, conforme abordado em Erros de validação anteriormente nesta página.

Dependendo do erro, a variação apropriada destas possíveis mensagens de erro será 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, encontre 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 se a variável existe.
  • Caso tenha 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, depois de resolver um erro em uma linha, erros de sintaxe adicionais a serem resolvidos poderão ser relatados nas 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 múltiplas instâncias para um destino de instância única em Estruturas de dados.
  • Se você tiver atividades de origem ou de destino adjacentes à transformação, certifique-se de fornecer um esquema para cada uma. Os esquemas podem ser fornecidos dentro da atividade durante sua configuração (consulte a documentação de cada conector), ou por definir um esquema diretamente dentro da transformação.

Além disso, se uma transformação for inválida por algum outro motivo que não possa ser determinado imediatamente, esta mensagem de erro será retornada:

Transformation is invalid.