GENERATE
返回一个表,其中包含 table1 中每一行之间的笛卡尔 productand 表,该表 table2 在 table1的当前行的上下文中求值。
语法
GENERATE(<table1>, <table2>)
参数
术语 | 定义 |
---|---|
table1 |
返回表的任何 DAX 表达式。 |
table2 |
返回表的任何 DAX 表达式。 |
返回 value
言论
If 计算 table1 中当前行的表 2 返回空表,则结果表将 not 包含 table1中的当前行。 这不同于 GENERATEALL(),其中 table1 中的当前行将包含在与 table2 对应的结果 and 列中,该行的 null values。
table1andtable2All 列名在返回 erroror 必须不同。
在计算列 or 行级别安全性 (RLS) 规则中使用时,not 支持在 DirectQuery 模式下使用此函数。
例
在以下示例中,用户希望“经销商”渠道按区域 andProduct 类别的销售额汇总表,如下表所示:
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 |
以下公式生成上表:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
first SUMMARIZE 语句
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
生成一个区域组表,其中每行都是一个区域组,如下所示:SalesTerritory[SalesTerritoryGroup] 北美洲 欧洲 太平洋 那 second SUMMARIZE 语句
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
生成一个表,其中包含每个组的经销商销售额的 Product 类别组,如下所示:ProductCategory[ProductCategoryName] [经销商销售] 自行车 $ 63,084,675.04 组件 $ 11,205,837.96 服装 $ 1,669,943.27 辅料 $ 534,301.99 但是,如果采用上表 andevaluate 区域组表中每行的上下文,则会为每个区域获取不同的结果。