GENERATE-Funktion (DAX)
Gibt eine Tabelle mit dem kartesischen Produkt aus jeder Zeile in table1 und der Tabelle zurück, die sich aus der Auswertung von table2 im Kontext der aktuellen Zeile aus table1 ergibt.
Syntax
GENERATE(<table1>, <table2>)
Parameter
table1
Ein DAX-Ausdruck, der eine Tabelle zurückgibt.table2
Ein DAX-Ausdruck, der eine Tabelle zurückgibt.
Rückgabewert
Eine Tabelle mit dem kartesischen Produkt aus jeder Zeile in table1 und der Tabelle, die sich aus der Auswertung von table2 im Kontext der aktuellen Zeile aus table1 ergibt.
Hinweise
Wenn die Auswertung von table2 für die aktuelle Zeile in table1 eine leere Tabelle zurückgibt, dann enthält die Ergebnistabelle nicht die aktuelle Zeile aus table1. Dies unterscheidet sich von GENERATEALL(), wo die aktuelle Zeile aus table1 in den Ergebnissen enthalten ist, und Spalten, die table2 entsprechen, NULL-Werte für diese Zeile enthalten.
Alle Spaltennamen aus table1 und table2 müssen sich unterscheiden, oder es wird ein Fehler zurückgegeben.
Beispiel
Im folgenden Beispiel möchte der Benutzer eine Zusammenfassungstabelle der Verkäufe nach Region und Produktkategorie für den Wiederverkäuferkanal wie die folgende Tabelle erstellen:
SalesTerritory[SalesTerritoryGroup] |
ProductCategory[ProductCategoryName] |
[Reseller Sales] |
Europe |
Accessories |
$ 142,227.27 |
Europe |
Bikes |
$ 9,970,200.44 |
Europe |
Clothing |
$ 365,847.63 |
Europe |
Components |
$ 2,214,440.19 |
North America |
Accessories |
$ 379,305.15 |
North America |
Bikes |
$ 52,403,796.85 |
North America |
Clothing |
$ 1,281,193.26 |
North America |
Components |
$ 8,882,848.05 |
Pacific |
Accessories |
$ 12,769.57 |
Pacific |
Bikes |
$ 710,677.75 |
Pacific |
Clothing |
$ 22,902.38 |
Pacific |
Components |
$ 108,549.71 |
Mit dem folgenden Code wird die oben erwähnte Tabelle erzeugt:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
Die erste SUMMARIZE-Anweisung, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), erzeugt eine Tabelle von Gebietsgruppen, wobei jede Zeile eine Gebietsgruppe ist, wie unten dargestellt:
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
NA
Die zweite SUMMARIZE-Anweisung, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), erzeugt eine Tabelle von Produktkategoriegruppen mit den Verkäufen des Wiederverkäufers für jede Gruppe, wie unten dargestellt:
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Components
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
Wenn Sie jedoch die oben genannte Tabelle im Kontext jeder Zeile aus der Tabelle der Gebietsgruppen auswerten, erhalten Sie andere Ergebnisse für jedes Gebiet.