Free Trial

Base de conhecimento

Como a ferramenta Junção funciona e por que você pode obter mais registros do que o esperado

Community_Admin
Alteryx
Alteryx
Created

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

J1.jpg

 

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:

 

joinedtable1.jpg

Bastante simples

 

Caso nº 2: junção por campos em que apenas um possui registros exclusivos

J2.jpg

 

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:

 

joinedtable2.jpg

 

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.

 

J3.jpg

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:

 

joinedtable3.jpg

 

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:

leftinputtriple.jpg

 

Temos agora 3 x 2, então devemos esperar 6 combinações de registros com “Banana” no campo “Fruit”

 

joinedtable4.jpg

 

 bananas.jpg

 

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.

unique tool.jpg

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”.

 

 Left input.jpg                                        store employees.jpg

                        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”

mismatchfruit.jpg

 

Nesse caso, obtemos dois registros em que nossos IDs de loja (StoreID) não correspondem.

 

Junção em “StoreID”

mismatch2.jpg

 

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.

 

joinconfig.jpg

 

Após executar, a tabela "unida" deve ficar assim:

goodmatch.jpg

 

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.

 

joinmatchmulti.jpg

 

 

Contribudores
Rótulos