Módulo 9: DAX avançado: iteradores, tabelas virtuais e metas

Aula 2 de 4

Tabelas virtuais: ADDCOLUMNS, SUMMARIZE e GENERATE

Criar uma tabela temporária na memória para responder ao que o modelo não responde direto.

20 minutos de leitura


Tabela virtual é uma tabela que existe apenas durante a avaliação da medida. É o recurso mais poderoso do DAX avançado: você monta o dataset que precisa e então agrega sobre ele.

DAXADDCOLUMNS + SUMMARIZE: o padrão recomendado
Clientes Acima de 100 mil =VAR Base =    ADDCOLUMNS(        SUMMARIZE( fVendas, dCliente[Cliente] ),        "@Receita", [Receita Total]    )RETURNCOUNTROWS( FILTER( Base, [@Receita] > 100000 ) )
DAXSUMMARIZECOLUMNS em medidas complexas
Receita do Segundo Melhor Mês =VAR Meses =    ADDCOLUMNS( ALLSELECTED( dCalendario[AnoMes] ), "@Receita", [Receita Total] )VAR Ordenado = TOPN( 2, Meses, [@Receita], DESC )VAR Segundo  = MINX( Ordenado, [@Receita] )RETURN Segundo

Análise de coorte com GENERATE

DAXRetenção por mês de aquisição
Retenção da Coorte =VAR MesAnalise = SELECTEDVALUE( dCalendario[AnoMes] )VAR ClientesComPrimeiraCompra =    ADDCOLUMNS(        VALUES( fVendas[IdCliente] ),        "@PrimeiraCompra",        CALCULATE( MIN( fVendas[Data] ), REMOVEFILTERS( dCalendario ) )    )VAR CoorteSelecionada =    FILTER(        ClientesComPrimeiraCompra,        FORMAT( [@PrimeiraCompra], "yyyy-mm" ) = MesAnalise    )RETURNCOUNTROWS( CoorteSelecionada )

Comparação linha a linha entre dois períodos

DAXQuantos produtos cresceram em relação ao ano passado
Produtos em Crescimento =VAR Base =    ADDCOLUMNS(        VALUES( dProduto[Produto] ),        "@Atual",    [Receita Total],        "@Anterior", CALCULATE( [Receita Total], SAMEPERIODLASTYEAR( dCalendario[Date] ) )    )RETURNCOUNTROWS(    FILTER( Base, [@Atual] > [@Anterior] && NOT ISBLANK( [@Anterior] ) ))

Exercício prático

Crie a medida 'Produtos em Crescimento' e a complementar 'Produtos em Queda'. Depois monte um cartão para cada uma e valide o total contra a contagem de produtos com venda nos dois períodos.