次の方法で共有


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. 1 つ目の SUMMARIZE では、地域グループのテーブルが生成されます。次のように、それぞれの行には地域グループが格納されます。

    SalesTerritory[SalesTerritoryGroup]

    North America

    Europe

    Pacific

    NA

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

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