Minhas Planilhas

Seu site de Planilhas Excel

  • Início
  • Blog
  • Cursos
  • Portfólio Power BI e Excel
  • Treinamento in Company de Power BI
  • Sobre
    • Política de privacidade
Você está em: Home / Power BI / Criar Tabela Calendário em M no Power BI – Estático e Dinâmico

Criar Tabela Calendário em M no Power BI – Estático e Dinâmico

5 de fevereiro de 2018 por Gerson Viergutz 3 Comentários

A Tabela Calendário é umas das tabelas mais importantes para podermos criar  Medidas no DAX para análises de tempo no Power BI. A Tabela Calendário é fundamental para usar filtros e criar medidas de inteligência de tempo. Neste artigo vou mostrar como criar a Tabela Calendário no Power Query (Editor de Consultas) que utiliza a linguagem M.

Temos várias formas de criar a tabela calendário no Power BI. Podes ainda criar de forma dinâmica ou com datas fixas. Neste artigo também vou mostrar estas duas formas.

Tabela Calendário Fixo no Editor de Consultas (Linguagem M)

Dentro da linguagem M podemos criar uma tabela calendário dinâmico e outro estático. Vamos começar pelo mais fácil que é o estático.

  • Crie uma Consulta em Branco.

Na guia Página Inicial –> Obter Dados –> Consulta Nula.

dCalendario Power BI

Irá abrir o Editor de Consultas. Agora na Barra de Fórmulas digite a fórmula abaixo e depois ENTER.

= List.Dates(#date(2013, 01, 01),1096, #duration(1,0,0,0))

Explicando:

A função List.Dates retorna uma lista de datas começando com o primeiro parâmetro que é #date(2013, 01, 01). ou seja irá começar do dia 01/01/2013. Esta data você pode alterar conforme sua necessidade.

O segundo parâmetro é a contagem do incremento. Neste exemplo quero que ele conte 1096 dias a partir do dia 01/01/2013. No terceiro parâmetro definimos qual o incremento que no exemplo é de dia em dia.

Feito isso ele irá criar uma lista do dia 01/01/2013 a 31/12/2017.

Calendário Power QUery

  • Transformar a Lista em Tabela.

Agora na guia Transformar, clique em Para a Tabela.

dCalendario

  • Renomear a Coluna para Data

Clique com o botão direito do mouse no cabeçalho da coluna e clique em Renomear.

  • Alterar o Tipo para Data

Agora clique no ícone ao lado do nome Data que foi renomeado e escolha Data.

  • Adicionar Colunas Personalizadas

Vamos criar as colunas de Dia, Mês, Ano, Semana, Nome do Mês.

Criar Coluna Ano – Clique na Guia Adicionar Colunas, no ícone Data no grupo Data e Hora e clique Ano – Ano.

Calendario Power BI

Criar Coluna Mês – Clique na coluna Data e repita o passo acima e selecione Mês.

Agora repita para Nome do Mês, Trimestre, Dia, Dia da Semana, Nome do Dia.

Criar Coluna Mês-Ano – Selecione a tabela Mês e depois segurando a tecla CTRL selecione a coluna Ano. Vá na guia Adicionar Colunas e clique em Mesclar Colunas.

Na Janela que abrir selecione o separador como Personalizado no campo abaixo digite o sinal de – e no nome da coluna insira Mês-Ano e clique em OK.

Calendário no Power BI

Pode renomear a Consulta para o nome dCalendario.

Pronto, nossa tabela Calendário está criado. Caso não queira fazer todo esse passo a passo você pode copiar o código abaixo e colar em seu Editor Avançado. Veja como fazer.

Criar Tabela Calendário Dinâmico no Power BI

Copie o código abaixo. Em seu Power BI, Crie uma Consulta em Branco, no Editor de Consulta, vá pra guia Exibição e Clique Editor Avançado. Delete tudo que estive dentro da janela o cole o código abaixo. Clique em concluído e depois é só relacionar as datas com a tabela fato.

//DI = Data Início
//DF = Data Fim

let dCalendario =(DI as date, DF as date) as table =>

let
//Contar número de dias entre a data de início e fim
 Dias = Duration.Days(DF - DI) +1,
//Criando uma lista de datas
 Datas = List.Dates(DI, Dias, 
 #duration(1,0,0,0)),
//Converter Lista em Tabela
 ListaparaTabela = Table.FromList(Datas, 
 Splitter.SplitByNothing(), {"Data"}, null, ExtraValues.Error ),
AlterarTipo = Table.TransformColumnTypes(ListaparaTabela,{{"Data", type date}}),
//Criando Colunas adicionais
 //Coluna Ano
 Ano = Table.AddColumn(AlterarTipo, "Ano", 
 each Date.Year([Data]), Int64.Type),
//Criando Trimestre
 Trimestre = Table.AddColumn(Ano , "Trimestre", 
 each "Trim " & Number.ToText(Date.QuarterOfYear([Data])), type text),
//Número da Semana
 NumeroSemana = Table.AddColumn(Trimestre , "Número Semana", 
 each Date.WeekOfYear([Data]), Int64.Type),
//Numero Mês
 MesNumero = Table.AddColumn(NumeroSemana, "Número Mês", 
 each Date.Month([Data]), Int64.Type),
 DataINT = Table.AddColumn(MesNumero, "DateInt", each [Ano]*100 + [Número Mês], Int64.Type),
//Nome do Mes
 NomeMes = Table.AddColumn(DataINT , "Mês", 
 each Date.ToText([Data],"MMM"), type text),
 MesMaiusculo = Table.TransformColumns(NomeMes,{{"Mês", Text.Proper, type text}}),
//Dia da Semana
 DiaDaSemana = Table.AddColumn(MesMaiusculo , "Dia da Semana", 
 each Date.ToText([Data],"dddd"), type text),
//Mês-Ano
 #"MesAno" = Table.AddColumn(DiaDaSemana, "Mês Ano", each Text.Combine({Text.From([Número Mês], "pt-BR"), Text.From([Ano], "pt-BR")}, "-"), type text)


in
 MesAno

in dCalendario

Renomeie a Consulta para fnCalendario.

Feito isso foi criado uma Função com o nome fnCalendario.

Editor Avancado Power BI

  • Criando a tabela Calendario

Crie uma nova consulta em branco o cole o código abaixo no Editor Avançado.

let
Source = fnCalendario(List.Min(tb_Vendas[Data_venda]), List.Max(tb_Vendas[Data_venda]))
in
 Source

Calendar Table

Lembrando que tb_Vendas é a tabela Fato e Data_venda é o nome da coluna de datas.

Feito isso é criado a Tabela dCalendario Dinâmico. Todas vez que a tabela fato é atualizado a tabela calendário é atualizado automaticamente.

Clique Aqui para baixar o arquivo do artigo.

Assista Também o vídeo de como criar a Tabela Calendário no Youtube com M e DAX.

 
Curso de Power BI

Arquivado em: Artigo, Power BI, Power Query Marcados com as tags: Calendario, M, Power BI

Comentários

  1. MARCO BEZERRA diz

    16 de julho de 2018 em 16:33

    show

    Responder
  2. Luciana Aguiar Corrêa diz

    9 de agosto de 2018 em 14:23

    Muito bom!

    Responder
  3. Emanuel Santos diz

    25 de junho de 2021 em 13:57

    Muito bom mestre Gerson, Obrigado !!!

    Responder

Deixe um comentário Cancelar resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Sobre o Autor

Gerson Viergutz

Se inscreva no Canal do Youtube

Pesquise no site

Receba Planilhas e Dicas no seu E-mail

*campos obrigatórios

Categorias

  • Artigo
  • Cursos
  • Dashboard
  • DAX
  • Dicas
  • Empreendedorismo
  • Excel
  • Ferramentas de Gestão
  • Fórmulas
  • Funções
  • Gráficos
  • Gráficos no Excel
  • Livros Ebooks
  • Lógica
  • MEI
  • Pessoal
  • Planilhas Financeiras
  • Planilhas Prontas
  • Power BI
  • Power Pivot
  • Power Query
  • Qualidade
  • Tabela Dinâmica
  • Texto
  • VBA
  • Venda de Planilha

Copyright © 2022

Gerenciar Consentimento de Cookies
Usamos cookies para otimizar nosso site e nosso serviço.
Funcional Sempre ativo
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferências
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Estatísticas
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Gerenciar opções Manage services Gerenciar fornecedores Leia mais sobre esses propósitos
Preferências
{title} {title} {title}