Skip to content

Lição 9: Iteradores (SUMX) ​

Tipo
Tutorial
Para
Analista
Na tela
DataViz › Aplicação › Editar › Expressões
Liberação
Em beta

Lição 9 de 12 do tutorial DAX, nível avançado, cerca de 10 minutos. Objetivo: calcular uma conta em cada linha de uma tabela e juntar o resultado.

1. Conta em cada linha ​

A tabela Vendas tem quantidade e preço, e não tem o total da venda. Crie a medida:

dax
SUMX('Vendas', 'Vendas'[Qtd] * 'Vendas'[Preço])

O SUMX multiplica quantidade por preço em cada venda e soma os resultados.

2. Média por cliente ​

Numa tabela com UF nas linhas, crie a medida:

dax
AVERAGEX(
    VALUES('Clientes'[Cliente]),
    CALCULATE(SUM('Vendas'[Faturamento]))
)

Cada UF mostra a média do faturamento dos seus clientes. A média por venda daria outro número.

Valores do app de demonstração:

UFFaturamentoMédia por cliente
PR63.574.811,651.352.655,57
SC29.421.831,761.401.039,61
SP18.503.356,551.541.946,38

Como funciona ​

O iterador percorre a tabela do primeiro argumento, calcula a expressão em cada linha e junta: SUMX soma, AVERAGEX faz a média, MAXX pega o maior.

Sobre a tabela de vendas, a expressão usa só colunas. Para usar uma medida, o iterador percorre VALUES de uma coluna, como VALUES('Clientes'[Cliente]).

No corpo do iterador, o agregado vai num CALCULATE. Sem ele, a medida é recusada.

Em SQL ​

SUM(qtd * preco). A conta dentro do SUM já roda em cada linha. A média por cliente pede uma subconsulta agrupada por cliente.

Exercício ​

Crie a medida "Maior cliente", com o maior faturamento entre os clientes de cada linha.

Mostrar resposta
dax
MAXX(
    VALUES('Clientes'[Cliente]),
    CALCULATE(SUM('Vendas'[Faturamento]))
)

Próximos passos ​