Como criar um calendário DAX no Power BI

Por Luiz Antonio Sgargeta
Como criar um calendário DAX no Power BI

Há muitos casos em que você precisará criar uma tabela de datas no desktop do Power BI. Isso pode ser tão simples como criar uma tabela de data mestre ou mais complexo, como criar um número de índice mensal ou semanal vinculado a uma data. Entretanto existem dois métodos para criar uma tabela de datas. Portanto o método um, cria a tabela diretamente no Power BI Desktop, e o método dois carrega a tabela de datas da fonte de dados.

Sendo assim para este tutorial, examinaremos alguns exemplos diferentes que abordam especificamente a criação de um calendário de datas por meio de expressões DAX.

Primeiro Exemplo DAX

Primeiramente vamos começar fazendo uma tabela básica. Em seguida, abra o Power BI Desktop e, na faixa de opções Modelagem, clique em Nova Tabela.

Então na barra de fórmulas, insira a seguinte expressão DAX:

Dates  = 
  GENERATE ( 
    CALENDAR ( DATE ( 2021, 1, 1 ), DATE ( 2021, 12, 31 ) ), 
    VAR currentDay = [Date]
    VAR day = DAY( currentDay )
    VAR month =  MONTH ( currentDay ) 
    VAR year =  YEAR ( currentDay )
  RETURN   ROW ( 
    "day", day, 
    "month", month, 
    "year", year )
  )

Isso gera uma tabela de data simples. Vamos examinar o que está acontecendo aqui.

  1. A função CALENDAR DAX gera uma tabela com uma lista de datas de 1º de janeiro a 31 de dezembro de 2021.
  2. Definimos variáveis ​​(denotadas por VAR) para capturar detalhes da coluna chamada [Data] que é criada pela função CALENDÁRIO.
  3. A função Return gera uma linha por vez. A linha percorre cada item [Data] na lista que foi criada pela função CALENDÁRIO. As variáveis ​​são recalculadas para cada execução de linha.

Nota: Ao criar tabelas DAX como estamos fazendo neste exemplo, a tabela DAX é atualizada apenas quando o relatório é atualizado. Portanto, se você quiser que a lista de datas aumente com o tempo, ou usar um NOW () na tabela DAX, você precisará agendar atualizações para o relatório do Power BI no serviço PowerBI.com.

Segundo Exemplo DAX

Por outro lado, também podemos gerar a mesma tabela de dados calculando nossos dados coluna por coluna. Da mesma forma, na  faixa de opções Modeling, clique no  ícone New Table e adicione o seguinte DAX:

Dates 2 = ADDCOLUMNS(
  CALENDAR( DATE( 2021, 1, 1) , DATE(2021, 12, 31) ), 
  "day", DAY([Date]), 
  "month", MONTH([Date]), 
  "year", YEAR([Date])
  )

Embora isso seja ótimo, temos uma tabela de datas agora, mas o que falta é flexibilidade e inteligência de tempo automática. Uma opção para alterar esta tabela para detectar automaticamente as datas em seu modelo de dados é substituir a instrução CALENDAR DAX por CALENDARAUTO ().

Terceiro Exemplo DAX

Para usar CALENDARAUTO, precisamos fornecer uma tabela com uma coluna de datas. Criaremos rapidamente uma tabela de dados fictícia com algumas datas, para que possamos usar CALENDARAUTIO.

Clique em  Inserir dados na  faixa inicial . Insira as seguintes informações na tela Criar Tabela. Clique em  Carregar para adicionar esses dados ao modelo de dados.

Agora que carregamos uma tabela no modelo com duas datas, podemos adicionar nossa nova tabela de datas. Na  faixa de opções Modeling, clique no  ícone New Table e adicione o seguinte DAX:

Dates 3 =
  GENERATE (
    CALENDARAUTO(),
    VAR currentDay = [Date]
    VAR day = DAY( currentDay )
    VAR month =  MONTH ( currentDay )
    VAR year =  YEAR ( currentDay )
  RETURN  ROW ( 
    "day", day,
    "month", month,
    "year", year )
  )

Nota: Na tabela MyData adicionamos duas datas, 03/03/2021 e 30/10/2021. Quando olhamos para as datas incluídas na nova tabela da Data 3, temos todas as datas listadas de 1º de janeiro a 31 de dezembro. Isso ocorre porque a função DAX CALENDARAUTO retornará todo o ano das datas do calendário, mesmo se encontrar apenas uma data em um determinado período de ano.  

Quarto Exemplo DAX

Digamos que desejamos construir um calendário de datas que crescerá e mudará automaticamente com o tempo. Queremos identificar a data de hoje e, em seguida, criar uma lista de datas para o ano anterior.

Voltando à geração de uma tabela de datas por linhas, agora podemos usar a função DAX NOW. Na  faixa de opções Modeling, clique no  ícone New Table e adicione o seguinte DAX:

Dates 4  =
  GENERATE (
    CALENDAR( DATE( YEAR( NOW() ) - 1, MONTH( NOW() ), DAY( NOW()) ), NOW()),
    VAR currentDay = [Date]
    VAR day = DAY( currentDay )
    VAR month = MONTH ( currentDay )
    VAR year = YEAR ( currentDay )
  RETURN ROW (
    "day", day,
    "month", month,
    "year", year )
 )

Observação: nesta tabela DAX, usamos a função NOW () que retorna uma data e hora. O mesmo pode ser feito ao usar a função TODAY () que retorna apenas a data e não a hora.

Este agora gera uma tabela de datas que começa há um ano e preenche todas as datas até hoje. Por exemplo, se hoje for 29-10-2021, a lista de datas começaria em 29-10-2020 e terminaria em 29-10-2021. 

Você curtiu este post sobre como criar um calendário no Power BI? Então, acesse nosso blog e descubra outras dicas que podem auxiliar no seu dia a dia!

Ver mais artigos

Entre em Contato

Vamos juntos transformar sua dor
em solução!

#moveFast