Mondrian/MDX技术咨询:按更新年份统计Nutriscore空值与非空值数量
MDX查询实现:按更新年份统计Nutriscore空/非空产品版本数
基于你提供的Mondrian Schema,以下是满足需求的MDX查询方案:
方案一:直接引用空值成员(高效)
SELECT { ([Measures].[num publication per update date], [Product].[Nutriscore].AllMembers - [Product].[Nutriscore].[null]) AS [Nutriscore非空的产品版本数], ([Measures].[num publication per update date], [Product].[Nutriscore].[null]) AS [Nutriscore为空的产品版本数] } ON COLUMNS, [Date of update].[Year].Members EXCLUDEEMPTY ON ROWS FROM [Cube1]
方案二:使用Filter筛选(通用)
如果空值成员名称不是[null],可以用IsEmpty函数判断:
SELECT { Aggregate( Filter( [Product].[Nutriscore].Members, NOT IsEmpty([Product].[Nutriscore].CurrentMember) ), [Measures].[num publication per update date] ) AS [Nutriscore非空的产品版本数], Aggregate( Filter( [Product].[Nutriscore].Members, IsEmpty([Product].[Nutriscore].CurrentMember) ), [Measures].[num publication per update date] ) AS [Nutriscore为空的产品版本数] } ON COLUMNS, [Date of update].[Year].Members EXCLUDEEMPTY ON ROWS FROM [Cube1]
关键说明
- 行维度:
[Date of update].[Year].Members对应Schema中通过DimensionUsage关联的更新日期维度,按年份分组;EXCLUDEEMPTY用于过滤无数据的年份。 - 度量选择:使用
[num publication per update date],该度量对update_date计数,对应产品版本的更新记录数,匹配需求中的“产品版本数量”统计。 - 空值处理:
- 方案一中,Mondrian会自动为维度空值生成
[null]成员,通过集合运算直接筛选非空/空成员,执行效率更高。 - 方案二中,通过
IsEmpty函数判断成员是否为空,再用Aggregate聚合对应度量值,兼容性更强,适用于空值成员命名不固定的场景。
- 方案一中,Mondrian会自动为维度空值生成
内容的提问来源于stack exchange,提问作者Marco Xausa
相关产品推荐
相关产品推荐

