GENERATE
aplica-se a:coluna calculadatabela calculadamedidacálculo visual
Retorna uma tabela com o produto Cartesiano entre cada linha em tabela1 e a tabela que resulta da avaliação tabela2 no contexto da linha atual de tabela1.
Sintaxe
GENERATE(<table1>, <table2>)
Parâmetros
Prazo | Definição |
---|---|
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 tabela1 e a tabela que resulta da avaliação tabela2 no contexto da linha atual de tabela1
Observações
Se a avaliação de tabela2 para a linha atual em tabela1 retornar uma tabela vazia, a tabela de resultados não conterá a linha atual de tabela1. Isso é diferente de GENERATEALL() em que a linha atual de tabela1 será incluída nos resultados e colunas correspondentes a tabela2 terão valores nulos para essa linha.
Todos os nomes de coluna de de tabela1 e tabela2 devem ser diferentes ou um erro é retornado.
Essa função não tem suporte para uso no modo DirectQuery quando usada em colunas calculadas ou regras de RLS (segurança em nível de linha).
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 revendedores, como a tabela a seguir:
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Vendas do revendedor] |
---|---|---|
Europa | Acessórios | R$ 142.227,27 |
Europa | Bicicletas | R$ 9.970.200,44 |
Europa | Roupa | R$ 365.847,63 |
Europa | Componentes | R$ 2.214.440,19 |
América do Norte | Acessórios | R$ 379.305,15 |
América do Norte | Bicicletas | R$ 52.403.796,85 |
América do Norte | Roupa | R$ 1.281.193,26 |
América do Norte | Componentes | R$ 8.882.848,05 |
Pacífico | Acessórios | R$ 12.769,57 |
Pacífico | Bicicletas | R$ 710.677,75 |
Pacífico | Roupa | R$ 22.902,38 |
Pacífico | Componentes | R$ 108.549,71 |
A fórmula a seguir produz a tabela acima:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
A primeira instrução SUMMARIZE,
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
, produz uma tabela de grupos de territórios, em que cada linha é um grupo de territórios, conforme mostrado abaixo:SalesTerritory[SalesTerritoryGroup] América do Norte Europa Pacífico NA A segunda instrução SUMMARIZE,
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
, produz uma tabela de grupos de Categorias de Produto com as vendas do Revendedor para cada grupo, conforme mostrado abaixo:ProductCategory[ProductCategoryName] [Vendas do revendedor] Bicicletas R$ 63.084.675,04 Componentes R$ 11.205.837,96 Roupa R$ 1.669.943,27 Acessórios R$ 534.301,99 No entanto, quando você pega a tabela acima e a avalia no contexto de cada linha da tabela de grupos de territórios, obtém resultados diferentes para cada território.