Compartilhar via


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])
)
)
  1. 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
  2. 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
  3. 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.