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:
- Selecione a tabela de calendário na visualização de Dados
- Vá em Ferramentas de Tabela > Marcar como Tabela de Datas
- Selecione a coluna que contém as datas completas (geralmente chamada “Data”)
- 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.
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.