GENERATEALL 函數 (DAX)
傳回包含 table1 中每個資料列之間笛卡兒乘積的資料表,以及在 table1 之目前資料列的內容中評估 table2 所產生的資料表。
GENERATEALL(<table1>, <table2>)
table1
傳回資料表的任何 DAX 運算式。table2
傳回資料表的任何 DAX 運算式。
包含 table1 中每個資料列之間笛卡兒乘積的資料表,以及在 table1 之目前資料列的內容中評估 table2 所產生的資料表。
如果針對 table1 的目前資料列評估 table2 傳回空白資料表,則 table1 的目前資料列將包含在結果中,而且對應至 table2 的資料行將針對該資料列具有 null 值。 這與 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 |
元件 |
$ 2,214,440.19 |
無 |
Accessories |
|
無 |
Bikes |
|
無 |
Clothing |
|
無 |
元件 |
|
North America |
Accessories |
$ 379,305.15 |
North America |
Bikes |
$ 52,403,796.85 |
North America |
Clothing |
$ 1,281,193.26 |
North America |
元件 |
$ 8,882,848.05 |
Pacific |
Accessories |
$ 12,769.57 |
Pacific |
Bikes |
$ 710,677.75 |
Pacific |
Clothing |
$ 22,902.38 |
Pacific |
元件 |
$ 108,549.71 |
下列程式碼會產生上表:
GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
第一個 SUMMARIZE 會產生銷售領域群組的資料表,其中每個資料列都是銷售領域群組,如下表所列的群組:
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
NA
第二個 SUMMARIZE 會產生產品類別目錄群組的資料表,其中包含每個群組的轉售商銷售,如下所示:
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
元件
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
不過,當您採用上表並在銷售領域群組資料表中每個資料列的內容底下評估時,就會針對每個銷售領域取得不同的結果。