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.
- A função CALENDAR DAX gera uma tabela com uma lista de datas de 1º de janeiro a 31 de dezembro de 2021.
- Definimos variáveis (denotadas por VAR) para capturar detalhes da coluna chamada [Data] que é criada pela função CALENDÁRIO.
- 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!
Luiz Antonio Sgargeta é sócio fundador e CEO da Trinapse, consultoria brasileira de Microsoft 365 com quase duas décadas de operação, acumula mais de 20 anos em desenvolvimento de software e em ambientes corporativos de alta complexidade.
Ver maisVer menos
Trabalha com SharePoint desde o SharePoint Portal Server 2003 e com .NET desde a versão 1.0. Acompanhou a plataforma em todas as suas reinvenções, do portal de documentos on-premises ao SharePoint Online dentro do Microsoft 365, o que dá a ele uma leitura rara sobre o que muda de verdade e o que é apenas nome novo para o mesmo problema.
No início da carreira atuou em uma das maiores operações de e-commerce do país, em sistemas que não toleram degradação de performance nem indisponibilidade, essa origem definiu o critério que ele aplica até hoje: solução boa é a que sustenta volume real, integra com o legado que já existe e não quebra no pico.
Depois disso, passou por praticamente todo tipo de projeto corporativo, de portais e intranets de milhares de usuários a integrações críticas e automação de processos de ponta a ponta, sempre em grandes empresas e em desafios de alta exigência.
A marca do trabalho dele é a tradução entre tecnologia e negócio, levanta a necessidade real por trás do pedido do cliente, questiona o processo antes de automatizá-lo e desenha a solução pelo resultado esperado, não pela ferramenta disponível, é o que permite conversar com a diretoria sobre retorno e com o time técnico sobre arquitetura na mesma reunião.
Hoje lidera a frente comercial e estratégica da Trinapse e conduz a empresa no novo ciclo da inteligência artificial, com foco em agentes de IA e operação de processos assistida por IA para cooperativas de crédito, agronegócio e indústria. Escreve no blog da Trinapse desde 2019, com mais de 450 artigos sobre IA, SharePoint, Power Platform, Modern Workplace e transformação de processos, sempre a partir de projeto entregue e não de teoria.



