Excel连接OLAP Cube创建YOY同比百分比度量的MDX实现求助
OLAP Cube 同比(YOY)百分比度量MDX实现方案
步骤1:创建计算度量
在Excel连接OLAP Cube后,打开数据透视表:
- 右键点击OLAP Cube中的度量组(如
Sales),选择新建计算度量 - 在对话框中设置度量名称(例如
YOY Sales %),然后粘贴下方MDX表达式
核心MDX代码
WITH MEMBER [Measures].[YOY Sales %] AS IIF( [Measures].[Sales[TotalAmount]] = 0 OR ([Measures].[Sales[TotalAmount]], ParallelPeriod([Date].[MonthYear].Level, 12, [Date].[MonthYear].CurrentMember)) = 0, NULL, ( [Measures].[Sales[TotalAmount]] - ([Measures].[Sales[TotalAmount]], ParallelPeriod([Date].[MonthYear].Level, 12, [Date].[MonthYear].CurrentMember)) ) / ([Measures].[Sales[TotalAmount]], ParallelPeriod([Date].[MonthYear].Level, 12, [Date].[MonthYear].CurrentMember)) ) FORMAT_STRING = "Percent"
代码逻辑说明
ParallelPeriod([Date].[MonthYear].Level, 12, ...):定位当前MonthYear成员的上一年同期(偏移12个月度),获取对应销售额IIF判断:避免除数为0的报错情况,当当期或同期销售额为0时返回NULLFORMAT_STRING = "Percent":自动将计算结果格式化为百分比,无需手动设置单元格格式
注意事项
- 确保
[Date].[MonthYear]维度的层级结构正确,保证ParallelPeriod能准确匹配上一年同月 - 如果你的Date维度是
Year -> Month层级,也可以替换为ParallelPeriod([Date].[Year].Level, 1, [Date].[MonthYear].CurrentMember),效果一致 - 新建度量后,直接拖拽至数据透视表的「值」区域即可使用
内容的提问来源于stack exchange,提问作者amikm
相关产品推荐
相关产品推荐

