Freigeben über


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

  2. 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

  3. 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.