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 |
NA | Accessories | |
NA | Bikes | |
NA | Clothing | |
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]) ) )
第一个 SUMMARIZE 生成一个区域组表,其中每行都是一个区域组,如下所示:
SalesTerritory[SalesTerritoryGroup] 北美 欧洲 太平洋地区 NA 第二个 SUMMARIZE 生成一个产品类别组表,其中包含每个组的经销商销售额,如下所示:
ProductCategory[ProductCategoryName] [经销商销售额] Bikes $ 63,084,675.04 组件 $ 11,205,837.96 Clothing $ 1,669,943.27 Accessories $ 534,301.99 但是,采用上述表并在区域组表中每一行的上下文下对表进行求值时,对于每个区域,你将获得不同的结果。