1
resposta

[Projeto] Mão na massa: explorando os contextos no DAX

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Luiz. Como vai?

É muito interessante observar as capturas de tela que você compartilhou, pois elas ilustram perfeitamente um dos conceitos mais fundamentais e, às vezes, desafiadores do Power BI: a diferença entre o Contexto de Filtro e o Contexto de Linha, além do impacto da função ALL.

Nas suas imagens, vemos duas abordagens para a mesma medida, e a mudança no código altera completamente o comportamento dos visuais:

1. O uso da função ALL (Primeira Imagem)
No primeiro código, você utilizou ALL(vendas) dentro da função FILTER.

  • A função ALL tem o papel de ignorar quaisquer filtros que venham do relatório (como nomes de vendedores, datas ou categorias em um gráfico).
  • Como resultado, o SUMX percorre a tabela inteira de vendas, filtrando apenas pela categoria "Big Data", independentemente de onde essa medida seja colocada.
  • É por isso que o seu cartão exibe o valor total fixo de 2 Mi. Se você colocasse essa medida em uma tabela com nomes de vendedores, todos receberiam o mesmo valor total, pois o filtro de linha do vendedor estaria sendo "ignorado" pelo ALL.

2. O comportamento sem o ALL (Segunda Imagem)
No segundo código, você removeu o ALL e deixou apenas a referência à tabela vendas.

  • Aqui, o Contexto de Filtro do visual está ativo. Quando você coloca a medida em uma tabela ao lado da coluna "Nome", o Power BI filtra a tabela de vendas para aquele nome específico antes de a função SUMX realizar o cálculo.
  • Isso explica por que os valores aparecem quebrados por pessoa (643.179, 652.762, etc.), resultando no total de 1.937.449.

Dicas e Boas Práticas:

  • Iteradores vs. Agregações Simples: A função SUMX é um iterador, o que significa que ela passa linha por linha da tabela resultante do FILTER. Para cálculos simples de soma com filtros, a função CALCULATE costuma ser mais performática e legível.
  • RELATED: Você utilizou muito bem a função RELATED. Ela é essencial quando precisamos buscar uma informação em uma tabela de dimensão (Produtos) enquanto estamos iterando uma tabela de fatos (Vendas), aproveitando o relacionamento entre elas.

Um exemplo de como essa mesma lógica da segunda imagem poderia ser escrita utilizando CALCULATE, que é o padrão mais comum no dia a dia:

QTD VENDAS BIG DATA = 
CALCULATE(
    SUM(vendas[Quantidade]),
    produtos[Categoria] = "Big Data"
)

O CALCULATE faz a transição de contexto automaticamente, tornando o código mais limpo e rápido para o motor do Power BI processar.

Espero que possa ter lhe ajudado!