Visual Power BI seguindo a ordem crescente de mês
- Amanda Nascimento

- há 21 horas
- 2 min de leitura
Sabe quando você cria uma dimensão de calendário e na hora de fazer os visuais eles ficam fora de ordem, respeitando a ordem decrescente da primeira letra inicial de cada mês?
Veja a imagem abaixo:

Abra a dimensão calendário no modo de exibição de tabela
Clique na coluna Nome_Mes (coluna que quero classificar)
Vá em Ferramentas de coluna
Clique em Classificar por coluna
Selecione Mes (coluna numérica)

Resultado:
os meses ficaram na ordem correta e não mais em ordem alfabética

Obs: Não se esqueça depois de ir em exibição do modelo e criar o relacionamento da tabela calendário com sua tabela fato.
Script da tabela calendário
Em página inicial no Power BI, clique em Transformar dados para acessar o Power Query

Clique em Nova Fonte, Consulta Nula, Editor Avançado

Apague tudo que esta no editor e cole o script abaixo:
let
// =============================
// CONFIGURAÇÃO
// =============================
AnoInicial = 2025,
AnoFinal = 2027,
DataInicial = Date.StartOfYear(#date(AnoInicial, 1, 1)),
DataFinal = Date.EndOfYear(#date(AnoFinal, 12, 31)),
QtdeDias = Duration.Days(DataFinal - DataInicial) + 1,
// =============================
// CRIA LISTA DE DATAS
// =============================
Datalist = List.Dates(DataInicial, QtdeDias, #duration(1,0,0,0)),
Tabela = Table.FromList(Datalist, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Tipo = Table.TransformColumnTypes(Tabela,{{"Column1", type date}}),
Renomear = Table.RenameColumns(Tipo,{"Column1", "Data"}),
// =============================
// COLUNAS PRINCIPAIS
// =============================
Ano = Table.AddColumn(Renomear, "Ano", each Date.Year([Data]), Int64.Type),
Mes = Table.AddColumn(Ano, "Mes", each Date.Month([Data]), Int64.Type),
NomeMes = Table.AddColumn(Mes, "Nome_Mes", each Date.MonthName([Data]), type text),
Dia = Table.AddColumn(NomeMes, "Dia", each Date.Day([Data]), Int64.Type),
DiaAno = Table.AddColumn(Dia, "Dia_Ano", each Date.DayOfYear([Data]), Int64.Type),
DiaSemana = Table.AddColumn(DiaAno, "Dia_Semana", each Date.DayOfWeek([Data]), Int64.Type),
NomeDiaSemana = Table.AddColumn(DiaSemana, "Nome_Dia_Semana", each Date.DayOfWeekName([Data]), type text),
Trimestre = Table.AddColumn(NomeDiaSemana, "Trimestre", each Date.QuarterOfYear([Data]), Int64.Type),
SemanaAno = Table.AddColumn(Trimestre, "Semana_Ano", each Date.WeekOfYear([Data]), Int64.Type),
SemanaMes = Table.AddColumn(SemanaAno, "Semana_Mes", each Date.WeekOfMonth([Data]), Int64.Type),
// =============================
// COLUNAS FORMATADAS
// =============================
MesAbrev = Table.AddColumn(SemanaMes, "Mes_Abrev", each Text.Start(Text.Proper([Nome_Mes]),3), type text),
AnoMes = Table.AddColumn(MesAbrev, "Ano_Mes", each Text.From([Ano]) & "-" & Text.PadStart(Text.From([Mes]),2,"0"), type text),
TrimestreExt = Table.AddColumn(AnoMes, "Trimestre_Desc", each
if [Trimestre]=1 then "1º Tri"
else if [Trimestre]=2 then "2º Tri"
else if [Trimestre]=3 then "3º Tri"
else "4º Tri", type text),
// =============================
// COLUNA PRINCIPAL (ID_DATA)
// =============================
IdData = Table.AddColumn(TrimestreExt, "id_data", each
Number.FromText(Date.ToText([Data], "yyyyMMdd")), Int64.Type),
// =============================
// ORDENAÇÃO
// =============================
Ordenado = Table.Sort(IdData,{{"id_data", Order.Ascending}})
in
Ordenado
Fechar e Aplicar



