Partilhar via


GERAR

Aplica-se a:Colunacalculada Tabelacalculada MedidaCá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])  
)  
)  
  1. 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
  2. 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
  3. 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.