(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

PL-300: como dominar medidas DAX e agregações

João Barros 01 de August de 2026 6 min de leitura

Vou ensinar a competência de criar medidas DAX e a usar agregações no Power BI — uma aptidão central em Modelar os dados (PL-300). Medidas bem definidas e agregações correctas são cruciais para relatórios precisos, desempenho e análise dinâmica nos dashboards. Esta competência não é só sintaxe: envolve pensamento sobre contexto, desempenho e validação com dados reais.

O que precisas de saber

Medidas são cálculos dinâmicos em DAX que retornam um único valor por contexto de filtro. Ao contrário das colunas calculadas, medidas são avaliadas quando renderizas uma visualização, pelo que se adaptam ao contexto (filtros, segmentações, linhas/colunas de matrizes). Agrupar e agregar dados (SUM, AVERAGE, COUNT, DISTINCTCOUNT) faz parte do trabalho de medidas.

Pensa nelas como funções que respondem ao ambiente do relatório: se aplicas um slicer de ano, a mesma medida ajusta-se; se colocas a medida numa matriz por produto, ela calcula por produto. Em datasets com 100k–5M de linhas, usar medidas em vez de colunas calculadas reduz o espaço em disco e melhora a velocidade de refresh e de consulta. Exemplos típicos: receita total, margem média ponderada, percentagem do total e comparações ano a ano.

Exemplo prático: tens uma tabela Sales com colunas Quantity e Price. Se precisares de receita total, não crias uma coluna fixa para cada linha (embora possas), o ideal é criar uma medida:

Revenue = SUMX(Sales, Sales[Quantity] * Sales[Price])

Esta medida responde automaticamente a filtros de data, região ou produto e, em testes com 1M de linhas, retorna resultados em menos de um segundo numa máquina com memória suficiente (VertiPaq). Para cenários com descontos por linha podes estender a expressão a Sales[Discount] ou usar uma tabela de preços separada e fazer lookup com RELATED/LOOKUPVALUE conforme o modelo.

Como funciona

Conceptualmente, medidas operam sobre o contexto de filtro. Três ideias essenciais:

  • Contexto de filtro — conjunto de filtros aplicados (slicers, hierarquias, relações). Por exemplo, se um utilizador seleciona 2024 e Região Norte, a medida vê apenas essas linhas.
  • Contexto de linha — quando usas funções iteradoras como SUMX, cada linha da tabela iterada define o contexto para essa iteração; SUMX vai calcular a expressão para cada linha e depois somar os resultados.
  • Avaliação tardia — uma medida é calculada quando a visualização a solicita, não automaticamente para cada linha da tabela, o que permite cálculos dinâmicos e menor uso de espaço.

Exemplos práticos de sintaxe (podes colar estes no Power BI Desktop):

Revenue = SUMX(Sales, Sales[Quantity] * Sales[Price])

Total Units = SUM(Sales[Quantity])

Average Price = AVERAGE(Sales[Price])

Unique Customers = DISTINCTCOUNT(Sales[CustomerID])

Revenue YoY =
VAR Current = [Revenue]
VAR Prior = CALCULATE([Revenue], DATEADD(Date[Date], -1, YEAR))
RETURN
DIVIDE(Current - Prior, Prior)

Nota: DATEADD exige uma tabela de datas contínua. Em modelos com 10 anos de dados, estas funções permitem comparar períodos com precisão.

Na prática

Passo-a-passo para criar medidas eficazes:

  1. Entende o requisito: queres total, média ponderada, contagem única, percentagem do total, comparação temporal? Documenta o comportamento esperado em exemplos numéricos (ex.: "Quota de categoria para Janeiro = 23 450€").
  2. Escolhe a função correcta: SUM/AVERAGE/COUNT/DISTINCTCOUNT para agregações simples; SUMX para agregação com expressão por linha; CALCULATE para mudar o contexto de filtro (por exemplo, ignorar filtros ou aplicar filtros adicionais).
  3. Usa VAR para clareza: guardar resultados intermédios torna a medida mais legível e evita reavaliações desnecessárias — útil em medidas complexas com 4–6 passos intermédios.
  4. Trata divisões por zero: usa DIVIDE(x, y) em vez de x / y para evitar erros quando y = 0; DIVIDE permite também especificar um valor alternativo.
  5. Valida no visual: adiciona a medida a tabelas/matrizes e valida com filtros para confirmar comportamento esperado; testa com 5–10 cenários (anos, categorias, regiões).

Exemplo: percentagem do total por categoria

Category Revenue % =
DIVIDE(
    [Revenue],
    CALCULATE([Revenue], ALL(Products[Category]))
)

Esta medida calcula a quota de receita de cada categoria comparada com o total global, ignorando o filtro de categoria (graças a ALL). Se o total global for 2 000 000€ e uma categoria gerar 250 000€, a medida devolve 0.125 (12.5%).

Erros comuns

  • Usar colunas calculadas quando deves usar medidas — colunas armazenam valores por linha; medidas são dinâmicas e mais eficientes para agregações contextuais. Em datasets com >1M de linhas, colunas extras podem aumentar o modelo em dezenas de MB.
  • Ignorar contexto de filtro — medidas podem devolver resultados inesperados se não tiveres em conta slicers, relações ou ALL/REMOVEFILTERS. Testa sempre com diferentes filtros e combinações.
  • Funções iteradoras sem necessidade — usar SUMX quando um SUM bastaria pode penalizar desempenho; SUM é executada mais eficientemente no motor VertiPaq.
  • Não usar VAR — repetir cálculos complexos faz com que o motor reavalie a mesma expressão várias vezes, o que pode degradar performance.

Como praticar

Pratica no Power BI Desktop com o sample dataset (ex.: Contoso ou Financials). Cria medidas para receitas, margens, médias ponderadas e comparações temporais. Exemplos concretos: calcula uma margem bruta por produto, uma média ponderada de preço por unidade vendida, e um indicador de crescimento trimestral. Para avaliação orientada ao exame, usa o Practice Assessment OFICIAL e gratuito da Microsoft e consulta a study guide oficial — ambos são gratuitos e fornecem orientações sobre as skills measured. Não uses nem confies em brain dumps; segue sempre o material oficial para preparar-te correctamente.

Em resumo

  • Medidas DAX são cálculos dinâmicos avaliados no contexto de filtro; são essenciais para relatórios correctos.
  • Usa SUMX para cálculos linha-a-linha, CALCULATE para alterar contexto, VAR para legibilidade e DIVIDE para segurança em divisões.
  • Testa medidas com diferentes filtros e visualizações para validar comportamento; documenta cenários de teste com exemplos numéricos.
  • Pratica com datasets de exemplo e consulta o Practice Assessment e a study guide oficiais da Microsoft.