页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题现象

       基于数据模型创建的自助仪表盘交叉表,对维度进行分组后,如何对分组以及分组内成员进行排序的同时,再进行合计?通过命名集实现的排序,在放到仪表盘交叉表中就没法实现快速汇总了,在命名集中需要怎么写MDX函数实现汇总合计?

目标效果

        

        ①新增了分组,且对分组进行排序

        ②组内成员,进行了二次排序

        ③基于分组、排序后的结果进行合计计算,并且展示下最后一行

解决方案

        1、对于目标效果①的分组,使用数据模型的新建分组字段即可,参考:在数据模型中如何自定义分组?

        对维度字段(CategoryName)创建分组字段:【大类分组】

        

        2、对于目标效果①②的排序,通过向导创建命名集集合实现即可。

        分组字段排序命名集:【大类分组排序】

        被分组的维度字段(CategoryName)排序的命名集:【大类排序】

        3、对于目标效果③,需要先通过计算成员实现合计,再通过命名集,将合计的计算成员,以及上面实现排序的命名集结合一起。

        1)分别对分组字段、被分组的维度字段新建计算成员,其中两个计算成员之间是有引用关系,具体可参考以下描述或截图示例:

        图一:

        分组字段的计算成员(HJ_dlfz):

                层次结构:分组字段(即【大类分组】);

                父成员:分组字段的全部成员(即【大类分组】.成员.全部成员);

                MDX语句:IIF(被分组的维度字段的第二层字段.CurrentMember.caption="被分组的维度的计算成员",(分组字段的全部成员,被分组维度字段的全部成员),null)

                     (即,IIF(CategoryName.CategoryName.CurrentMember.caption="HJ_dl",(【大类分组】.成员.全部成员,CategoryName.成员.全部成员),null)

        图二:

        被分组的维度字段的计算成员(HJ_dl):

                层次结构:被分组的维度字段(即CategoryName);

                父成员:被分组的维度字段的全部成员(即CategoryName.成员.全部成员);

                MDX语句:IIF(分组字段的第二层字段.CurrentMember.caption="分组字段的计算成员",(分组字段的全部成员,被分组维度字段的全部成员),null)

                     即,IIF(【大类分组】.大类分组.CurrentMember.caption="HJ_dlfz",(【大类分组】.成员.全部成员,CategoryName.成员.全部成员),null)

        2)新建命名集,将分组排序命名集、维度成员排序命名集、分组字段计算成员和维度字段计算成员,通过新的命名集进行排序处理。

        新建命名集HJ_dlmmj;

        MDX语句:Union(NonEmptyCrossjoin(分组字段排序命名集,被分组的维度字段排序命名集),分组字段的计算成员*被分组的维度字段的计算成员)

                即,Union(NonEmptyCrossjoin(【大类分组排序】,【大类排序】),HJ_dlfz*HJ_dl)

        4、最终结果

  • 无标签

评论

  1. 丁键根 发表:

    内网35115环境参考资源:

    I8a74a4c7018b75c075c0224b018b7f7dafeb2548