P A T H

Como fazer join utilizando periodos de Tempo

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:

06 de Março de 2024

Pronto, agora você já sabe como fazer um Join através de uma condicional de Tempo!

Language