GERAR
Aplica-se a: Coluna calculada Tabela calculada Medida Cálculo visual
Retorna uma tabela com o produto cartesiano entre cada linha da tabela1 e a tabela que resulta da avaliação da tabela2 no contexto da linha atual da tabela1.
Sintaxe
GENERATE(<table1>, <table2>)
Parâmetros
Termo | Definição |
---|---|
Tabela 1 | Qualquer expressão DAX que retorna uma tabela. |
Tabela 2 | Qualquer expressão DAX que retorna uma tabela. |
Valor devolvido
Uma tabela com o produto cartesiano entre cada linha da tabela1 e a tabela que resulta da avaliação da tabela2 no contexto da linha atual da tabela1
Observações
Se a avaliação da tabela2 para a linha atual na tabela1 retornar uma tabela vazia, a tabela de resultados não conterá a linha atual da tabela1. Isso é diferente de GENERATEALL(), onde a linha atual da tabela1 será incluída nos resultados e as colunas correspondentes à tabela2 terão valores nulos para essa linha.
Todos os nomes de colunas da tabela1 e tabela2 devem ser diferentes ou um erro é retornado.
Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).
Exemplo
No exemplo a seguir, o usuário deseja uma tabela resumida das vendas por região e categoria de produto para o canal Revendedores, como a tabela a seguir:
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Vendas de revendedores] |
---|---|---|
Europa | Accessories | $ 142,227.27 |
Europa | Bikes | $ 9,970,200.44 |
Europa | Vestuário | $ 365,847.63 |
Europa | Componentes | $ 2,214,440.19 |
América do Norte | Accessories | $ 379,305.15 |
América do Norte | Bikes | $ 52,403,796.85 |
América do Norte | Vestuário | $ 1,281,193.26 |
América do Norte | Componentes | $ 8,882,848.05 |
Pacífico | Accessories | $ 12,769.57 |
Pacífico | Bikes | $ 710,677.75 |
Pacífico | Vestuário | $ 22,902.38 |
Pacífico | Componentes | $ 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, onde cada linha é um grupo de territórios, como mostrado abaixo:SalesTerritory[SalesTerritoryGroup] América do Norte Europa Pacífico ND A segunda declaração SUMMARIZE,
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
, produz uma tabela de grupos de Categoria de Produto com as vendas de Revendedor para cada grupo, conforme mostrado abaixo:ProductCategory[ProductCategoryName] [Vendas de revendedores] Bikes $ 63,084,675.04 Componentes $ 11,205,837.96 Vestuário $ 1,669,943.27 Accessories $ 534,301.99 No entanto, quando você pega a tabela acima e a avalia sob o contexto de cada linha da tabela de grupos de territórios, obtém resultados diferentes para cada território.