GENERATEALL 関数 (DAX)
table1 の各行と、table1 の現在行のコンテキストで table2 を評価することによって得られたテーブルとのデカルト積を含んだテーブルを返します。
構文
GENERATEALL(<table1>, <table2>)
パラメーター
table1
テーブルを返す任意の DAX 式。table2
テーブルを返す任意の DAX 式。
戻り値
table1 の各行と、table1 の現在行のコンテキストで table2 を評価することによって得られたテーブルとのデカルト積を含んだテーブル。
説明
table1 の現在の行に関して table2 を評価したときに空のテーブルが返された場合、table1 の現在の行は結果に含められ、その行の table2 に対応する列には Null 値が割り当てられます。 この点は GENERATE() とは異なります。GENERATE() では、table1 の現在の行は結果に含まれません。
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 |
NA |
Accessories |
|
NA |
Bikes |
|
NA |
Clothing |
|
NA |
Components |
|
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 |
このようなテーブルは、次のコードによって生成されます。
GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
1 つ目の SUMMARIZE では、地域グループのテーブルが生成されます。次のように、それぞれの行には地域グループが格納されます。
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
NA
2 つ目の SUMMARIZE では、製品カテゴリ グループのテーブルが生成されます。次のように、製品カテゴリ グループごとの再販業者の売上が格納されます。
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Components
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
このテーブルを、地域グループ テーブルの各行のコンテキストで評価すると、地域ごとの異なる結果が得られます。