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])
)
)
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 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 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.