Skip to content

Instantly share code, notes, and snippets.

@olv-leo
Last active February 8, 2025 13:36
Show Gist options
  • Save olv-leo/ebde5a71eeb3d7cf1ba29da5061216f0 to your computer and use it in GitHub Desktop.
Save olv-leo/ebde5a71eeb3d7cf1ba29da5061216f0 to your computer and use it in GitHub Desktop.
Tabela Calendário (Power Query)
let
AnoInicial = 2023,
ano_final = Date.Year(Date.From(DateTime.LocalNow())),
// Declara uma data inicial
data_inicial = Date.StartOfYear(#date(AnoInicial, 1, 1)),
// Declara uma data final
data_final = Date.EndOfYear(#date(ano_final, 12, 31)),
// Conta a quantidade de dias entre as duas datas
dias_entre_datas = Duration.Days(data_final - data_inicial) + 1,
// Cria lista de datas
gerar_lista_datas = List.Dates(data_inicial, dias_entre_datas, #duration(1,0,0,0)),
// Converter para Tabela
converter_para_tabela = Table.FromList(gerar_lista_datas, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
// Altera Tipo
ajustar_tipo_coluna = Table.TransformColumnTypes(converter_para_tabela, {{"Column1", type date}}),
// Renomeia Coluna
ajustar_nome_coluna = Table.RenameColumns(ajustar_tipo_coluna, {{"Column1", "data"}}),
// Criação de Colunas Adicionais
// Criar Coluna ANO
ano_data = Table.AddColumn(ajustar_nome_coluna, "ano", each Date.Year([data]), Int64.Type),
// Criar Coluna Mês
mes_data = Table.AddColumn(ano_data, "mes", each Date.Month([data]), Int64.Type),
// Criar Coluna Nome do Mês
nome_mes = Table.AddColumn(mes_data, "nome_mes", each Date.MonthName([data]), type text),
// Criar Coluna Dia da Semana
dia_semana = Table.AddColumn(nome_mes, "dia_semana", each Date.DayOfWeek([data]), Int64.Type),
// Extrai o nome resumido dos meses
nome_mes_resumido = Table.AddColumn(dia_semana, "nome_mes_resumido", each Text.Start([nome_mes], 3), type text),
// Criar Coluna Nome do Dia da Semana
nome_dia_semana = Table.AddColumn(nome_mes_resumido, "nome_dia_semana", each Date.DayOfWeekName([data]), type text),
// Extrai o nome resumido dos dias da semana
nome_dia_semana_resumido = Table.AddColumn(nome_dia_semana, "nome_dia_semana_resumido", each Text.Start([nome_dia_semana], 3), type text),
// Criar Coluna Semana do Ano
semana_ano = Table.AddColumn(nome_dia_semana_resumido, "semana_ano", each Date.WeekOfYear([data]), Int64.Type),
// Criar Coluna Semana do Mês
semana_mes = Table.AddColumn(semana_ano, "semana_mes", each Date.WeekOfMonth([data]), Int64.Type),
// Criar Coluna ano_mes no formato YYYY-MM
ano_mes = Table.AddColumn(semana_mes, "ano_mes", each Text.PadStart(Text.From([ano]), 4, "0") & "-" & Text.PadStart(Text.From([mes]), 2, "0"), type text)
in
ano_mes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment