Dela via


GENERATE

gäller för:beräknad kolumnberäknad tabellMåttVisuell beräkning

Returnerar en tabell med kartesisk produkt mellan varje rad i table1 och tabellen som är resultatet av utvärderingen table2 i kontexten för den aktuella raden från table1.

Syntax

GENERATE(<table1>, <table2>)

Parametrar

Term Definition
table1 Alla DAX uttryck som returnerar en tabell.
table2 Alla DAX uttryck som returnerar en tabell.

Returvärde

En tabell med kartesisk produkt mellan varje rad i table1 och tabellen som är resultatet av utvärderingen table2 i kontexten för den aktuella raden från table1

Anmärkningar

  • Om utvärderingen av table2 för den aktuella raden i table1 returnerar en tom tabell, innehåller resultattabellen inte den aktuella raden från table1. Detta skiljer sig från GENERATEALL() där den aktuella raden från table1 inkluderas i resultaten och kolumnerna som motsvarar table2 har null-värden för den raden.

  • Alla kolumnnamn från table1 och table2 måste vara olika eller så returneras ett fel.

  • Den här funktionen stöds inte för användning i DirectQuery-läge när den används i beräknade kolumner eller säkerhetsregler på radnivå (RLS).

Exempel

I följande exempel vill användaren ha en sammanfattningstabell över försäljningen per region och produktkategori för kanalen Återförsäljare, som i följande tabell:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Reseller Sales]
Europa Tillbehör $ 142,227.27
Europa Cyklar $ 9 970 200,44
Europa Kläder $ 365,847.63
Europa Komponenter $ 2 214 440,19
Nordamerika Tillbehör $ 379,305.15
Nordamerika Cyklar $ 52,403,796.85
Nordamerika Kläder $ 1 281 193,26
Nordamerika Komponenter $ 8 882 848,05
Stilla havet Tillbehör $ 12,769.57
Stilla havet Cyklar $ 710,677.75
Stilla havet Kläder $ 22,902.38
Stilla havet Komponenter $ 108,549.71

Följande formel genererar tabellen ovan:

GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory 
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
  1. Den första SUMMARIZE-instruktionen, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), skapar en tabell med områdesgrupper, där varje rad är en områdesgrupp, enligt nedan:

    SalesTerritory[SalesTerritoryGroup]
    Nordamerika
    Europa
    Stilla havet
    NA
  2. Den andra SUMMARIZE-instruktionen, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), skapar en tabell med produktkategorigrupper med återförsäljares försäljning för varje grupp enligt nedan:

    ProductCategory[ProductCategoryName] [Reseller Sales]
    Cyklar $ 63,084,675.04
    Komponenter $ 11,205,837.96
    Kläder $ 1 669 943,27
    Tillbehör $ 534,301.99
  3. Men när du tar tabellen ovan och utvärderar den under kontexten för varje rad från tabellen områdesgrupper får du olika resultat för varje område.