基于两个维度在SSAS多维数据集中创建计算成员的问询
在SSAS多维数据集中创建跨维度计算成员FYE:可行方案及实现
没问题,这完全可行!在SSAS多维模型里,我们可以通过MDX的元组(Tuple)特性,精准关联两个独立维度的特定成员,从而实现你需要的FYE计算成员。下面是具体的实现步骤和细节:
核心思路
你需要的是两个维度成员组合的数值求和:
- 仅当Analysis维度为
Actual时,取Time Calculations维度YTD对应的度量值 - 仅当Analysis维度为
Budget时,取Time Calculations维度ROY对应的度量值 - 将这两个结果相加得到
FYE的值
MDX中的元组可以帮我们精准定位这些跨维度的交叉点,再通过算术运算符完成求和。
具体实现步骤
- 打开SSAS多维模型项目,切换到计算选项卡
- 点击「新建计算成员」,选择要关联的度量值组(通常是你的事实表对应的度量值组)
- 替换默认的MDX表达式为以下代码(记得把
[Measures].[YourMeasure]替换成你实际使用的度量值名称,比如[Measures].[Sales Amount]):
CREATE MEMBER CURRENTCUBE.[Measures].[FYE] AS ( [Analysis].[Analysis].[Actual], [Time Calculations].[Time Calculations].[YTD], [Measures].[YourMeasure] ) + ( [Analysis].[Analysis].[Budget], [Time Calculations].[Time Calculations].[ROY], [Measures].[YourMeasure] ), VISIBLE = 1;
代码细节解释
- 元组(Tuple):每个括号内的内容是一个元组,代表三个维度(Analysis、Time Calculations、Measures)的交叉定位,确保我们只取到目标组合的数值
- 求和运算:用
+运算符将两个元组对应的度量值结果相加,得到FYE的最终值 - 可见性设置:
VISIBLE = 1确保这个计算成员能在Excel、Power BI等客户端工具中被看到和使用
额外注意事项
- 要确保维度和成员的名称与你模型中的实际名称完全匹配,如果维度有多层级结构(比如Analysis维度有父层级),可能需要写全路径,例如
[Analysis].[Analysis Category].[Actual] - 如果你的模型有多个度量值,你可以针对每个度量值单独创建
FYE成员,或者使用CURRENTMEASURE函数让这个计算成员自动适配当前选中的度量值 - 测试时建议先在SSMS的MDX查询窗口中单独验证每个元组的数值是否正确,确认无误后再组合成最终的计算成员
内容的提问来源于stack exchange,提问作者vBB
相关产品推荐
相关产品推荐

