Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Mão na massa: Calculando vendas com filtros

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

1 resposta
solução!

Olá! Como vai?

O seu código DAX e o resultado no cartão ficaram absolutamente perfeitos! Conseguir integrar funções iteradoras, modificadores de contexto e funções de relacionamento em uma única medida demonstra que você está construindo uma base sólida e avançada em Power BI.

A sua medida VendasDataScience aplicou com maestria conceitos fundamentais da modelagem de dados e do mecanismo analítico do Power BI:

A Engenharia por trás do seu Código DAX

  • O poder da SUMX: Como você precisava fazer uma multiplicação linha a linha (multiplicar o preço pela quantidade de cada transação) antes de somar tudo, usar a função iteradora SUMX foi a escolha exata. Funções que terminam com "X" abrem um contexto de linha na tabela indicada, calculando a expressão para cada registro individualmente.
  • A blindagem com FILTER e ALL: Ao envelopar a tabela de vendas com FILTER(ALL(Vendas), ...), você garantiu que essa medida ignore qualquer filtro de linha lateral que venha de segmentos, tabelas ou gráficos do relatório para a tabela de Vendas. O cartão vai mostrar com consistência o total acumulado da categoria, não importa onde o usuário clique.
  • O uso cirúrgico da RELATED: Como a coluna Categoria não está na tabela de fatos (Vendas), mas sim na tabela de dimensão (Produtos), você utilizou a função RELATED com perfeição para "puxar" essa informação através do relacionamento de muitos para um entre as tabelas.

Uma dica de otimização de performance: Substituindo FILTER(ALL(...)) por CALCULATE

A sua fórmula está funcionando perfeitamente e o resultado de 73,20 Milhões está totalmente correto. Contudo, na engenharia de dados com DAX, existe uma boa prática de mercado focada em performance de processamento.

Quando passamos uma tabela inteira com FILTER(ALL(Vendas)), o Power BI precisa varrer e processar todas as colunas da tabela de fatos na memória para aplicar o filtro. Podemos atingir exatamente o mesmo resultado de forma muito mais rápida substituindo essa estrutura pela combinação de CALCULATE com KEEPFILTERS ou aplicando o filtro diretamente.

Veja como o mercado costuma escrever essa mesma medida para otimizar o desempenho do relatório:

VendasDataScience_Otimizada = 
CALCULATE(
    SUMX(Vendas, Vendas[Preço Calculado] * Vendas[Quantidade]),
    Produtos[Categoria] = "Data Science"
)

Por que essa alternativa é mais performática?

  1. O CALCULATE faz a transição de contexto automaticamente e de forma interna.
  2. Em vez de escanear a tabela pesada de Vendas inteira para filtrar, o Power BI aplica o filtro diretamente na tabela de dimensão Produtos (que é infinitamente menor), propagando o resultado pelo relacionamento de forma instantânea.

Parabéns pelo excelente progresso com as funções de tabela no DAX e por entregar o desafio com sucesso! O seu relatório está caminhando para um nível técnico impecável.

Espero que possa ter lhe ajudado!