博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表
阅读量:6107 次
发布时间:2019-06-21

本文共 1763 字,大约阅读时间需要 5 分钟。

之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (),示例中的查询是基于 SQL Server 关系型数据库的,这一篇是基于 MDX 父子维度的 SSRS 报表。

沿用上一篇中的 ()父子维度 和() 的时间维度,并在此基础上创建 Cube 并部署。

 

当然在这个例子中可能不会使用到时间维度,之所以添加进来只是因为在 Cube 的创建过程中 SSDT 开发工具会提示:不要创建只含有一个维度的多维数据集。

部署完成之后,我们可以通过 MDX 查看一下相应的维度和度量值数据。

SELECT ([Measures].[Sales Amount]) ON COLUMNS,       NON EMPTY([Employee].[Employees].Members) ON ROWSFROM [BIWORK_ParentChildDemo]

但是像这样显然不够,因为我们不仅仅需要知道我们应该查询的不光是当前成员,而且应该展现当前成员的后代子成员。

并且通过 Dimension 属性来定义要获取到这些成员的 MEMBER_CAPTION (在父子维度设计的那篇文章已经提到了), 成员的唯一名称 MEMBER_UNIQUE_NAME,父成员的唯一名称 PARENT_UNIQUE_NAME, 层次结构中的级别 LEVEL_NUMBER。

SELECT NON EMPTY { [Measures].[Sales Amount]} ON COLUMNS,       NON EMPTY {                     (                        DESCENDANTS(                                     [Employee].[Employees].ALLMEMBERS                                   )                     )                  } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, PARENT_UNIQUE_NAME, LEVEL_NUMBER ON ROWS FROM [BIWORK_ParentChildDemo]

 

每一个成员的后代子成员都会被查询出来,这里只展现部分数据。

 

如何创建报表和连接 SSAS 分析服务数据库,以及如何创建基于 SSAS MDX 查询的 Dataset 在这里就不再说了,可以参考我的。

设计好报表并拖放好一个 Table 组件,指定好 Employees 和 Sales Amount 列。

 

选中 Employees 这一行,右键编辑 Group 属性。

 

在这里注意分组的属性并不是 Employees 而是它的维度属性 Employees.UniqueName 。

 

递归父类也是使用的维度属性 Employees.ParentUniqueName 。

 

可以根据名字或者 Sales Amount 排序,这里选择的是 Employees 。

 

设置显示和隐藏是根据点击 Employees 决定的。

 

设置 Employees 名称的 Textbox 属性,根据级别高低来决定左边距的缩进距离。

=Cstr(Level() * 20) & "pt"

 

为了显示不同的级别的背景,也可以手动的设置行背景,粗略的设置了一下颜色,实际开发中可以精心设置。

=Switch(LEVEL()=0,"LightSlateGray",LEVEL()=1,"LightSteelBlue",LEVEL()=2,"LightBlue",LEVEL()=3,"LightCyan",LEVEL()=4,"Azure",LEVEL()=5,"White")

 

保存并预览报表的效果,虽然是基于 Cube 的 MDX 查询,但是实现起来也比较容易。

可以对比一下之前通过数据仓库直接查询的父子递归实现的 SSRS 报表,数据上都是正确的。

 

 

 


更多 BI 文章请参看 

如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。


 

转载地址:http://lchza.baihongyu.com/

你可能感兴趣的文章
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>