O que você vai aprender?
Uma das funções mais conhecidas do Tableau é o Join (Junção), onde podemos unir 2 bases através de campos em comum entre elas, ou seja, Campo A = Campo B.
Mas como fazemos quando vamos unir a partir de uma condição de range? Nessa dica mostraremos um passo a passo simples para conseguirmos fazer essa tratativa.
Introdução:
Para essa dica vamos imaginar o seguinte cenário:
Nós temos os dados referentes a uma empresa de aluguel de barcos, com a data da retirada do barco e a data da devolução dele.
E temos uma base com a folha de ponto dos seguranças do nossa Marina, com seu horário de entrada e saída.
E o nosso questionamento de hoje é, quem foi o segurança responsável pelo recebimento da embarcação e quem foi o segurança responsável pela entrega da embarcação?
Sem mais delongas, vamos conhecer as duas bases
Essa é a base de dados com os aluguéis de navios, com 6 registros de navios alugados:
E essa é a folha de ponto dos nossos seguranças, com 179 linhas de período:
Como bem sabemos precisaríamos de um campo em comum entre as duas bases, afinal não conseguimos olhar para um período de tempo.
Então a pergunta que fica é:
Como eu faço um Join onde a [Data de Retirada] é maior ou igual ao [Ponto Início] do segurança e a [Data de Retirada] é menor ou igual ao [Ponto Fim] do segurança?
Vem pro Prep que vamos aprender agora!
Começamos trazendo as duas bases para o fluxo.
Como falamos antes, precisamos de uma coluna de tempo para unir os 2 dados, e é isso que faremos, vamos criar uma linha de data para cada dia em que o segurança trabalhou e uma linha de data para cada dia em que a embarcação ficou alugada.
Não entendeu? Então vem conhecer a função de “Novas linhas”.
Mas antes disso precisamos criar os campos com o tipo “Data” para a data de início e data fim do período analisado. Vamos fazer primeiramente as tratativas das embarcações.
Inserimos ao fluxo uma etapa de limpeza e duplicamos as colunas de data de retirada e data de entrega.
Nas novas colunas duplicadas, mudamos seu tipo para data clicando no calendário logo acima do seu nome.
Pronto, agora nossos campos Data de Devolução-1 e Data de Retirada-1 são do tipo Data e podemos inserir e configurar a função de “Novas Linhas” da seguinte forma:
Observem que estamos criando uma coluna chamada “Data Aluguel”, que irá apresentar uma linha para cada dia em que a embarcação estava alugada, variando entre a Data da Retirada e a Data de Devolução.
Também dizemos que os dados irão se repetir para cada nova linha, deixando a base com o seguinte formato.
Essa tratativa é essencial para realizarmos a primeira etapa do Join.
Agora vamos repetir o mesmo processo para a base de seguranças. Duplicamos as colunas referentes ao período, mudamos seu tipo para Data, usamos a função “novas linhas” e geramos uma linha para cada dia no período selecionado. Ficando com a base de seguranças assim:
Ótimo, agora vamos unir normalmente as nossas bases, utilizando o relacionamento entre a coluna Linha Ponto (da base seguranças) e a coluna Data Aluguel (da base Embarcações). Ficando com o fluxo da seguinte forma:
E a base assim:
Percebam que uma mesma linha de aluguel está vinculada a todos os seguranças que trabalharam no dia em questão, mas ainda não é isso que queremos, precisamos identificar e filtrar o segurança responsável pela entrega do barco ao cliente e o segurança pelo recebimento do mesmo.
Para isso vamos inserir uma etapa de limpeza e criar 2 campos calculados “Segurança Recebimento” e “Segurança Entrega”.
O primeiro vamos criar o “Segurança Recebimento” (responsável por receber a embarcação), onde faremos a verificação se a data da devolução da embarcação está dentro do período do ponto do segurança.
Percebam que apenas uma linha teve sua informação preenchida onde o segurança começou a trabalhar as 09:38, recebeu a devolução da embarcação as 14:30 e parou de trabalhar as 17:33, os outros seguranças que trabalharam no mesmo não se encaixam no período, logo ficaram com suas linhas nulas.
Agora replicamos a mesma regra para “Segurança Entrega”, que foi o responsável por entregar a embarcação ao cliente.
Pronto, agora já temos a classificação de quem foi responsável por receber e entregar as embarcações.
Para isso incluímos uma ferramenta de agregação com a seguinte configuração:
Dessa forma agrupamos no nível de embarcações alugadas (igual a base de Embarcações) e trazemos os valores relevantes para “Segurança Recebimento” e “Segurança Entrega”, desconsiderando os nulos que vimos anteriormente.
E agora temos a base final com o seguinte formato: