GENERATE

Gilt für:Berechnete SpalteBerechnete TabelleMeasureVisuelle Berechnung

Gibt eine Tabelle mit dem kartesischen Produkt zwischen 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

Begriff Definition
table1 DAX-Ausdruck, der eine Tabelle zurückgibt.
table2 DAX-Ausdruck, der eine Tabelle zurückgibt.

Rückgabewert

Eine Tabelle mit dem kartesischen Produkt zwischen jeder Zeile in table1 und der Tabelle, die sich aus der Auswertung von table2 im Kontext der aktuellen Zeile aus table1 ergibt

Bemerkungen

  • Wenn die Auswertung von table2 für die aktuelle Zeile in table1 eine leere Tabelle zurückgibt, enthält die Ergebnistabelle nicht die aktuelle Zeile aus table1. Dies ist anders als bei der GENERATEALL()-Funktion, bei der die aktuelle Zeile aus table1 in die Ergebnisse einbezogen wird und Spalten, die table2 entsprechen, NULL-Werte für diese Zeile aufweisen.

  • Alle Spaltennamen von table1 und table2 müssen unterschiedlich sein, sonst wird ein Fehler zurückgegeben.

  • Die Verwendung dieser Funktion im DirectQuery-Modus wird nicht unterstützt, wenn sie in berechneten Spalten oder RLS-Regeln (Row-Level Security) eingesetzt wird.

Beispiel

Im folgenden Beispiel möchte der Benutzer eine Übersichtstabelle der Umsätze nach Region und Produktkategorie für den Kanal „Reseller“ anzeigen, wie in der folgenden Tabelle dargestellt:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Reseller Sales]
Europa Accessories USD 142.227,27
Europa Bikes USD 9.970.200,44
Europa Clothing USD 365.847,63
Europa Komponenten USD 2.214.440,19
Nordamerika Accessories USD 379.305,15
Nordamerika Bikes USD 52.403.796,85
Nordamerika Clothing USD 1.281.193,26
Nordamerika Komponenten USD 8,882,848.05
Pacific Accessories USD 12,769.57
Pacific Bikes USD 710.677,75
Pacific Clothing USD 22.902,38
Pacific Komponenten USD 108.549,71

Die folgende Formel erzeugt die oben angezeigte Tabelle:

GENERATE(  
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])  
,SUMMARIZE(ProductCategory   
, [ProductCategoryName]  
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  
)  
)  
  1. Die erste SUMMARIZE-Anweisung (SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])) erzeugt eine Tabelle mit den Gebietsgruppen, wobei jede Zeile eine Gebietsgruppe enthält (siehe unten):

    SalesTerritory[SalesTerritoryGroup]
    Nordamerika
    Europa
    Pacific
    Nicht verfügbar
  2. Die zweite SUMMARIZE-Anweisung (SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))) erzeugt eine Tabelle mit Produktkategoriegruppen und Wiederverkäuferumsätzen für jede Gruppe (siehe unten):

    ProductCategory[ProductCategoryName] [Reseller Sales]
    Bikes USD 63.084.675,04
    Komponenten USD 11.205.837,96
    Clothing USD 1.669.943,27
    Accessories USD 534.301,99
  3. Wenn Sie jedoch die obige Tabelle nehmen und sie im Kontext jeder Zeile in der Tabelle der Gebietsgruppen auswerten, erhalten Sie für jedes Gebiet andere Ergebnisse.