GENERATE 関数 (DAX)

table1 の各行と、table1 の現在行のコンテキストで table2 を評価することによって得られたテーブルとのデカルト積を含んだテーブルを返します。

構文

GENERATE(<table1>, <table2>)

パラメーター

  • table1
    テーブルを返す任意の DAX 式。

  • table2
    テーブルを返す任意の DAX 式。

戻り値

table1 の各行と、table1 の現在行のコンテキストで table2 を評価することによって得られたテーブルとのデカルト積を含んだテーブル。

説明

  • table1 の現在の行に関して table2 を評価して得られたのが空のテーブルであった場合、結果のテーブルに、table1 の現在の行は格納されません。 この点は GENERATEALL() とは異なります。GENERATEALL() では、table1 の現在の行が結果に含まれ、その行で table2 に対応する列には Null 値が割り当てられます。

  • table1 の列名と table2 の列名はすべて異なっている必要があります。そのようになっていない場合、エラーが返されます。

使用例

再販業者による売上を地域と製品カテゴリごとに示した次のような概要テーブルが必要になったとします。

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

このようなテーブルは、次のコードによって生成されます。

GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory 
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
  1. 1 つ目の SUMMARIZE ステートメント SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]) では、地域グループのテーブルが生成されます。次のように、それぞれの行には地域グループが格納されます。

    SalesTerritory[SalesTerritoryGroup]

    North America

    Europe

    Pacific

    NA

  2. 2 つ目の SUMMARIZE ステートメント SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])) では、製品カテゴリ グループのテーブルが生成されます。次のように、製品カテゴリ グループごとの再販業者の売上が格納されます。

    ProductCategory[ProductCategoryName]

    [Reseller Sales]

    Bikes

    $ 63,084,675.04

    Components

    $ 11,205,837.96

    Clothing

    $ 1,669,943.27

    Accessories

    $ 534,301.99

  3. このテーブルを、地域グループ テーブルの各行のコンテキストで評価すると、地域ごとの異なる結果が得られます。