A dCalendario é a dimensão mais reaproveitável do Power BI. Construa uma vez com capricho e leve para todos os projetos. Ela precisa ser contínua (sem dias faltando) e cobrir todo o período da fato.
DAXdCalendario completa em DAX
dCalendario =VAR DataMin = MIN( fVendas[Data] )VAR DataMax = MAX( fVendas[Data] )VAR Base = CALENDAR( DATE( YEAR(DataMin), 1, 1 ), DATE( YEAR(DataMax), 12, 31 ) )RETURNADDCOLUMNS( Base, "Ano", YEAR( [Date] ), "NumMes", MONTH( [Date] ), "Mes", FORMAT( [Date], "mmm", "pt-BR" ), "MesCompleto", FORMAT( [Date], "mmmm", "pt-BR" ), "AnoMes", FORMAT( [Date], "yyyy-mm" ), "AnoMesTexto", FORMAT( [Date], "mmm/yy", "pt-BR" ), "Trimestre", "T" & FORMAT( QUARTER([Date]), "0" ), "AnoTrimestre", YEAR([Date]) & "-T" & FORMAT( QUARTER([Date]), "0" ), "Semestre", "S" & IF( MONTH([Date]) <= 6, "1", "2" ), "NumDiaSemana", WEEKDAY( [Date], 2 ), "DiaSemana", FORMAT( [Date], "ddd", "pt-BR" ), "EhFimDeSemana", WEEKDAY( [Date], 2 ) > 5, "InicioMes", EOMONTH( [Date], -1 ) + 1, "FimMes", EOMONTH( [Date], 0 ), "AnoAtual", YEAR([Date]) = YEAR( TODAY() ), "MesAtual", EOMONTH([Date],0) = EOMONTH( TODAY(), 0 ), "OffsetMes", DATEDIFF( TODAY(), [Date], MONTH ), "OffsetAno", YEAR([Date]) - YEAR( TODAY() ), "PassadoOuHoje", [Date] <= TODAY())Ordenação de mês e dia da semana
Sem ajuste, o gráfico ordena os meses em ordem alfabética (abr, ago, dez...). Selecione a coluna Mes → Ferramentas de Coluna → Classificar por coluna → NumMes. Faça o mesmo para DiaSemana usando NumDiaSemana.
Marcar como tabela de datas
- 1Selecione a dCalendario no painel de dados.
- 2Ferramentas de Tabela → Marcar como tabela de datas.
- 3Escolha a coluna Date.
- 4O Power BI valida: valores únicos, sem nulos e sem intervalos faltando.
Feriados e dias úteis
DAXColuna de dia útil considerando a tabela de feriados
EhDiaUtil =VAR Dia = dCalendario[Date]VAR FimDeSemana = WEEKDAY( Dia, 2 ) > 5VAR EhFeriado = Dia IN VALUES( dFeriados[Data] )RETURN NOT ( FimDeSemana || EhFeriado )