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 SegundoAná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] ) ))