(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar uma tabela calendário no Power BI com DAX

João Barros 08 de July de 2026 4 min de leitura

Uma tabela calendário (date table) é a base de qualquer análise temporal no Power BI: sem ela, as funções de time intelligence — como comparar vendas ano após ano ou calcular acumulados — não funcionam de forma fiável. A boa notícia é que criar uma tabela calendário com DAX demora poucos minutos e passa a servir todo o modelo. Vais construí-la do zero, ligá-la aos teus dados e marcá-la corretamente como tabela de datas.

Pré-requisitos

  • Power BI Desktop instalado (qualquer versão recente serve).
  • Um modelo com, pelo menos, uma tabela de factos que tenha uma coluna de data — por exemplo, Vendas[Data].
  • Noções básicas de DAX ajudam, mas não são obrigatórias: basta copiar o código.

Passo 1: Criar a tabela com CALENDAR

No separador Modeling, clica em New table. Vais usar a função CALENDAR, que gera uma linha por cada dia entre duas datas, dentro de ADDCOLUMNS, que acrescenta colunas úteis como ano, mês e trimestre. Cola o código seguinte e ajusta as datas ao intervalo dos teus dados:

Calendario = 
ADDCOLUMNS(
    CALENDAR(DATE(2023,1,1), DATE(2026,12,31)),
    "Ano", YEAR([Date]),
    "NumeroMes", MONTH([Date]),
    "Mes", FORMAT([Date], "mmmm"),
    "Trimestre", "T" & ROUNDUP(MONTH([Date])/3, 0),
    "AnoMes", FORMAT([Date], "yyyy-mm"),
    "DiaSemana", FORMAT([Date], "dddd")
)

A coluna [Date] é criada automaticamente pela função CALENDAR; as restantes derivam dela. Cada coluna tem um propósito: Ano e Trimestre servem para agrupar, AnoMes é ótima para ordenar séries temporais, e DiaSemana ajuda a analisar padrões semanais. Se preferires que o intervalo se ajuste sozinho aos dados, troca CALENDAR(...) por CALENDARAUTO(), que lê as datas mínima e máxima do modelo.

Passo 2: Ordenar o mês corretamente

Por omissão, o Power BI ordena a coluna Mes por ordem alfabética — abril aparece antes de janeiro, o que baralha qualquer gráfico. Seleciona a coluna Mes, vai a Column tools e usa Sort by column para a ordenar pela coluna NumeroMes. A partir daí, os meses aparecem sempre por ordem cronológica, de janeiro a dezembro.

Passo 3: Marcar como tabela de datas

Este passo é essencial e muitos utilizadores esquecem-se dele. Com a tabela selecionada, vai a Table tools e clica em Mark as Date Table; escolhe a coluna [Date] como coluna de datas. Assim, garantes que as funções de time intelligence, como TOTALYTD ou SAMEPERIODLASTYEAR, assentam num calendário contínuo e correto.

Uma tabela de datas deve ser contínua, sem dias em falta entre a primeira e a última data. A função CALENDAR garante isso automaticamente.

Passo 4: Criar a relação com os dados

Vai à vista Model e arrasta o campo [Date] da tabela Calendario para a coluna de data da tua tabela de factos — por exemplo, Vendas[Data]. Fica uma relação de um-para-muitos, com o calendário do lado "um". É esta ligação que faz os filtros de tempo propagarem-se a todos os visuais do relatório.

Verificar o resultado

Para confirmar que está tudo bem, cria uma medida simples e coloca-a numa tabela ao lado do campo Calendario[AnoMes]:

Vendas YTD = TOTALYTD(SUM(Vendas[Valor]), Calendario[Date])

Se os valores acumularem ao longo do ano e reiniciarem em janeiro, a tua tabela calendário está a funcionar. Confirma ainda dois pormenores: se os meses aparecem por ordem cronológica e se a relação no separador Model está ativa (representada por uma linha sólida).

Conclusão

Com uma tabela calendário bem construída e marcada como tabela de datas, o teu modelo fica pronto para análises temporais fiáveis e fáceis de manter. O próximo passo natural é explorar funções como SAMEPERIODLASTYEAR e DATEADD para comparar períodos com poucas linhas de DAX. E tu, que outra coluna achas útil no teu calendário — talvez uma para marcar feriados ou fins de semana?