如何用MDX的Tail函数展示各项目的最后启用周期?
实现方案
要让每个项目仅展示其最后启用日期的对应数据,可通过Generate()遍历项目编码,结合Tail()提取每个项目的最新启用日期,最终MDX语句如下:
SELECT Generate( [Dim Project].[Project Code].[Project Code].ALLMEMBERS, { [Dim Project].[Project Code].CurrentMember * Tail([Dim Project].[Opening date].[Opening date].ALLMEMBERS, 1) } ) ON 0, [Measures].[Measure1] ON 1 FROM Mycube;
关键逻辑说明
Generate():逐个处理每个项目编码成员,为每个成员生成仅包含其最新启用日期的子集合Tail(..., 1):从当前项目的所有启用日期中,取出排序最后的1个成员(即最新启用日期)- 叉乘
*:将项目编码与对应最新日期绑定,确保每个项目仅展示一条目标数据
注意:如果维度中启用日期的默认排序不是时间降序,需先对日期集合排序再取Tail,示例如下:
SELECT Generate( [Dim Project].[Project Code].[Project Code].ALLMEMBERS, { [Dim Project].[Project Code].CurrentMember * Tail( Order( [Dim Project].[Opening date].[Opening date].ALLMEMBERS, [Dim Project].[Opening date].[Opening date].CurrentMember.MemberValue, BDESC ), 1 ) } ) ON 0, [Measures].[Measure1] ON 1 FROM Mycube;
执行后将返回你预期的结果:每个项目仅显示其最新启用日期及对应的Measure1数值。
内容的提问来源于stack exchange,提问作者tarikqazza
相关产品推荐
相关产品推荐

