GENERATEGENERATE

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.Returns a table with the Cartesian product between each row in table1 and the table that results from evaluating table2 in the context of the current row from table1.

SyntaxSyntax

GENERATE(<table1>, <table2>)  

ParameterParameters

BegriffTerm DefinitionDefinition
table1table1 DAX-Ausdruck, der eine Tabelle zurückgibt.Any DAX expression that returns a table.
table2table2 DAX-Ausdruck, der eine Tabelle zurückgibt.Any DAX expression that returns a table.

RückgabewertReturn value

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 ergibtA table with the Cartesian product between each row in table1 and the table that results from evaluating table2 in the context of the current row from table1

BemerkungenRemarks

  • 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.If the evaluation of table2 for the current row in table1 returns an empty table, then the result table will not contain the current row from 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.This is different than GENERATEALL() where the current row from table1 will be included in the results and columns corresponding to table2 will have null values for that row.

  • Alle Spaltennamen von table1 und table2 müssen unterschiedlich sein, sonst wird ein Fehler zurückgegeben.All column names from table1 and table2 must be different or an error is returned.

  • Die Verwendung dieser Funktion im DirectQuery-Modus wird nicht unterstützt, wenn sie in berechneten Spalten oder RLS-Regeln (Row-Level Security) eingesetzt wird.This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.

BeispielExample

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:In the following example the user wants a summary table of the sales by Region and Product Category for the Resellers channel, like the following table:

SalesTerritory[SalesTerritoryGroup]SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName]ProductCategory[ProductCategoryName] [Reseller Sales][Reseller Sales]
EuropaEurope AccessoriesAccessories $ 142.227,27$ 142,227.27
EuropaEurope BikesBikes $ 9.970.200,44$ 9,970,200.44
EuropaEurope ClothingClothing $ 365.847,63$ 365,847.63
EuropaEurope KomponentenComponents $ 2.214.440,19$ 2,214,440.19
NordamerikaNorth America AccessoriesAccessories $ 379.305,15$ 379,305.15
NordamerikaNorth America BikesBikes $ 52.403.796,85$ 52,403,796.85
NordamerikaNorth America ClothingClothing $ 1.281.193,26$ 1,281,193.26
NordamerikaNorth America KomponentenComponents $ 8.882.848,05$ 8,882,848.05
PacificPacific AccessoriesAccessories $ 12.769,57$ 12,769.57
PacificPacific BikesBikes $ 710.677,75$ 710,677.75
PacificPacific ClothingClothing $ 22.902,38$ 22,902.38
PacificPacific KomponentenComponents $ 108.549,71$ 108,549.71

Die folgende Formel erzeugt die oben angezeigte Tabelle:The following formula produces the above table:

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):The first SUMMARIZE statement, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), produces a table of territory groups, where each row is a territory group, as shown below:

    SalesTerritory[SalesTerritoryGroup]SalesTerritory[SalesTerritoryGroup]
    NordamerikaNorth America
    EuropaEurope
    PacificPacific
    Nicht verfügbarNA
  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):The second SUMMARIZE statement, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), produces a table of Product Category groups with the Reseller sales for each group, as shown below:

    ProductCategory[ProductCategoryName]ProductCategory[ProductCategoryName] [Reseller Sales][Reseller Sales]
    BikesBikes $ 63.084.675,04$ 63,084,675.04
    KomponentenComponents $ 11.205.837,96$ 11,205,837.96
    ClothingClothing $ 1.669.943,27$ 1,669,943.27
    AccessoriesAccessories $ 534.301,99$ 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.However, when you take the above table and evaluate it under the context of each row from the territory groups table, you obtain different results for each territory.