Menu fechado

Criando uma tabela de calendário no Power BI

Em um post anterior (Pontes relacionais no Power BI – Riser (cursosriser.com.br)), vimos uma forma de filtrar duas ou mais tabelas no Power BI utilizando a mesma segmentação de dados (slicer). As etapas consistiram em:

  • Criar referências das tabelas que serão relacionadas
  • Remover as demais colunas
  • Acrescentar uma das listas à outra
  • Remover duplicadas
  • Carregar e criar as relações no modelo do relatório

Apesar desse método ser robusto, para o caso de campos com datas, existe outra possibilidade, que seria a criação de uma tabela calendário com o auxílio de DAX.

Vamos utilizar como exemplo, o mesmo relatório do post anterior:

Nesse caso, os gráficos da parte superior (histórico de faturamento por unidade e status das vendas) são provenientes de uma tabela de faturamento, enquanto os visuais da parte inferior vêm de outra tabela, com informações de NPS.

Primeiramente, iremos criar uma tabela com a opção “Nova tabela” da guia “Modelagem” (no nível dos visuais):

Em seguida, definiremos a nova tabela calendário em DAX com a expressão abaixo:

tbCalendario = CALENDARAUTO()

A função CALENDARAUTO() pode ser utilizada sem nenhum argumento, como neste exemplo (retornando datas de 01/jan a 31/dez), ou informando um número que indique o mês final para consideração, por exemplo, CALENDARAUTO(3) retorna datas de 01/abr a 31/mar.

Para mais informações sobre essa função, você pode acessar a documentação da Microsoft:

Função CALENDARAUTO (DAX) – DAX | Microsoft Docs

O resultado seria a seguinte tabela de 01/01/2021 a 31/12/2021:

Veja que também é criada uma hierarquia de datas que pode ser bastante útil para alguns visuais e medidas:

Agora, é necessário conectar essa tabela calendário às demais tabelas do nosso modelo:

Veja que as conexões são de 1:n com o sentido de filtragem da tabela calendário para as demais.

Em seguida, é recomendável trocar as datas nos visuais para o campo da tabela calendário, pois caso haja informações de mais de uma tabela no mesmo gráfico, elas irão responder corretamente, por exemplo:

Também vamos criar uma segmentação de dados com esse campo de data:

Com isso, nosso relatório fica completo:

Ajustando o slicer de data, já é possível refletir as alterações em todos os visuais, como esperado:

Note que, nesse caso, foi também aplicado um filtro de nível visual, na segmentação de dados, para exibir somente os meses para os quais existem dados (janeiro a abril):

Para fazer o download do arquivo inicial (e refazer o passo a passo do vídeo), utilize o link abaixo:

Já, para baixar o arquivo final do vídeo, clique no link a seguir:

Aproveite para se inscrever no canal e até a próxima!