Ler em inglês

Partilhar via


GERAR

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Devolve uma tabela com o produto cartesiano entre cada linha tabela1 e a tabela que resulta da avaliação tabela2 no contexto da linha atual tabela1.

Sintaxe

GENERATE(<table1>, <table2>)  

Parâmetros

Vigência 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 tabela 1 e a tabela que resulta da avaliação tabela2 no contexto da linha atual tabela1

Comentários

  • 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(), onde a linha atual de tabela1 será incluída nos resultados e colunas correspondentes a tabela2 terá valores nulos para essa linha.

  • Todos os nomes de coluna 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]
Portugal Acessórios $ 142,227.27
Portugal Bicicletas $ 9,970,200.44
Portugal Vestuário $ 365,847.63
Portugal Componentes $ 2,214,440.19
América do Norte Acessórios $ 379,305.15
América do Norte Bicicletas $ 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 Acessórios $ 12,769.57
Pacífico Bicicletas $ 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
    Portugal
    Pacífico
    NA
  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]
    Bicicletas $ 63,084,675.04
    Componentes $ 11,205,837.96
    Vestuário $ 1,669,943.27
    Acessórios $ 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.