Reporting Services 日期参数化

比如有下面一段MDX语句,里面有日期值,现在想在Reporting Services中展示,并且可以输入参数,更新参数值更新报表查询结果。

WITH
MEMBER [Measures].[上报数] AS
'sum([Measures].[CODE AVIMANAGEMENT 计数],[DIM_ABM_DEGREE].[ABM DEGREE].&[1])'
MEMBER [Measures].[结案数] AS
'sum([Measures].[上报数],[DIM_ABM_ISOVER].[ABM ISOVER].&[1])'
/*--注释--*/
MEMBER [Measures].[区处理] AS
'sum(([Measures].[结案数],[DIM_ABM_DISFLAG].[ABM DISFLAG].&[3]))'
MEMBER [Measures].[街道处理] AS
'sum(([Measures].[结案数],[DIM_ABM_DISFLAG].[ABM DISFLAG].&[2]))'
MEMBER [Measures].[社区处理] AS
'sum(([Measures].[结案数],[DIM_ABM_DISFLAG].[ABM DISFLAG].&[1]))'
MEMBER [Measures].[整治率] AS
'[Measures].[结案数]/[Measures].[上报数]',FORMAT_STRING = "#0.00%"
SELECT
{
[Measures].[上报数],[Measures].[结案数],[Measures].[区处理],[Measures].[街道处理],[Measures].[社区处理],[Measures].[整治率]
}
 ON COLUMNS,
{[DIM DISTINCT].[D PINDEX].[Level 03].AllMEMBERS,[DIM DISTINCT].[D PINDEX].&[2.9E2]} on rows
from [LGDZGDIG]
where
([DIM_ABM_FLAG].[ABM FALG].&[1.],{NULL:[ABM RECORDDATE].[年-半年-季度-月-日].[The Date].&[2010-05-01T00:00:00]})

 

一、创建共享数据集合

1、新建一个共享数据集合,数据源是SSAS的数据源。

2、在查询框右边,点击“fx”,将上面的语句复制进去,点击确定

3、点击“刷新字段”,点击左边栏的“字段”,可以看到查询结果对应的字段,这里“字段名称”可以根据自己的阅读需要进行修改。

4、点击左边栏的“参数”,添加一个日期类型的参数“rptDate”,默认值为Today,如下图所示:

 

二、创建报表

上面的共享数据设置完成后,可以新建报表了。

1、报表-右键添加-新建项。选择报表。

2、将工具箱中的“矩阵”拖到报表设计区域。自动弹出选择共享数据集合。选中后点击“刷新字段”。

3、在左边栏“字段”中,可以看到“字段名称”和“字段源”。字段名称是设置报表时设计者看到的名称,而“字段源”即在上段描述一第3点提到的名称。点击“参数”,可以看到在共享数据集中设置的参数,在这里可以看的到。点击确定完成。(如果要修改这些设置,这打开报表文件的源码,直接修改XML文件中的内容,这些设置全部在 XML中有对应的体现)

4、绑定数据。查看报表。我们可以注意到,报表的最上面有一个“日期文本框”,前面的“rpt Date”描述看的不习惯,要改成中文,而参数名称又不变,则可以打开XML文件修改对于对应的Prompt节点值。

三、在这些报表可以显示后,执行下面的操作-参数化

1、双击共享数据集,点击“fx”,即看到了我们的可爱的MDX语句。

2、在语句最前端加上=“即一个等号和一个前单引号(半角的),语句最后加上后单引号,点击确定。

3、重新查看报表是否运行正常(经常会这时候会碰到报错,通常情况下的语句内有双引号、语句中有不是/*开始*/结束的注释、语句换行且行后面没有空格。其实最好的检查方法是将MDX语句全部放在一行,这样很容易这些问题)

4、确保这时候运行还是正常的,则将语句中的日期2010-05-01改成" & Format(Parameters!rptDate.Value, "yyyy-MM-dd") &"

注意前后都有双引号。

 

="WITH
MEMBER [Measures].[上报数] AS
'sum([Measures].[CODE AVIMANAGEMENT 计数],[DIM_ABM_DEGREE].[ABM DEGREE].&[1])'
MEMBER [Measures].[结案数] AS
'sum([Measures].[上报数],[DIM_ABM_ISOVER].[ABM ISOVER].&[1])'
/*--注释--*/

MEMBER [Measures].[区处理] AS
'sum(([Measures].[结案数],[DIM_ABM_DISFLAG].[ABM DISFLAG].&[3]))'
MEMBER [Measures].[街道处理] AS
'sum(([Measures].[结案数],[DIM_ABM_DISFLAG].[ABM DISFLAG].&[2]))'
MEMBER [Measures].[社区处理] AS
'sum(([Measures].[结案数],[DIM_ABM_DISFLAG].[ABM DISFLAG].&[1]))'
MEMBER [Measures].[整治率] AS
'[Measures].[结案数]/[Measures].[上报数]',FORMAT_STRING = '#0.00%'
SELECT
{
    [Measures].[上报数],[Measures].[结案数],[Measures].[区处理],[Measures].[街道处理],[Measures].[社区处理],[Measures].[整治率]
} ON COLUMNS,
{[DIM DISTINCT].[D PINDEX].[Level 03].AllMEMBERS,[DIM DISTINCT].[D PINDEX].&[2.9E2]} on rows
from [LGDZGDIG]
where
([DIM_ABM_FLAG].[ABM FALG].&[1.],{NULL:[ABM RECORDDATE].[年-半年-季度-月-日].[The Date].&[" & Format(Parameters!rptDate.Value, "yyyy-MM-dd") &"T00:00:00]})"

 

上面即修改后的语句。

 注意:采用上面的方法是这样比较容易排除问题,其次可以刷新出“字段”啊

1、通常MDX语句中出现全部是横杠---------就会出问题,因为语句加了双引号后,变成一行了,后面的语句全被注释掉了。要使用/*--注释--*/

2、MDX中不要出现双引号,FORMAT_STRING = '#0.00%'常使用双引号,要留意

 

 

推荐MDX语法书:

http://download.csdn.net/source/2965452

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值