MDX查询按日期过滤返回空表,已确认Cube有数据求问题原因
问题描述
我在MDX查询中尝试按日期筛选2023年3月1日之后的数据,但返回结果为空。已确认Cube中存在对应数据,且调整过日期格式,问题仍未解决。
原MDX查询
SELECT [Measures].[Transaction Count] ON COLUMNS, NON EMPTY ( [Country].[Country].CHILDREN, [Country].[Network].CHILDREN, [Country].[Brand].CHILDREN, [Acquirer Settlement Date].[Year - Week].[Date] ) ON ROWS FROM [Acquiring] WHERE ( FILTER( [Acquirer Settlement Date].[Year - Quarter - Month].[Date].MEMBERS, [Acquirer Settlement Date].[Year - Quarter - Month].CURRENTMEMBER.MEMBER_VALUE > '2023-03-01' ) )
可能的原因及解决方法
日期层级不匹配:WHERE子句使用
[Year - Quarter - Month]层级的日期成员筛选,但ROWS轴用的是[Year - Week]层级的日期。两个层级的日期成员可能不属于同一维度分支,导致筛选逻辑未覆盖到ROWS轴的目标数据。建议统一使用同一日期层级,比如都用[Year - Quarter - Month].[Date]或[Year - Week].[Date]。MEMBER_VALUE类型比较错误:
MEMBER_VALUE返回的是日期类型而非字符串,直接和字符串'2023-03-01'比较会出现类型不匹配问题。改用MDX的Date()函数转换后再比较:[Acquirer Settlement Date].[Year - Quarter - Month].CURRENTMEMBER.MEMBER_VALUE > Date('2023-03-01')WHERE子句FILTER用法不当:WHERE子句更适合用范围语法筛选日期,比FILTER更高效且不易出错。可替换为:
WHERE [Acquirer Settlement Date].[Year - Quarter - Month].[Date].&[2023-03-01]:NULLNON EMPTY的干扰:ROWS轴的
NON EMPTY会过滤掉度量值为空的行,若筛选逻辑导致没有匹配到非空组合,就会返回空结果。可先去掉NON EMPTY测试是否有数据返回,再逐步排查。
内容的提问来源于stack exchange,提问作者bak
相关产品推荐
相关产品推荐

