Na pasta de trabalho Tableau Prep "duplicates from union.tfl", "Pedidos de janeiro" é o primeiro relatório de pedidos em janeiro. A tabela "Pedidos de janeiro (correções)" é um relatório liberado posteriormente com alguns novos pedidos, mas também com correções em pedidos que já existem em "Pedidos de janeiro".Quando as linhas das duas tabelas são unidas, todas as linhas de ambas as tabelas são mantidas, o que cria medidas duplicadas.
O primeiro fluxo em "duplicates from union.tfl" demonstra esse problema.
Opção 1: manter todos os dados de uma tabela e dados não correspondentes da outra tabela
Para este exemplo, queremos todos os dados de "Pedidos de janeiro (correções)" e somente os pedidos de "Pedidos de janeiro" que não existem em "Pedidos de janeiro (correções)".
- Crie uma nova união de colunas entre "Pedidos de janeiro" e "Pedidos de janeiro (correções)"
- Na etapa União de colunas 1, faça o seguinte:
- Para Cláusulas de união de colunas aplicadas, crie uma cláusula de união de colunas em [Order ID (ID do pedido)] = [Order ID (ID do pedido)]
- Para o Tipo de união de colunas, clique nas seções do diagrama de Venn, para que somente o segmento mais à esquerda seja preenchido. O Tableau Prep chamará isso de uma união de colunas "Mantida não correspondida somente".
- Arraste "Pedidos de janeiro (correções)" até União de colunas 1 e arraste a tabela em Nova união de linhas
Opção 2: manter os registros com a data mais recente
Por exemplo, a Sra. Mouse alterou o pedido para adicionar outro casaco, mas essa alteração foi acidentalmente registrada em "Pedidos de janeiro". O pedido correto é o com a data mais recente.
- Crie uma união FULL OUTER entre "Pedidos de janeiro" e "Pedidos de janeiro (correções)" em [Order ID (ID do pedido)] = [Order ID (ID do pedido)]
- Adicione uma Etapa de União de colunas 2
- Mescle todos os campos correspondentes, exceto os campos de data e os valores de medida:
- Clique no campo cujos valores devem substituir os outros no painel de perfil
- Clique no campo correspondente com a tecla Ctrl pressionada
- Clique com o botão direito do mouse nos dois campos e selecione Mesclar campos
- Quando os campos são mesclados, o Tableau Prep não mantém ambos valores (se houver dois valores diferentes), ao invés disso, ele mantém o valor do campo selecionado primeiro, se houver.
- Por exemplo, o nome Sra. Horse foi acidentalmente registrado como Sra. House na tabela "Pedidos de janeiro" e o nome dela está correto em "Pedidos de janeiro (correções). Ao mesclar [Customer (Cliente)] e [Customer-1 (Cliente-1)], quero selecionar [Customer-1 (Cliente-1)] primeiro.
- Você pode verificar qual campo substituirá o outro, através do nome do campo mesclado. O nome será formatado como [nome do primeiro campo e nome do segundo campo]. O nome de campo listado primeiro será o campo que substituirá o outro.
- Se os campos foram mesclados na ordem errada, a mesclagem pode ser desfeita clicando com o botão direito do mouse no ícone de mesclagem, acima do nome do campo mesclado no painel de perfil, e selecionando Remover.
- Clique no botão Criar campo calculado…
- Na caixa de diálogo Campo calculado que é aberta, faça o seguinte e clique em OK:
- Nomeie o campo calculado. Neste exemplo, o campo calculado é chamado de "Data mais recente".
- No campo de fórmula, crie um cálculo similar ao seguinte:
IF [Date] > [Date-1]
THEN [Date]
ELSE IFNULL( [Date-1], [Date] )
END
- O cálculo acima retornará [Date (Data)] se ele for "maior", ou no caso de datas mais recentes, que [Date-1 (Data-1)]. Caso contrário, o cálculo retornará [Date-1 (Data-1)].
- Se ambos os campos forem NULL, então, a primeira condição será sempre falsa. A função IFNULL() substitui [Date-1 (Data-1)] por [Date (Data)], quando [Date-1 (Data-1)] é NULL. Isso significa que o cálculo sempre retornará um valor não NULL, se houver.
- Remova [Date (Data)] e [Date-1 (Data-1)]
- Crie um campo calculado com o nome "Novo custo" usando um cálculo semelhante ao seguinte:
IF [Date] > [Date-1]
THEN [Cost]
ELSE IFNULL( [Cost-1], [Cost] )
END
- Remova [Cost (Custo)] e [Cost-1 (Custo-1)]
- Repita as etapas de 6 a 7 para cada medida
Opção 3: cada duplicata deve ser tratada de forma diferente
- Crie uma união FULL OUTER entre "Pedidos de janeiro" e "Pedidos de janeiro (correções)" em [Order ID (ID do pedido)] = [Order ID (ID do pedido)]
- Adicione uma Etapa de União de colunas 3
- Mescle todos os campos que a) têm os mesmos valores nas duas tabelas, ou b) os valores de uma tabela devem sempre prevalecer
- Clique no botão Criar campo calculado…
- Na caixa de diálogo Campo calculado que é aberta, faça o seguinte e clique em OK:
- Nomeie o campo calculado. Neste exemplo, o campo calculado é denominado "Novo cuso"
- No campo de fórmula, crie um cálculo similar ao seguinte:
CASE [Order ID-1 & Order ID]
WHEN 5 THEN [Date]
WHEN 9 THEN [Date]
ELSE IFNULL([Date-1],[Date])
END
- O cálculo acima lerá cada valor de [Order ID-1 & Order ID (ID do pedido-1 e (ID do pedido)] e retornará o campo de data especificado. Para simplificar, apenas especifiquei quais IDs devem retornar [Date (Data)] e, então, o restante retornará [Date-1 (Data-1)] ou [Date (Data)], se [Date-1 (Data-1)] for NULL, devido à expressão ELSE.
- O valor de [Order ID-1 & Order ID (ID do pedido-1 e (ID do pedido)] é usado na expressão CASE porque esse campo terá um valor exclusivo para cada linha de dados.
- Isso também significa que qualquer IDs nova adicionada retornará [Date-1 (Data-1)] quando esse fluxo for executado novamente no futuro.
- Remova [Date (Data)] e [Date-1 (Data-1)]
- Repita as etapas de 4 a 6 para todos os campos em que as duplicatas precisam ser tratadas individualmente