Aplicação de padrões de mapeamento de dados
O Altova MapForce inclui componentes de mapeamento poderosos que correspondem a padrões de design para requisitos de transformação de dados. Analisar um desafio de mapeamento de dados desde o início e seguir algumas diretrizes simples pode revelar padrões de mapeamento de dados que ajudam a simplificar a criação do design de mapeamento e levam a uma solução otimizada. O projeto "MapForce Examples" fornece ficheiros de mapeamento de exemplo e conjuntos de dados que ilustram muitos padrões comuns de mapeamento de dados. Rever estes exemplos e executá-los com o motor de execução integrado do MapForce é outra forma eficaz de ajudar a selecionar o melhor padrão para o seu próprio projeto.

Correspondência exata vs. correspondência condicional
Primeiramente, determine se as suas entradas e saídas têm uma relação direta e inequívoca, ou se é necessário analisar uma condição mais complexa, como intervalos "de...a..." ou uma estrutura condicional "se...então...senão".
A correspondência exata permite que você defina o seu requisito através de uma tabela simples de duas colunas, e o algoritmo "procura uma correspondência exata do valor de entrada fornecido na coluna da esquerda e utiliza o valor correspondente na mesma linha, na coluna da direita". Note que os elementos na coluna da esquerda devem ser todos únicos, enquanto podem existir valores duplicados na coluna da direita.

Exemplos de correspondência exata incluem a conversão de nomes de meses para números, ou a transformação de ISBNs em títulos de livros.
Opções de correspondência exata
Se o número de entradas na tabela for constante e relativamente pequeno (por exemplo, até 20, ou, em casos excecionais, até 200), utilize um componente de mapeamento de valores. Exemplos típicos incluem a conversão de nomes de meses para números, ou a conversão de códigos para outros códigos (por exemplo, "F" para "XX" e "M" para "XY").
Pode até mesmo renomear os nomes das colunas de entrada e resultado do componente "value-map". Na janela de propriedades do componente "value-map", basta dar um duplo clique no nome "input" ou "result" (ou clicar no ícone de lápis) e começar a escrever. Isto facilita a identificação da função de vários componentes "value-map" no mapeamento.

O exemplo MapArticle.mfd demonstra a utilização do componente de mapeamento de valores.
Por vezes, somos questionados sobre a ausência de uma opção que permita passar um valor de entrada desconhecido para a saída sem qualquer alteração. A resposta é que isso não funcionaria se os tipos de dados nas partes de entrada e saída fossem diferentes, como no caso de uma conversão de um número inteiro para uma cadeia de caracteres, como demonstrado acima.
A solução aqui é deixar a opção "Otherwise" desmarcada (o mapeamento de valores de uma entrada desconhecida irá, então, retornar uma sequência vazia) e utilizar a função "substitute-missing" da biblioteca de funções principais na saída, para substituir a sequência vazia pelo valor de entrada original.
Tabelas de consulta maiores
Para um grande número de entradas ou tabelas de pesquisa que se alteram frequentemente, a utilização de uma base de dados é a melhor solução. Isto significa que os valores reais da tabela de pesquisa não fazem parte do mapeamento, mas são armazenados numa base de dados. Para implementar este padrão, adicione um componente de base de dados e um componente SQL-WHERE ao mapeamento. O exemplo DB_PhoneList.mfd ilustra esta estratégia.
Se não for possível utilizar uma base de dados e o número de registos não for muito elevado, pode também usar qualquer outro componente em vez disso, por exemplo, XML ou CSV, juntamente com um componente de filtro, como se pode ver em dois exemplos no ficheiro CompletePO.mfd. No entanto, esta solução pode ser mais lenta em tempo de execução do que utilizar uma base de dados com a cláusula WHERE.
Para algumas funcionalidades, poderá até mesmo ser necessário invocar um serviço web para procurar valores. Os exemplos BookISBNConvertWS.mfd e CurrencyConverter.mfd ilustram a utilização de um serviço web para pesquisa de valores.

Correspondência condicional
Se precisar de condições mais complexas do que uma correspondência exata, como verificar intervalos de valores de entrada, utilize o componente "se-senão", como demonstrado no exemplo "ClassifyTemperatures.mfd".

Os sinais de mais vermelhos no componente "se-senão" permitem adicionar mais testes, cada um baseado numa função lógica diferente. O campo "caso contrário" permite definir o resultado num caso em que nenhum dos testes lógicos é verdadeiro.
Mapeamentos complexos e reutilização de componentes
Se a sua necessidade de transformação de dados envolve múltiplas entradas e saídas, pode facilmente incluir vários mapeamentos de valores e componentes "se-então" num único processo de transformação.
Pode duplicar qualquer um dos componentes descritos acima, utilizando a função de copiar e colar, seja dentro de um único projeto ou entre diferentes ficheiros de configuração. Também pode reutilizar qualquer uma das soluções descritas aqui, encapsulando-as numa função definida pelo utilizador. Pode guardar as suas próprias funções numa biblioteca de funções personalizadas para as aplicar posteriormente em outros projetos ou partilhá-las com colegas.
Descubra por si mesmo como é fácil aplicar os padrões de mapeamento de dados do MapForce nos seus próprios projetos de transformação de dados! Descarregue um período de teste gratuito de 30 dias da MapForce.