Função GENERATEALL (DAX)
Retorna uma tabela com o produto cartesiano entre cada linha em table1 e a tabela que resulta da avaliação de table2 no contexto da linha atual de table1.
Sintaxe
GENERATEALL(<table1>, <table2>)
Parâmetros
table1
Qualquer expressão DAX que retorna uma tabela.table2
Qualquer expressão DAX que retorna uma tabela.
Valor de retorno
Uma tabela com o produto cartesiano entre cada linha em table1 e a tabela que resulta da avaliação de table2 no contexto da linha atual de table1
Comentários
Se a avaliação de table2 para a linha atual em table1 retornar uma tabela vazia, a linha atual de table1 será incluída nos resultados e as colunas correspondentes a table2 terá valores nulos para essa linha. Isso é diferente de GENERATE() em que a linha atual de table1 não será incluída nos resultados.
Todos os nomes de coluna de table1 e table2 devem ser diferentes; caso contrário, um erro será retornado.
Exemplo
No seguinte exemplo, o usuário deseja uma tabela resumida das vendas por Região e Categoria de Produto para o canal de Revendedores, como esta tabela:
SalesTerritory[SalesTerritoryGroup] |
ProductCategory[ProductCategoryName] |
[Reseller Sales] |
---|---|---|
Europa |
Acessórios |
$ 142,227.27 |
Europa |
Bikes |
$ 9,970,200.44 |
Europa |
Roupas |
$ 365,847.63 |
Europa |
Componentes |
$ 2,214,440.19 |
NA |
Acessórios |
|
NA |
Bikes |
|
NA |
Roupas |
|
NA |
Componentes |
|
North America |
Acessórios |
$ 379,305.15 |
North America |
Bikes |
$ 52,403,796.85 |
North America |
Roupas |
$ 1,281,193.26 |
North America |
Componentes |
$ 8,882,848.05 |
Pacific |
Acessórios |
$ 12,769.57 |
Pacific |
Bikes |
$ 710,677.75 |
Pacific |
Roupas |
$ 22,902.38 |
Pacific |
Componentes |
$ 108,549.71 |
O seguinte código gera a tabela anterior:
GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
O primeiro SUMMARIZE gera uma tabela de grupos de território, em que cada linha é um grupo de territórios, como os listados abaixo:
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
NA
O segundo SUMMARIZE gera uma tabela de grupos de Categorias de Produtos com as vendas de Revendedor para cada grupo, conforme mostrado abaixo:
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Componentes
$ 11,205,837.96
Roupas
$ 1,669,943.27
Acessórios
$ 534,301.99
Porém, quando você avalia a tabela anterior considerando o contexto de cada linha da tabela de grupos de territórios, obtém resultados diferentes para cada território.