Um iterador percorre uma tabela linha a linha, avalia uma expressão em cada linha e agrega o resultado. É o que permite cálculos que a agregação simples não alcança.
DAXQuando SUMX é obrigatório
-- Não existe coluna de receita: ela nasce da multiplicação linha a linhaReceita = SUMX( fVendas, fVendas[Quantidade] * fVendas[PrecoUnitario] ) -- Cálculo com regra por linhaReceita Líquida =SUMX( fVendas, fVendas[Quantidade] * fVendas[PrecoUnitario] * ( 1 - fVendas[PercDesconto] )) -- Margem por linha, considerando o custo vigente na dataMargem Real =SUMX( fVendas, VAR Preco = fVendas[PrecoUnitario] VAR Custo = RELATED( dProduto[CustoPadrao] ) RETURN fVendas[Quantidade] * ( Preco - Custo ))Iterando dimensões em vez da fato
DAXMédia de receita por loja (e não média das linhas)
-- ERRADO: média das linhas de vendaMédia Errada = AVERAGE( fVendas[Receita] ) -- CERTO: média do total de cada lojaReceita Média por Loja =AVERAGEX( VALUES( dLoja[Loja] ), [Receita Total] )Outros iteradores muito úteis
DAXMINX, MAXX, CONCATENATEX, COUNTX
Melhor Mês do Ano =MAXX( VALUES( dCalendario[AnoMes] ), [Receita Total] ) Nome do Melhor Mês =VAR Melhor = [Melhor Mês do Ano]RETURNCONCATENATEX( FILTER( VALUES( dCalendario[AnoMes] ), [Receita Total] = Melhor ), dCalendario[AnoMes], ", ") Categorias Selecionadas =CONCATENATEX( VALUES( dProduto[Categoria] ), dProduto[Categoria], " • ", dProduto[Categoria], ASC ) Dias com Venda = COUNTX( VALUES( dCalendario[Date] ), IF( [Receita Total] > 0, 1 ) )