Este material reúne as principais medidas DAX e boas práticas utilizadas em produtos de Business Intelligence voltados à área de FP&A e Contabilidade. O conteúdo é baseado em um cenário com dados do Oracle EPM integrados ao Power BI.
Dim_Tempo =
ADDCOLUMNS (
CALENDAR (DATE(2025,1,1), DATE(2025,12,31)),
"Ano", YEAR([Date]),
"Mês_Num", MONTH([Date]),
"Mês", FORMAT([Date], "mmm")
)
Fato_EPM =
UNION (
SELECTCOLUMNS (EPM_Realizado, "Centro_Custo", EPM_Realizado[Centro_Custo], "Conta", EPM_Realizado[Conta], "Mês", EPM_Realizado[Mês], "Tipo", "Realizado", "Valor", EPM_Realizado[Valor]),
SELECTCOLUMNS (EPM_Orçado, "Centro_Custo", EPM_Orçado[Centro_Custo], "Conta", EPM_Orçado[Conta], "Mês", EPM_Orçado[Mês], "Tipo", "Orçado", "Valor", EPM_Orçado[Valor])
)
Valor Realizado =
CALCULATE(SUM(Fato_EPM[Valor]), Fato_EPM[Tipo] = "Realizado")
Valor Orçado =
CALCULATE(SUM(Fato_EPM[Valor]), Fato_EPM[Tipo] = "Orçado")
Desvio Absoluto =
[Valor Realizado] - [Valor Orçado]
Desvio Percentual =
DIVIDE([Desvio Absoluto], [Valor Orçado], 0)
Cumprimento (%) =
DIVIDE([Valor Realizado], [Valor Orçado], 0)
Acumulado Realizado =
CALCULATE([Valor Realizado],
FILTER(ALL(Dim_Tempo), Dim_Tempo[Data] <= MAX(Dim_Tempo[Data]))
)
1. Diagnóstico do erro: “Os CSVs apresentavam inconsistências de separador e formatação numérica. Corrigi via Power Query (replace, promote headers, transform column types) e converti todos os valores para float.”
2. Garantia de qualidade: “Implementei validações de duplicidade e consistência entre o EPM Orçado e o Realizado, garantindo que cada centro de custo e conta tivessem correspondência 1:1.”
3. Modelagem: “Adotei um modelo estrela com Fato_EPM e dimensões (Tempo, DRE, Centro de Custo). Evitei relacionamentos bidirecionais para preservar performance e clareza no contexto de filtro.”
4. DAX: “As medidas foram criadas de forma desacoplada, com cálculos claros e reutilizáveis. Evitei FILTERs desnecessários e validei resultados com totais contábeis.”
5. Performance: “Para reprocessamento futuro, criaria um Dataflow com refresh incremental, evitando recarga completa dos CSVs.”
CALCULATE
ou SUMX
.CALENDAR()
para criar a tabela Dim_Tempo e relacione pelo campo de data.