Como criar uma tabela de calendário no Power BI do zero

Se você usa o Power BI para criar relatórios com análise de datas, comparações de períodos ou qualquer tipo de inteligência de tempo, a tabela de calendário é absolutamente indispensável no seu modelo de dados. Sem ela, funções como comparação com o mesmo período do ano anterior simplesmente não funcionam. Neste artigo iremos mostrar como criar uma tabela de calendário no Power BI de diferentes formas e como configurá-la corretamente.

Por que a tabela de calendário é obrigatória no Power BI?

O Power BI não consegue realizar análises de inteligência de tempo, como comparação com o ano anterior, acumulado do ano ou acumulado do mês, a menos que você tenha uma tabela de calendário marcada como tabela de datas no modelo.

Além disso, a tabela de calendário permite criar hierarquias de data (Ano > Trimestre > Mês > Dia) que funcionam perfeitamente nos gráficos, e permite adicionar atributos como o nome do mês, o nome do dia da semana, a semana do ano e qualquer outra informação de tempo que você precisar nos seus filtros e visualizações.

Método 1: criando com DAX usando a função CALENDAR

A forma mais simples de criar uma tabela de calendário no Power BI é usando a função DAX CALENDAR. Vá em Modelagem > Nova Tabela e insira a seguinte fórmula:

Calendário = CALENDAR(DATE(2020;1;1); DATE(2025;12;31))

Isso cria uma tabela com uma única coluna de datas, com uma linha para cada dia do período definido. Mas uma tabela só com a coluna de datas tem pouca utilidade. O ideal é criar uma tabela completa usando a função CALENDARAUTO ou expandir a tabela com colunas adicionais.

Criando uma tabela de calendário completa com DAX

Para criar uma tabela de calendário completa com todas as colunas úteis, use o seguinte código DAX:

Calendário = 
VAR DataInicio = DATE(2020;1;1)
VAR DataFim = DATE(2025;12;31)
RETURN
ADDCOLUMNS(
    CALENDAR(DataInicio; DataFim);
    "Ano"; YEAR([Date]);
    "Mês Número"; MONTH([Date]);
    "Nome do Mês"; FORMAT([Date]; "MMMM");
    "Mês Abreviado"; FORMAT([Date]; "MMM");
    "Trimestre"; "T" & QUARTER([Date]);
    "Semestre"; IF(MONTH([Date]) <= 6; "S1"; "S2"); "Semana do Ano"; WEEKNUM([Date]; 2); "Dia da Semana"; WEEKDAY([Date]; 2); "Nome do Dia"; FORMAT([Date]; "DDDD"); "Ano-Mês"; FORMAT([Date]; "YYYY-MM"); "É Fim de Semana"; IF(WEEKDAY([Date]; 2) >= 6; VERDADEIRO; FALSO)
)

Método 2: criando com Power Query (M)

Outra opção muito usada é criar a tabela de calendário no Power Query usando a linguagem M. A vantagem é que você pode criar a tabela de forma dinâmica, com as datas se ajustando automaticamente ao intervalo dos dados.

Vá em Transformar Dados > Nova Fonte > Consulta em Branco e insira o seguinte código M no editor avançado:

let
    DataInicio = #date(2020, 1, 1),
    DataFim = #date(2025, 12, 31),
    Dias = Duration.Days(DataFim - DataInicio) + 1,
    ListaDatas = List.Dates(DataInicio, Dias, #duration(1, 0, 0, 0)),
    TabelaDatas = Table.FromList(ListaDatas, Splitter.SplitByNothing()),
    RenomearColuna = Table.RenameColumns(TabelaDatas, {{"Column1", "Data"}}),
    AlterarTipo = Table.TransformColumnTypes(RenomearColuna, {{"Data", type date}}),
    AdicionarAno = Table.AddColumn(AlterarTipo, "Ano", each Date.Year([Data]), Int64.Type),
    AdicionarMes = Table.AddColumn(AdicionarAno, "Mês", each Date.Month([Data]), Int64.Type),
    AdicionarNomeMes = Table.AddColumn(AdicionarMes, "Nome do Mês", each Date.MonthName([Data]), type text),
    AdicionarTrimestre = Table.AddColumn(AdicionarNomeMes, "Trimestre", each Date.QuarterOfYear([Data]), Int64.Type)
in
    AdicionarTrimestre

Como marcar a tabela como tabela de datas

Depois de criar a tabela, você precisa marcá-la como tabela de datas para que as funções de inteligência de tempo do DAX funcionem corretamente. Para isso:

  1. Selecione a tabela de calendário na visualização de Dados
  2. Vá em Ferramentas de Tabela > Marcar como Tabela de Datas
  3. Selecione a coluna que contém as datas completas (geralmente chamada “Data”)
  4. Clique em OK

Criando o relacionamento com a tabela fato

Com a tabela de calendário criada e marcada, crie o relacionamento entre ela e a tabela fato. Vá para a visualização de Modelo e conecte a coluna Data da tabela de calendário com a coluna de data da tabela fato (como Data de Venda ou Data do Pedido).

O relacionamento deve ser do tipo muitos para um, com o lado “um” na tabela de calendário (pois cada data aparece apenas uma vez) e o lado “muitos” na tabela fato (pois uma mesma data pode aparecer em várias transações).

Criando a hierarquia de datas

Depois de criar a tabela com as colunas de Ano, Trimestre, Mês e Dia, você pode criar uma hierarquia de datas. Isso permite que os visuais do relatório expandam e recolham automaticamente entre os níveis de tempo.

Para criar a hierarquia, clique com o botão direito na coluna Ano, escolha Criar Hierarquia, renomeie para “Hierarquia de Data” e arraste as colunas Trimestre, Mês e Data para dentro dela na ordem correta.

Dica: tabela de calendário com datas dinâmicas

Para que a tabela de calendário se ajuste automaticamente ao intervalo de datas dos seus dados, substitua as datas fixas pelas funções MIN e MAX da coluna de data da tabela fato:

Calendário = CALENDAR(
    MIN(Vendas[Data]);
    MAX(Vendas[Data])
)

Assim, quando novos dados com datas mais recentes forem carregados, a tabela de calendário se expandirá automaticamente para cobrir o novo período.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Se você curtiu esse artigo onde mostramos como criar uma tabela de calendário no Power BI, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *