04-25-2019 02:43 PM - editado 04-30-2019 01:45 PM
Embora a ferramenta Junção seja uma das ferramentas mais usadas no Alteryx, ela também é uma das mais mal compreendidas. Isso é ainda mais verdadeiro se um usuário novo nunca tiver usado junções em qualquer outra plataforma de manipulação de dados ou se estiver unindo grandes tabelas e não estiver monitorando os registros dentro dos campos que estão sendo unidos.
Assim, vou passar por três diferentes casos que você pode encontrar de junção de duas tabelas por um campo em comum e o que esperar em seus resultados.
O fluxo de trabalho que vou analisar (anexado neste artigo) é um fluxo de trabalho que criei na versão 10.5 e contém os mesmos elementos visuais ilustrados abaixo.
Caso nº 1: junção por campos em que ambos possuem registros exclusivos
Esse é o caso mais simples e mais fácil de entender. Nesse caso, estamos fazendo a junção pelos campos chamados “Fruit” nas duas entradas. A junção alinhará os registros das tabelas se os registros nos campos “Fruit” corresponderem.
Portanto, a tabela "unida" esperada (saída J) deve ficar assim:
Bastante simples
Caso nº 2: junção por campos em que apenas um possui registros exclusivos
Para esse caso, temos dois registros para "Banana" em nossa entrada à esquerda. Isso significa que o registro com “Banana” na entrada à direita fará correspondência duas vezes e será anexado aos dois registros da entrada à esquerda. Nossa saída deve ficar assim:
Caso nº 3: junção em campos em que ambos possuem registros não exclusivos
Esse caso pode ser o mais difícil de entender, mas esperamos que após analisá-lo visualmente e matematicamente, você entenderá porque isso faz sentido e o que você pode fazer para evitar registros indesejados.
Nesse caso, temos dois registros em “Fruit” e ambos contêm “Banana” nas duas tabelas. Aqui acontece o mesmo que no caso acima, exceto que agora acontece duas vezes porque temos dois registros da entrada à direita que fazem correspondência com dois registros da entrada à esquerda. Então, nossa saída terá um total de 4 registros contendo a palavra "Banana". A saída deve ficar assim:
Analisando matematicamente o Caso nº 3 e o Caso nº 2, você pode entender quantos registros obterá para cada instância de registro multiplicando a quantidade de registros que aparecem nas duas tabelas. No exemplo acima, já que estamos fazendo a junção em “Fruit” e vemos o registro Banana duas vezes nas duas tabelas, você pode pensar em 2 bananas x 2 bananas = 4 bananas.
Se adicionarmos outra linha na nossa entrada à direita, da seguinte forma:
Temos agora 3 x 2, então devemos esperar 6 combinações de registros com “Banana” no campo “Fruit”
Se você fez a junção de duas tabelas e obteve mais registros do que esperava, essa é causa mais provável do problema. Se alguém não entender os casos apresentados acima, isso poderia constranger qualquer banana (trocadilho intencional). Como práticas recomendadas, eu seguiria estes dois passos antes de unir quaisquer tabelas:
1º: verifique se há registros duplicados nas suas tabelas.
Para o caso acima, como temos três duplicatas na nossa entrada à direita, podemos utilizar a ferramenta Exclusivo e nos livrar delas.
A saída será exatamente a mesma do Caso nº 2, já que existirá apenas um registro de “Banana” após a ferramenta Exclusivo.
2º: verifique se fazer a junção por múltiplos campos é a opção mais apropriada.
Exemplo: temos a Tabela 1 com dois registros contendo "Banana" em "Fruit" e dois registros contendo "X" em "Store ID", além do "FruitID" que é um identificador para cada fruta em "Fruit". A Tabela 2 tem os mesmos campos “Fruit” e “Store ID”, mas agora temos um campo “Store employees” associado ao “Store ID”.
Tabela 1 Tabela 2
Queremos todos esses dados juntos para que tudo fique bem associado. De forma ideal, deveríamos ter somente quatro registros saindo da nossa junção ao colocar os campos de funcionários da loja (Store employees) e ID da fruta (FruitID) em uma tabela. No entanto, se fizéssemos a junção usando apenas um campo em comum, seja ele "Store ID" ou "Fruit", obteríamos combinações e os dados não seriam alinhados corretamente. Veja abaixo.
Junção em “Fruit”
Nesse caso, obtemos dois registros em que nossos IDs de loja (StoreID) não correspondem.
Junção em “StoreID”
Nesse caso, obtemos dois registros em que nossas frutas (Fruit) não correspondem.
Para corrigir isso, configuraremos nossa junção para fazer correspondência em ambos os campos Fruit e StoreID.
Após executar, a tabela "unida" deve ficar assim:
Ao fazer a junção usando múltiplos campos, garantimos que os registros de ambos os campos façam correspondência antes da junção.
Uma maneira fácil de entender isso é imaginar que "Fruit" e "StoreID" estão sendo combinados. Agora, de repente, temos registros únicos porque temos Banana X e Banana Y como duas entidades exclusivas e nossa junção se torna uma junção de 1 registro x 1 registro.