GENERATEALL

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

语法

GENERATEALL(<table1>, <table2>)  

parameters

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

返回值

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

备注

  • 如果为 table1 中当前行对 table2 进行的计算返回空表,table1 中的当前行则将包含在结果中,而与 table2 相对应的列在该行中为 null 值 。 这不同于 GENERATE(),在后者中,table1 中的当前行不包括在结果中 。

  • 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
NAAccessories
NABikes
NAClothing
NA组件
北美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

以下公式可生成上表:

GENERATEALL(  SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])  ,SUMMARIZE(ProductCategory, [ProductCategoryName]  , "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  )  )  
  1. 第一个 SUMMARIZE 生成一个区域组表,其中每行都是一个区域组,如下所示:

    SalesTerritory[SalesTerritoryGroup]
    北美
    欧洲
    太平洋地区
    NA
  2. 第二个 SUMMARIZE 生成一个产品类别组表,其中包含每个组的经销商销售额,如下所示:

    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 ""