AULA 8 - CURSO POWER BI

DAX Intermediário

CALCULATE e Contexto de Filtro

Domine a função mais importante do DAX e entenda como o Power BI decide quais dados usar em cada cálculo!

🧠 O que é CONTEXTO?

Contexto = "Como o Power BI sabe quais dados usar no cálculo"

É o "ambiente" ou "filtro" onde a fórmula está rodando

📊 CONTEXTO DE LINHA

  • ✓ Usado em colunas calculadas
  • ✓ Processa linha por linha
  • ✓ "Olha" para a linha atual
  • ✓ Como fazer cálculo no Excel
Margem = Vendas[Preco] - Vendas[Custo]

Calcula para CADA linha individualmente

VS

🎯 CONTEXTO DE FILTRO

  • ✓ Usado em medidas
  • ✓ Determinado por filtros/slicers
  • ✓ "Filtra" quais linhas incluir
  • ✓ Trabalha com conjunto de dados
Total Vendas = SUM(Vendas[Valor])

Soma APENAS as linhas filtradas

💡 ANALOGIA DA FESTA

Imagine uma festa com 100 pessoas:

📊 Contexto de Linha

Perguntar a idade de CADA pessoa, uma por uma

"João tem 25, Maria tem 30..."
🎯 Contexto de Filtro

Perguntar "Quantas pessoas têm mais de 18 anos?"

"75 pessoas" (filtro: idade > 18)
⚡ REGRA DE OURO
Colunas Calculadas = Contexto de Linha
Medidas = Contexto de Filtro

⚡ CALCULATE

A Função Mais Importante do DAX

CALCULATE = Calcular com filtros personalizados

Avalia uma expressão modificando o contexto de filtro

CALCULATE(
<expressão>,
<filtro1>,
<filtro2>,
...
)

📌 Exemplo Simples:

Medida Base:
Total Vendas = SUM(Vendas[Valor])
Filtrando com CALCULATE:
Vendas Sul = CALCULATE(
[Total Vendas],
Vendas[Região] = "Sul"
)
Retorna vendas SOMENTE da região Sul! 🎯

🔄 Como CALCULATE Funciona:

1. Pega
Medida Total Vendas
2. Adiciona
Filtro: Região = "Sul"
3. Retorna
Vendas do Sul

⭐ Por que CALCULATE é TÃO Importante?

  • 90% das medidas avançadas usam CALCULATE
  • Permite criar métricas comparativas (vendas vs meta)
  • Base para inteligência temporal (YTD, mês anterior)
  • Essencial para análise profissional

🛠️ Exemplos Práticos:

1. Vendas por Região
Vendas Norte = CALCULATE([Total Vendas], Vendas[Região] = "Norte")
2. Vendas por Categoria
Vendas Eletrônicos = CALCULATE(
[Total Vendas],
Produtos[Categoria] = "Eletrônicos"
)
3. Múltiplos Filtros (E lógico)
AVANÇADO
Vendas Sul Eletrônicos = CALCULATE(
[Total Vendas],
Vendas[Região] = "Sul",
Produtos[Categoria] = "Eletrônicos"
)

Ambos os filtros são aplicados simultaneamente

4. Filtro com Condição
Vendas Altas = CALCULATE(
[Total Vendas],
Vendas[Valor] > 1000
)

🔓 ALL e ALLSELECTED

Funções para remover filtros e calcular % do Total

ALL

Remove TODOS os filtros

ALL(<tabela ou coluna>)
  • ✓ Ignora slicers
  • ✓ Ignora filtros de visuais
  • ✓ Total absoluto
  • ✓ Use para % do Total Geral
VS

ALLSELECTED

Remove filtros do visual, mantém externos

ALLSELECTED(<tabela ou coluna>)
  • ✓ Respeita slicers
  • ✓ Remove filtro do visual
  • ✓ Total do selecionado
  • ✓ Use para % do Total Visível

📊 Exemplo Clássico: % do Total

Usando ALL (Total Absoluto)
Total Geral = CALCULATE([Total Vendas], ALL(Vendas))
% do Total = DIVIDE([Total Vendas], [Total Geral])
Região Vendas Total Geral (ALL) % do Total
Sul R$ 120.000 R$ 500.000 24%
Norte R$ 180.000 R$ 500.000 36%
Sudeste R$ 200.000 R$ 500.000 40%
TOTAL R$ 500.000 R$ 500.000 100%

Note que "Total Geral" é sempre o mesmo (R$ 500.000) em todas as linhas!

🎯 QUANDO USAR CADA UM?
ALL

% do total absoluto (todos os dados)

Exemplo: "Sul = 24% das vendas totais da empresa"
ALLSELECTED

% do total selecionado (respeita slicers)

Exemplo: "Sul = 30% das vendas de 2024" (com slicer em 2024)

🔍 FILTER - Filtros Complexos

FILTER = Criar filtros com fórmulas
FILTER(<tabela>, <condição>)

⚖️ CALCULATE vs FILTER:

CALCULATE (direto)

Filtros simples (coluna = valor)

Vendas[Região] = "Sul"
✓ Mais rápido
FILTER

Filtros complexos (fórmulas)

FILTER(..., Vendas[Valor] > 500)
⚠️ Mais lento (use quando necessário)

🛠️ Exemplos com FILTER:

1. Vendas Acima de R$ 500
Vendas Altas = CALCULATE(
[Total Vendas],
FILTER(Vendas, Vendas[Valor] > 500)
)
2. Vendas no Primeiro Trimestre
Vendas Q1 = CALCULATE(
[Total Vendas],
FILTER(Vendas, MONTH(Vendas[Data]) <= 3)
)
3. Produtos Caros (Preço > R$ 1000)
Vendas Produtos Caros = CALCULATE(
[Total Vendas],
FILTER(Produtos, Produtos[Preco] > 1000)
)
AVANÇADO
4. Filtro com Medida
Regiões Top = CALCULATE(
[Total Vendas],
FILTER(ALL(Vendas[Região]), [Total Vendas] > 100000)
)

Filtra regiões que têm vendas > R$ 100.000

✅❌ Correto vs Errado

1. Referência a Medidas

CALCULATE(Total Vendas, ...)

Faltam os colchetes na medida!

CALCULATE([Total Vendas], ...)

Medidas sempre usam colchetes [Nome]

2. ALL vs ALLSELECTED

% Total = DIVIDE([Vendas], CALCULATE([Vendas], ALL(Vendas)))

Ignora slicers! Se filtrar ano 2024, % ainda usa todos os anos

% Total = DIVIDE([Vendas], CALCULATE([Vendas], ALLSELECTED(Vendas)))

Respeita slicers! % é calculado sobre o ano selecionado

3. Uso Desnecessário de FILTER

CALCULATE([Vendas], FILTER(Vendas, Vendas[Região] = "Sul"))

Complexo demais e mais lento!

CALCULATE([Vendas], Vendas[Região] = "Sul")

Mais simples e mais rápido! Use FILTER apenas para condições complexas

🎯 PROJETO FINAL

Dashboard Executivo de Performance

📋 Criar 12 Medidas:

Métricas Básicas:
  • 1. Total Vendas
  • 2. Total Meta
  • 3. % Meta Atingida
Por Região:
  • 4. Vendas Sul
  • 5. Vendas Norte
  • 6. Vendas Sudeste
Comparações:
  • 7. % do Total Geral (ALL)
  • 8. % do Total Selecionado
  • 9. Diferença da Meta
Filtros Complexos:
  • 10. Vendas Grandes (> R$ 1000)
  • 11. Vendas Eletrônicos Sul
  • 12. Performance Acima Média

📊 Layout do Dashboard:

  • Linha 1: 3 cards (Total Vendas, Meta, % Meta)
  • Linha 2: Gráfico de barras (Vendas por Região)
  • Linha 3: Tabela (Região | Vendas | Meta | % | Status)
  • Linha 4: Gráfico de pizza (% do Total por Região)
  • Slicers: Ano, Categoria

📚 Resumo da Aula

🧠 Conceitos Aprendidos

  • ✓ Contexto de Linha vs Filtro
  • ✓ Função CALCULATE
  • ✓ Função ALL
  • ✓ Função ALLSELECTED
  • ✓ Função FILTER
  • ✓ Múltiplos filtros
  • ✓ % do Total
  • ✓ Medidas comparativas

💡 Regras de Ouro

  • ⚡ CALCULATE modifica contexto de filtro
  • ⚡ 90% das medidas avançadas usam CALCULATE
  • ⚡ ALL remove TODOS os filtros
  • ⚡ ALLSELECTED respeita slicers
  • ⚡ FILTER para condições complexas
  • ⚡ % do Total = DIVIDE + ALL
  • ⚡ Use filtros diretos quando possível
  • ⚡ Sempre teste com visuais
Próxima Aula: Time Intelligence - Cálculos Temporais (YTD, MTD, ano anterior) 📅