MDX日期比较问题求助:大于等于判断逻辑失效
正确的MDX表达式写法
方案1:显式转换为日期类型比较
直接比较成员对象会基于MDX层级结构的位置判断,而非实际日期值,这是你原表达式失效的核心原因。需要把成员值转换成标准日期类型后再做大小比较:
IIF(CDate(Time.CurrentMember.MemberValue) >= CDate([Time].&[456].MemberValue), "Formula 1", "Formula 2")
方案2:使用MemberKey(适配特定维度键格式)
如果你的Time维度成员键是可直接比较的格式(比如整数型的20221101、标准日期字符串),可以直接用MemberKey做数值或字符串比较:
IIF(Time.CurrentMember.MemberKey >= [Time].&[456].MemberKey, "Formula 1", "Formula 2")
关键说明
- 原表达式
Time.CurrentMember >= [Time].&[456]的比较逻辑是成员在层级结构中的包含关系(比如父成员与子成员的层级位置),并非日期的实际大小,因此只有完全匹配时才返回"Formula 1"。 - 直接使用
MemberValue结果混乱,是因为MemberValue返回的是维度存储的原始数据类型(可能是未格式化的字符串、内部编码值),未做类型转换的比较会触发非预期的逻辑判断。
内容的提问来源于stack exchange,提问作者fashpixie
相关产品推荐
相关产品推荐

