GENERATE

返回一个表,其中包含 table1 中的每一行与在 table1 的当前行的上下文中计算 table2 所得表之间的笛卡尔乘积 。

语法

GENERATE(<table1>, <table2>)  

parameters

术语定义
table1任何返回表的 DAX 表达式。
table2任何返回表的 DAX 表达式。

返回值

一个表,其中包含 table1 中的每一行与在 table1 的当前行的上下文中计算 table2 所得表之间的笛卡尔乘积

备注

  • 如果就 table1 中的当前行对 table2 的计算返回一个空表,则结果表不包含 table1 中的当前行 。 这与 GENERATEALL() 不同。在 GENERATEALL() 中,table1 中的当前行将包含在结果中,并且对于该行,对应于 table2 的列的值为 NULL 。

  • table1 和 table2 中的所有列名不得相同,否则会返回错误 。

  • 在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

示例

在以下示例中,用户希望经销商渠道按地区和产品类别列出的销售汇总表,如下表所示:

SalesTerritory[SalesTerritoryGroup]ProductCategory[ProductCategoryName][经销商销售额]
欧洲Accessories$ 142,227.27
欧洲Bikes$ 9,970,200.44
欧洲Clothing$ 365,847.63
欧洲组件$ 2,214,440.19
北美Accessories$ 379,305.15
北美Bikes$ 52,403,796.85
北美Clothing$ 1,281,193.26
北美组件$ 8,882,848.05
太平洋地区Accessories$ 12,769.57
太平洋地区Bikes$ 710,677.75
太平洋地区Clothing$ 22,902.38
太平洋地区组件$ 108,549.71

以下公式可生成上表:

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]
    北美
    欧洲
    太平洋地区
    NA
  2. 第二个 SUMMARIZE 语句 SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])) 生成一个产品类别组表,其中包含每个组的经销商销售额,如下所示:

    ProductCategory[ProductCategoryName][经销商销售额]
    Bikes$ 63,084,675.04
    组件$ 11,205,837.96
    Clothing$ 1,669,943.27
    Accessories$ 534,301.99
  3. 但是,在你使用上表并在区域组表的每一行的上下文中对其进行求值时,对于每个区域你将获得不同的结果。

results matching ""

    No results matching ""