SSRS 2008 - 如何将2个或更多年份参数链接到1个

时间:2017-03-29 17:17:08

标签: reporting-services parameters unique mdx ssrs-2008-r2

经过一些研究,我发现混合参数是一个热门话题,但我还没有找到解决这种特定情况的方法。简而言之,我有来自各个数据集的3个参数,所有参数都在同一年,并且我想将它们(视觉上)混合成1,以便为我的报告的最终用户消除这种冗余。

在“参数属性”的“可用值”中,所有值都来自数据集(隐藏),“值字段”是[Measures].[ParameterValue]来自相应的隐藏数据集。

当我“显示隐藏数据集”并进入每个隐藏数据集的“文本模式”时,这些是3 MEMBER [Measures].[ParameterValue] AS

[Time].[Financial Year].CURRENTMEMBER.UNIQUENAME
[Financial Period].[FP - Year].CURRENTMEMBER.UNIQUENAME
[Time exit].[Financial Year Exit].CURRENTMEMBER.UNIQUENAME

当您查看它给出的值时,它们具有以下输出(相应地):

[Time].[Financial Year].&[2017]
[Financial Period].[FP - Year].[FP - Year].&[2017]
[Time exit].[Financial Year Exit].Financial Year Exit].&[2017]

A。因此,在我看来,由于每个[Year]参数值的“根”不同,我需要在每个隐藏数据集中创建数据集或成员替换此[2017]。这是“可行的”,如果是的话,是否有任何指导?

B。如果没有,其他结果也是可以接受的:最终用户需要主要生成current yearcurrent year-1。为了解决这个问题,我制作了一个模板“年”DS,内容与FP - Year相同,并添加了以下成员:

Member [Measures].[Last Year] as 'YEAR(NOW())-1'
Member [Measures].[Current Year] as 'YEAR(NOW())'

我将它们插入SELECT并进行预览,它显示了2017年和2016年的2个新列。然后我改变了PF-Year参数的DS,值和标签,我得到一个错误。有什么建议吗?

对此有何建议?

EDIT1:我已经解决了 B。并找到了解决方案,我只为每个参数创建了以下2个默认值:

本年度:="[Time].[Financial Year].&[" + CStr(Year(Now())) + "]"

去年:="[Time].[Financial Year].&[" + CStr(Year(Now())-1) + "]"

然而,即使有了这个结果,我认为它会最小化最终用户的动作次数,我仍然希望显示1个参数而不是3 ...

EDIT2&部分解决方案我找到了 A。的另一种解决方案,这不是我想要的,但它可以完成工作。

  1. 创建了一个包含2个可用值的新Year参数:[CurrentYear][LastYear]
  2. 对于每个其他参数的默认值,我相应地转换了CStr(Parameters!Year.Value(0))CStr(Parameters!Year.Value(1))的2017和2016值。示例:="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Year.Value(0)) + "]"
  3. 在每个参数的选项中,我将它们设置为我的新年参数的“隐藏”。
  4. 现在,我有1年参数,其下拉列表显示Current YearLast Year
  5. 即使这样可以缓解这个问题,但是无论如何都有类似的结果,但下拉菜单会显示实际的年份?即它会是动态的,所以在未来几年,会有会弹出2018年,2019年等?这样最终用户不仅可以比较当前和过去的一年,还可以比较任何两年?

    感谢所有人!

    EDIT3 以下是我所在的屏幕截图:

    enter image description here

    EDIT4

    我已经解决了问题:因为我知道最终用户一次只会比较2年(每个参数有2个默认值),所以我将3个隐藏的2个参数和2个隐藏的参数保留为我改变了他们的默认值。 因此,我将@[Financial Year]作为我的主要参数,而其他参数则具有以下默认值:

    @ [FP - Year]:

    ="[Financial Period].[FP - Year].[FP - Year].&[" + CStr(Parameters!Financial Year(0)) + "]" ="[Financial Period].[FP - Year].[FP - Year].&[" + CStr(Parameters!Financial Year(1)) + "]"

    @ [财政年度退出]:

    ="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Financial Year(0)) + "]" ="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Financial Year(1)) + "]"

    结果是:

    enter image description here

1 个答案:

答案 0 :(得分:1)

我建议两种方式:

1:SSRS:添加一个不可见的参数(即CurrentYear)并在MDX查询中运行以下内容:

StrToMember('[Time].[Financial Year].&[' +@CurrentYear + ']')

2:MDX:为每个层次结构添加动态计算成员:

member [Time].[Financial Year].[Current Year] as
StrToMember('[Time].[Financial Year].&[' + Format(Now(),'yyyy') + ']')

有关详细信息,请参阅my blog post