设为首页 收藏本站
查看: 3157|回复: 0

[经验分享] 在Reporting Services中使用MDX对Microsoft SQL Server Analysis Services进行数据操作(part1)

[复制链接]

尚未签到

发表于 2015-7-2 10:13:07 | 显示全部楼层 |阅读模式
1.在这个帖子中我们将制作一个静态的Reporting Services报表.
在此之前我们要确认我们已经安装好VS.net,Reporting services
首先我们要新建一个商务智能项目:文件-->新建-->项目-->商业智能项目-->报表项目为些项目命名为Test,此时我们在右面的解决方案资源管理器中可以看到项目test,同时在此树形目录下有"共享数据源""report",其中"共享数据源"用来存储数据源的定义,"reports"中的所有报表都可以使用在"共享数据源"中定义的数据源."reports"容器用来存储在此项目中的所有报表.

首先我们建议一个共享数据库.右键"共享数据源"->"添加新的数据源",在弹出的窗口中的”provider”选项卡中选择“Microsoft OLE DB Provider for OLAP Services 8.0”然后点”Next”,”data Source”中键入MS OLAP Server 的名字,比如”DBO”,同时使用“use Windows NT integrated security”,iEnter the initial catalog to use中选择”FoodMart 2000”,测试一下链接,点OK。此时这个共享数据源就键成功了,我们下面的报表就使用此数据源。

然后我们新建一个报表:右键“Reports”,”添加”->”添加新项”,在“模板”中选择“报表”并为此报表命名为”StaticReport.Rdl”.此时我们能够在工作区间看到三个Tab,默认显示的是”DATA”,现在我们新建一个”数据集”,点击”数据库”后的下拉框”新建数据集”,为此DataSet  命名为”DS”,点击”确定”,然后在命令框中输入” select  {[Measures].[Unit Sales]} on columns,     [Time].[Year].members on rows from Sales”,然后你可以单击红色的”感叹号”来运行此命令:

select
    {[Measures].[Unit Sales]} on columns,
   [Store].[Store Name].members on rows
from Sales



如果在SQL Server Sample Application中执行此命令:

大家可以看到结果是不同的,这是由于两种程序的工作原理不同也引起的.

下面我们继续我们的报表制作:首先从左侧的”工具箱”(如果没有,从视图à工具箱中打开)中托拽一个”Table”对象到布局的主体区域,然后
Store_Store_Name托拽到布局的主体区域中的第二行第一列,同样把Measures_Unit_Sales托拽到第二行第二列,删除第三列.由于我们希望
从销售数量的高底才查看报表, 所以我们要设置他们按照” Unit Sales””Desc”来排序,先中表,右键->属性->排序,在表达式中表达式中选 “=Fields!Measures_Unit_Sales.Value”,方向为”Descending”.如下:

我们现在就可以来预览报表了,点击”预览”可以看到如下的报表:


2.页眉和页脚
对于我们这些用惯了OFFICE的人来说,可以会问我想在报表的每页的页眉加上我们公司的Logo,在页脚加上公司的一些其它信息,Reporting Services能做到吗?

当然.下面我们就示例一下如何使用页眉和页脚, ”布局”页上,点击工具栏上的”报表”,我们可以看到” 页眉””页脚”.如下:

然后我们就可以对页眉和页脚区域进行相应操作了,比如,我想把我们公司的Logo加上,这时我从左侧”工具箱”中选择”图像”并把它托拽至” 页眉”区域,然后根据向导我们就能够把图像加到我们的报表中,如下:

这样子已经把页眉做好了,但是好页眉和报表间如何能够有个分隔线更好些,Reporting services的工具箱中有一个ITEM”线条”,它可以在报表的任何地方划线.我们下面就用它来分隔我们的页眉区域和报表区域.同样从工具箱中托拽对象”线条”到报表的设计区域.然后对其属性进行设置:

同样我们也可以对页脚进行各种各样的格式化,Reporting Services也提供了以下:

3:全局变量
Reporting Services也提供了以下:Globals   parameter

  Globals 集合包含报表的全局变量。下表介绍了 Globals 集合的成员:
  
成员

类型

说明

ExecutionTime
日期时间
报表开始运行的日期和时间。
PageNumber
整型
当前页码。该变量只能用在页眉和页脚中。
ReportFolder
字符串
包含报表的文件夹的完整路径。它不包括报表服务器 URL
ReportName
字符串
报表存储在报表服务器数据库中的名称。
ReportServerUrl
字符串
正在运行该报表的报表服务器的 URL
TotalPages
整型
报表中的总页数。该变量只能用在页眉和页脚中。



4.使用Group
每个数据区域(表、矩阵和列表)中的数据都可以按字段和表达式分组。您可以使用表内的组为表中的数据提供逻辑区域。在“布局”视图中单击表,以便在该表的上方和旁边显示列句柄和行句柄。 右键单击第二行行句柄,然后单击“插入组”“名称”中,键入组的名称”Store_Counrty”。在“分组方式”中,选择对数据进行分组所依据的表达式” =Fields!Store_Store_Country.Value”, ,依次增加Store_State(” =Fields!Store_Store_Country.Value”), Store_City(=Fields!Store_Store_City.Value),我们此时把相应字段放到相应位置.如下:

然后我们对”分组”的可见性进行设置:右键表->属性->,我们可以在组列表中看到三个组,分别为我们刚才新建的Store_Courtry,Store_State
Store_City,首先我们对详细信息分组进行设置:单击”详细信息分组”,”详细信息分组”窗口中选择”可见性”,使之初始可见性为”隐藏”,选择’可由其它关联报表项确定可见性”中选择”Store_Store_City”,然后依次对Store_City,Store_State进行设定.效果如下:



5.怎么使用参数
上面的信息虽然能够大致看到Store的信息,但是我们很多时候是希望看其个特定条件下的信息,比如特定时间内的信息,此时就要用到参数,SQLServer 2000 Reporting Services中不直接对参数提供支持,在下一版本中将提供非常好的支持。那我们下面就看一下如何使用参数,我们可以首先运行没有参数的MDX语句,然后在把此MDX语句转化为表达式,同时加上参数.这样做的好处在第一步Reporting Services已经为我们生成好了DataSet 中的”数据字段”.下面我们就来看一下如何在报表中使用参数.还用上面的那张报表.由于我们已经利用上面的MDX来生成的我们要用到的数据字段,同时也对报表作了基本的设置,下面我们要在这张报表的基础上来加入MDX参数。

首先,我们要写一个生成参数的MDX语句,在此简单介绍一下SQL  Server 2005中的内置MDX参数,如果你在SQL  Server 2005中加入了一个时间参数,则SQL  Server 2005 Reporting Services自动会为此参数生成一个用你的参数来命名的数据集,它使用的是类似于下面的MDX语句:

WITH
   MEMBER [Measures].[ParameterCaption] AS '[Time].CURRENTMEMBER.MEMBER_CAPTION'
   MEMBER [Measures].[ParameterValue] AS '[Time].CURRENTMEMBER.UNIQUENAME'
   MEMBER [Measures].[ParameterLevel] AS '[Time].CURRENTMEMBER.LEVEL.ORDINAL'
SELECT
   {[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]} ON COLUMNS
   , [Time].ALLMEMBERS ON ROWS
FROM [Sales]



我们看到上面的时间没有任何层次关系,为了更好的给用户一个好的体验,我们修改SQL  Server2005为我们自动生成的语句,如下:
WITH
   MEMBER [Measures].[ParameterCaption] AS 'SPACE([Time].CURRENTMEMBER.LEVEL.ORDINAL*4)+[Time].CURRENTMEMBER.NAME'
   MEMBER [Measures].[ParameterValue] AS '[Time].CURRENTMEMBER.UNIQUENAME'
   MEMBER [Measures].[ParameterLevel] AS '[Time].CURRENTMEMBER.LEVEL.ORDINAL'
SELECT
   {[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]} ON COLUMNS
   , [Time].ALLMEMBERS ON ROWS
FROM [Sales]


现在我们在报表中加入参数,工具栏->报表->报表参数,如下:


现在我们已经有了参数,我们就要把这个参数和我们的报表联系起来。我们修改我们的MDX语句:
select
    {[Measures].[Unit Sales]} on columns,
   [Store].[Store Name].members on rows
from Sales

为:
="select     {[Measures].[Unit Sales]} on columns,    [Store].[Store Name].members on rows from Sales where (" &Parameters!Time.Value&")"
预览如下:


附:在SQL Server 2005中将包括图形化的MDX生成器和内置的MDX参数支持.



Level 300:
6:CascadeParams


6.怎么对信息进行查找,比如各种客户信息经常是以百万条纪录来计算的,这样的话,虽然有了上面的方法,让用户在上百个用户间选择也是不可行的,这时我们就要为用户提供Search功能。下面我就介绍Reporting Services如何结合Analysis Services来实现这个功能。








  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-82461-1-1.html 上篇帖子: SQL Server 2005 数据类型 下篇帖子: sql server 2008 错误:15404 折腾了一个小时终于解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表