Se você trabalha com relatórios no Power BI, já deve ter passado por isso: tudo certo no relatório, os dados batendo, os gráficos funcionando… mas o eixo de datas está completamente fora do que você precisa.
Talvez o mês atual do relatório não seja o mês realmente atual, mas sim o último mês fechado pela empresa. Talvez a diretoria resolva dividir o ano em campanhas com datas personalizadas, como “lançamento Black Friday” ou “captação escolar”, com datas que não seguem o calendário convencional.
Seja qual for o cenário, esse problema tem nome: filtros e ordenações baseados em data absoluta. Mas a boa notícia é que existe uma solução definitiva, e ela envolve ordem personalizada de datas no DAX, com apoio total do Power Query.
Neste artigo, você vai aprender:
- Como criar uma tabela de calendário profissional
- Como usar uma data de referência como base para a ordenação
- Como gerar períodos personalizados (inclusive com mais de 12 no ano!)
- E o principal: como automatizar isso tudo para evitar filtros quebrados
Vamos resolver um problema de 10 entre 10 analistas de dados.
Criando uma base de dados simples (e funcional)
Para começar, criamos uma tabela fictícia de vendas, com 3 colunas essenciais:
DataClienteValor
Essa tabela é simples de ser construída no Excel ou em qualquer outro sistema. O importante aqui não é o conteúdo exato, mas sim o contexto: vamos usá-la para testar filtros, gráficos e, claro, a ordenação personalizada.
Depois, importamos essa base para o Power BI e seguimos para a etapa mais importante do processo: criar uma tabela de calendário.
Por que você precisa de uma tabela de calendário no Power BI
Se você ainda usa a coluna de datas da própria tabela de vendas para montar gráficos, está perdendo tempo — e performance.
A prática recomendada (e que empresas sérias utilizam) é criar uma tabela de calendário separada, contendo uma linha por dia, desde a data inicial até a final do seu banco de dados.
Essa tabela deve conter:
- Data (uma por linha)
- Ano
- Mês
- Trimestre
- Número da semana
- Nome do mês
- Fim do trimestre
- Outros atributos úteis
Isso economiza espaço, melhora o desempenho do modelo e permite centralizar os cálculos de tempo em um único lugar.
Criando a tabela de calendário no Power Query
No Power Query, usamos a função List.Dates para criar uma lista de datas:
let
DataInicial = #date(2000, 1, 1),
DataFinal = #date(2022, 12, 31),
Dias = Duration.Days(DataFinal - DataInicial) + 1,
Lista = List.Dates(DataInicial, Dias, #duration(1, 0, 0, 0))
in
ListaDepois transformamos essa lista em uma tabela e aplicamos os seguintes passos:
- Tipamos a coluna como data
- Adicionamos colunas com o ano, mês, trimestre e outros atributos relevantes
- Renomeamos essa consulta para
Calendario
Com a tabela pronta, ligamos ela à tabela de vendas, usando a coluna Data como relacionamento muitos para um, com a Calendario[Data] do lado 1.
A virada de chave: usando uma data de referência
Agora vem a grande sacada: em vez de trabalhar com datas relativas como “últimos 30 dias” ou “este mês”, que podem falhar se os dados forem antigos ou o fechamento ocorrer com atraso, usamos uma data de referência dinâmica.
Essa data representa o último fechamento ou o período base para comparação, e pode ser definida:
- Manualmente (em um parâmetro)
- Automaticamente (buscando de uma tabela com a data de fechamento mais recente)
Exemplo de tabela de parâmetros:
let
Tabela = Table.FromRecords({[
DataRef = #date(2001,5,31), // por exemplo
CorFundoBorogodo = "#ff7500"
]}),
in
Tabela
Criando a coluna Ordem Mês com DAX
Com a data de referência definida, criamos uma nova coluna chamada Ordem Mês dentro da tabela Calendario:
Ordem Mês =
VAR DataLinha = 'Calendario'[Data]
VAR REF = MAX(Z_Parametros[DataRef])
VAR AnoMesLinha = DATE(YEAR(DataLinha), MONTH(DataLinha), 1)
VAR AnoMesRef = DATE(YEAR(REF), MONTH(REF), 1)
RETURN
DATEDIFF(AnoMesRef, AnoMesLinha, MONTH)Esse código calcula a diferença de meses entre cada linha da tabela de calendário e a data de referência.
Resultado:
- Mês da data de referência →
0 - Meses anteriores →
-1,-2,-3… - Meses posteriores →
1,2,3…
Como isso resolve seus gráficos?
Imagine que o último relatório fechado foi em maio de 2021. Se você usar um filtro de “últimos 3 meses + atual” no Power BI, ele vai pegar fevereiro a maio de 2021.
Agora, se o relatório for acessado em novembro de 2025, o filtro tradicional não vai funcionar. Mas se você usar a coluna Ordem Mês, basta aplicar o filtro:

Criando a coluna Ordem Ano
Com o mesmo princípio, podemos criar uma coluna para diferenciar os anos:
Ordem Ano =
VAR DataLinha = 'Calendario'[Data]
VAR REF = MAX(Z_Parametros[DataRef])
RETURN
YEAR(DataLinha) - YEAR(REF)Isso é útil para relatórios que comparam anos anteriores com o atual, de forma dinâmica.
E se o ano tiver mais de 12 períodos?
Aí entramos em um cenário ainda mais específico — e muito comum em campanhas de marketing, escolas, lançamentos e e-commerce.
O gestor quer que o ano seja dividido em períodos personalizados, que não seguem o calendário tradicional.
Exemplo:
- Período 01 → 01 a 20 de janeiro
- Período 02 → 21 de janeiro a 15 de fevereiro
- Período 03 → 16 de fevereiro a 05 de março
- …
Como resolver isso no Power BI?
Simples:
- Crie uma tabela com os apelidos dos períodos, contendo:
- Nome do período
- Data inicial
- Data final
- Nome do evento (ex: “Lançamento Banana”)
- Crie uma função personalizada no Power Query (
fxListaDias) que recebe as duas datas e gera todas as datas do intervalo. - Expanda a lista e conecte cada data ao seu apelido de período.
- Mescle essa nova tabela com a
Calendario, usando a colunaDatacomo chave.
Resultado?
Você poderá filtrar seus gráficos por:
- Nome do período
- Nome do evento
- Número do ciclo (período 1, 2, 3…)
Sem depender de mês ou ano. Isso destrava dashboards mais estratégicos.
Benefícios reais dessa técnica
- Alinhamento com a lógica de negócio, não com o calendário
- Evita que relatórios quebrem quando o fechamento é fora do prazo
- Permite comparações mais justas entre períodos similares
- Facilita o entendimento do usuário final (especialmente diretores)
- Centraliza a lógica de data em um único lugar
Quer aplicar isso de verdade nos seus relatórios?
Se você curtiu essa técnica de ordem personalizada de datas no DAX, imagina dominar Power Query, DAX, modelagem de dados e dashboards interativos, tudo com foco no que realmente importa no dia a dia do analista.
Na Formação DataEvo, você aprende tudo isso de forma prática, com suporte, projetos reais e direto ao ponto — sem enrolação.

Descubra como transformar seus relatórios em ferramentas estratégicas.
A sua evolução começa com uma decisão.
Ah, Esse artigo foi extraído da LIVE 138, que hoje está disponível (editada) para os alunos da Formação DATAEVO.
Conclusão: o que aprendemos com a ordem personalizada de datas
Quando você aprende a usar ordem personalizada de datas com DAX, abre um novo mundo no Power BI.
Deixa de ser aquele analista que só joga dados no gráfico e vira alguém que modela dados de forma inteligente, com base no contexto do negócio.
Combinando Power Query, DAX e uma pitada de criatividade, é possível transformar qualquer calendário em um modelo flexível e poderoso.
Forte Abraço






