GENERATEALL
Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual
Retorna uma tabela com o produto cartesiano entre cada linha em table1 e a tabela resultante da avaliação de table2 no contexto da linha atual de table1.
Sintaxe
GENERATEALL(<table1>, <table2>)
Parâmetros
Termo | Definição |
---|---|
table1 | Qualquer expressão DAX que retorna uma tabela. |
table2 | Qualquer expressão DAX que retorna uma tabela. |
Valor retornado
Uma tabela com o produto cartesiano entre cada linha em table1 e a tabela resultante da avaliação 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ão valores nulos para essa linha. Isso é diferente de GENERATE(), em que a linha atual de table1não será incluída nos resultados.
Todos os nomes de coluna de table1 e table2 devem ser diferentes ou um erro é retornado.
Não há suporte para a função ser usada no modo DirectQuery quando usada em regras RLS (segurança em nível de linha) ou colunas calculadas.
Exemplo
No exemplo a seguir, o usuário deseja uma tabela de resumo das vendas por região e categoria de produto para o canal de revendedores, como a tabela a seguir:
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Vendas do Revendedor] |
---|---|---|
Europa | Acessórios | US$ 142.227,27 |
Europa | Bicicletas | US$ 9.970.200,44 |
Europa | Vestuário | US$ 365.847,63 |
Europa | Componentes | US$ 2.214.440,19 |
NA | Acessórios | |
NA | Bicicletas | |
NA | Vestuário | |
NA | Componentes | |
América do Norte | Acessórios | US$ 379.305,15 |
América do Norte | Bicicletas | US$ 52.403.796,85 |
América do Norte | Vestuário | US$ 1.281.193,26 |
América do Norte | Componentes | US$ 8.882.848,05 |
Pacífico | Acessórios | US$ 12.769,57 |
Pacífico | Bicicletas | US$ 710.677,75 |
Pacífico | Vestuário | US$ 22.902,38 |
Pacífico | Componentes | US$ 108.549,71 |
A seguinte fórmula produzirá a tabela acima:
GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
A primeira instrução SUMMARIZE produz uma tabela de grupos de regiões, em que cada linha é um grupo de regiões, como as mostradas abaixo:
SalesTerritory[SalesTerritoryGroup] América do Norte Europa Pacífico NA A segunda instrução SUMMARIZE produz uma tabela de grupos de categorias de produtos com as vendas do revendedor para cada grupo, conforme mostrado abaixo:
ProductCategory[ProductCategoryName] [Vendas do Revendedor] Bicicletas US$ 63.084.675,04 Componentes US$ 11.205.837,96 Clothing US$ 1.669.943,27 Acessórios US$ 534.301,99 No entanto, quando você observa a tabela acima e avalia a tabela no contexto de cada linha da tabela de grupos de regiões, obtém resultados diferentes para cada região.