MS SSAS MDX设置:刷新Excel透视表时默认显示最新Epoch成员
解决SSAS多维数据集透视表自动切换到最新已处理Epoch的问题
问题分析
你当前设置的MDX默认成员代码存在逻辑缺陷,没有正确关联Processed属性的筛选条件,导致无法精准获取已处理(Processed=1)的最大Epoch ID,进而出现透视表随机显示中间Epoch的情况。
修正后的MDX默认成员写法
方案1:用Max函数筛选后取最大ID
替换原默认成员代码为以下MDX语句,先过滤出已处理的Epoch成员,再取其中ID最大的成员:
StrToMember( '[Epoch].[Epoch].&[' + CStr( Max( Filter( [Epoch].[ID].Members, [Epoch].[Processed].CurrentMember IS [Epoch].[Processed].&[1] ), [Epoch].[ID].CurrentMember.MEMBER_KEY ) ) + ']' )
方案2:用Tail函数直接取最后一个成员(更高效)
由于Epoch ID是递增生成的,已处理成员中最后一个即为ID最大的,可使用Tail函数简化逻辑:
Tail( Filter( [Epoch].[Epoch].Members, [Epoch].[Processed].CurrentMember IS [Epoch].[Processed].&[1] ), 1 ).Item(0)
关键注意事项
- 维度层级确认:确保默认成员设置在
[Epoch].[Epoch]层级(匹配你的维度结构),如果维度存在多层级,需调整到正确的层级节点。 - 部署后处理:修改默认成员后,需重新部署多维数据集并执行处理操作,确保元数据和计算逻辑生效。
- 透视表切片器冲突:如果透视表中已手动选择了特定Epoch切片,默认成员会被覆盖,需确保用户未固定该切片。
- 你的思路验证:给ID设置默认成员的方向是正确的,但需确保该默认成员的MDX逻辑同样包含
Processed=1的筛选,否则仍会出现非预期结果。
内容的提问来源于stack exchange,提问作者TilleyTech
相关产品推荐
相关产品推荐

