閱讀英文

共用方式為


生成

適用於:匯出數據行計算數據表量值視覺計算

傳回數據表,其中具有 table1 中每個數據列之間的笛卡兒乘積,以及從 table1評估目前數據 列內容中 table2 所產生的數據表。

語法

DAX
GENERATE(<table1>, <table2>)  

參數

術語 定義
table1 傳回數據表的任何 DAX 運算式。
table2 傳回數據表的任何 DAX 運算式。

傳回值

數據表,在 table1 數據表 1 中的每個數據列之間具有笛卡兒乘積,以及從 table1 table 1 中評估目前數據列內容中 table2 所產生的數據表

言論

  • 如果 table1 中目前數據列的 table2 評估會傳回空白數據表,則結果數據表將不會包含來自 table 1 的目前數據列。 這與 GENERATEALL() 不同,其中來自 table1 的目前數據列 會包含在結果中,而對應至 table2 的數據行將會有該數據列的 Null 值。

  • 來自 table1table 2 的所有數據行名稱都必須不同,否則會傳回錯誤。

  • 在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。

在下列範例中,使用者想要轉銷商頻道依 [區域] 和 [產品類別] 銷售的摘要數據表,如下表所示:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [轉銷商銷售]
歐洲 輔料 $ 142,227.27
歐洲 自行車 $ 9,970,200.44
歐洲 服裝 $ 365,847.63
歐洲 元件 $ 2,214,440.19
北美洲 輔料 $ 379,305.15
北美洲 自行車 $ 52,403,796.85
北美洲 服裝 $ 1,281,193.26
北美洲 元件 $ 8,882,848.05
太平洋 輔料 $ 12,769.57
太平洋 自行車 $ 710,677.75
太平洋 服裝 $ 22,902.38
太平洋 元件 $ 108,549.71

下列公式會產生上述資料表:

DAX
GENERATE(  
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])  
,SUMMARIZE(ProductCategory   
, [ProductCategoryName]  
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  
)  
)  
  1. 第一個 SUMMARIZE 語句 SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])會產生領域群組的數據表,其中每個數據列都是領域群組,如下所示:

    SalesTerritory[SalesTerritoryGroup]
    北美洲
    歐洲
    太平洋
  2. 第二個 SUMMARIZE 語句 SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))會產生產品類別群組的數據表,其中包含每個群組的轉銷商銷售,如下所示:

    ProductCategory[ProductCategoryName] [轉銷商銷售]
    自行車 $ 63,084,675.04
    元件 $ 11,205,837.96
    服裝 $ 1,669,943.27
    輔料 $ 534,301.99
  3. 不過,當您採用上述數據表,並在來自領域群組數據表的每個數據列內容下進行評估時,您會針對每個領域取得不同的結果。