PL-300: como optimizar modelos com medidas calculadas em DAX (contexto de linha)
Vou ensinar a competência de trabalhar com o contexto de linha em DAX para criar medidas calculadas no Power BI. Esta competência é importante no exame PL-300 porque medidas DAX bem construídas determinam resultados correctos e bom desempenho; na prática, dominá‑la evita erros lógicos e cálculos lentos em relatórios.
O que precisas de saber
O conceito central é o contexto de linha (row context) e como ele difere do contexto de filtro (filter context). O contexto de linha aplica‑se quando uma expressão DAX é avaliada para uma linha específica — por exemplo, dentro de uma coluna calculada ou quando usamos funções iteradoras como SUMX. Já o contexto de filtro provém dos filtros aplicados ao relatório (slicers, selecções, relações) e é o que normalmente afecta medidas.
Exemplo simples: numa tabela Vendas com colunas Quantidade e PreçoUnit, calcular o total por linha (linha a linha) é:
Vendas[ValorLinha] = Vendas[Quantidade] * Vendas[PreçoUnit]
Isto é uma coluna calculada: cada linha tem o seu contexto de linha. Mas se quisermos somar todas as linhas para obter o total de vendas num cartão, usamos uma medida que respeita o contexto de filtro:
Total Vendas = SUMX(Vendas, Vendas[Quantidade] * Vendas[PreçoUnit])
Aqui, SUMX cria um contexto de linha interno para avaliar a expressão por cada linha, e depois agrega considerando o contexto de filtro externo (por exemplo, um período ou produto seleccionado).
Como funciona (passo‑a‑passo)
1) Identifica se precisas de uma coluna calculada ou de uma medida.
- Coluna calculada: fixa por linha e armazenada no modelo; útil para categorias ou chaves derivadas.
- Medida: recalculada conforme os filtros; ideal para agregações e para evitar aumentar o tamanho do modelo.
2) Quando escreveres expressões que operam por linha, usa funções iteradoras (por exemplo, SUMX, AVERAGEX, FILTER com iteração).
Lucro Total = SUMX(Vendas, (Vendas[PreçoUnit] - Vendas[CustoUnit]) * Vendas[Quantidade])
3) Lembra‑te das implicações do contexto de filtro: uma medida avaliada num cartão reflecte todos os filtros aplicados. Se precisares de ignorar filtros, usa ALL ou similar com cuidado.
Vendas Sem Filtro = CALCULATE([Total Vendas], ALL(Produto))
4) Para combinar contexto de linha e filtro, usa CALCULATE para alterar o contexto de filtro e funções iteradoras para a lógica por linha.
Margem Média Ponderada = DIVIDE(
SUMX(Vendas, (Vendas[PreçoUnit] - Vendas[CustoUnit]) * Vendas[Quantidade]),
SUM(Vendas[Quantidade])
)
5) Depura medidas com RETURN e variáveis (VAR) para tornar a lógica clara e mais eficiente.
ExemploDebug =
VAR Numerador = SUMX(Vendas, ...)
VAR Denominador = SUM(Vendas[Quantidade])
RETURN DIVIDE(Numerador, Denominador)
Na prática: um mini‑lab
Passos práticos que deves executar no Power BI Desktop:
- Carrega uma tabela de vendas com
Data,Produto,Quantidade,PreçoUnit,CustoUnit. - Cria uma medida
Total VendasusandoSUMX(como acima). - Cria um cartão e verifica o resultado com o filtro de datas e por produto — observa como o contexto de filtro altera o resultado.
- Cria uma medida que calcula a margem por linha e depois agrega com
SUMX; compara com alternativas que usam colunas calculadas para ver o impacto no tamanho do modelo. - Usa
VARpara dividir a lógica e testa com uma matriz que mostra detalhe por produto.
Erros comuns
- Confundir coluna calculada com medida: usar colunas calculadas para somas dinâmicas leva a modelos maiores e a resultados estáticos quando pretendes dinamismo.
- Usar funções agregadas dentro de um iterador sem entender o contexto: por exemplo, chamar
SUM(Vendas[Quantidade])dentro deSUMXpode produzir resultados errados porque mistura contextos. - Ignorar a necessidade de
CALCULATEpara alterar o contexto de filtro: tentar forçar filtros com lógica manual pode dar números incoerentes.
Como praticar
Pratica com os laboratórios do Power BI Desktop e compara alternativas (coluna vs medida; iterador vs agregação simples). Para preparação do exame, usa o Practice Assessment OFICIAL da Microsoft (é gratuito) e consulta a study guide oficial da certificação PL-300 (também gratuita). Estes recursos oficiais ajudam‑te a ver quais as competências medidas e a testar o conhecimento sem recorrer a materiais proibidos.
Em resumo
- Contexto de linha existe em colunas calculadas e em funções iteradoras; contexto de filtro vem do relatório e das funções CALCULATE/ALL.
- Prefere medidas com iteradores para agregações dinâmicas e usa VAR para clareza e desempenho.
- Evita colunas calculadas desnecessárias para não inflar o modelo e para manter os cálculos responsivos a filtros.
- Pratica com exemplos reais e usa os recursos oficiais da Microsoft para avaliar a tua preparação.