Módulo 8: DAX intermediário: filtros, relações e ranking

Aula 1 de 4

FILTER e a família ALL

Quando escrever FILTER, quando não escrever e o que cada ALL remove de verdade.

19 minutos de leitura


FILTER

FILTER devolve uma tabela com as linhas que atendem a uma condição. Ele é um iterador: percorre linha a linha. Por isso é poderoso e caro.

DAXQuando FILTER é obrigatório
-- Condição com duas colunasReceita Grandes Pedidos Sem Desconto =CALCULATE(    [Receita Total],    FILTER( fVendas, fVendas[Quantidade] > 10 && fVendas[Desconto] = 0 )) -- Condição que usa uma medidaClientes Acima da Média =VAR MediaGeral =    AVERAGEX( ALL( dCliente ), [Receita Total] )RETURNCOUNTROWS(    FILTER( VALUES( dCliente[IdCliente] ), [Receita Total] > MediaGeral ))
DAXMesma lógica, custo muito menor
-- CaroCALCULATE( [Receita Total], FILTER( fVendas, fVendas[Quantidade] > 10 ) ) -- Barato: itera só os valores distintos de quantidadeCALCULATE( [Receita Total], FILTER( VALUES( fVendas[Quantidade] ), fVendas[Quantidade] > 10 ) ) -- Mais barato ainda quando possívelCALCULATE( [Receita Total], fVendas[Quantidade] > 10 )

A família ALL

FunçãoO que removeUso típico
ALL(Tabela)Todos os filtros da tabela inteiraTotal geral
ALL(Tabela[Coluna])Filtros apenas daquela colunaTotal dentro de uma hierarquia
ALLEXCEPT(Tabela, Col)Todos menos os das colunas listadas% dentro do grupo
ALLSELECTED()O filtro do visual, preservando as segmentações% do visível
ALLNOBLANKROW(Tabela)Como ALL, mas sem a linha em branco de chave órfãContagens de dimensão
REMOVEFILTERS(...)Sinônimo moderno de ALL dentro de CALCULATELegibilidade
DAXALLSELECTED na prática
-- Matriz com Produto nas linhas e segmentação de Categoria.-- O usuário selecionou 3 categorias.% do Visível =DIVIDE(    [Receita Total],    CALCULATE( [Receita Total], ALLSELECTED( dProduto ) ))-- Denominador = total das 3 categorias selecionadas (não o total geral,-- e não o valor do próprio produto).

Exercício prático

Monte uma matriz com Categoria e Produto. Crie quatro medidas de participação usando ALL, ALLEXCEPT, ALLSELECTED e REMOVEFILTERS e explique por escrito, com números, a diferença de cada uma.