SSRS 2008 - 如何将 link 2 年或更多年的参数转换为 1

SSRS 2008 - How to link 2 or more year parameters into 1

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

在 "Parameter properties" 的 "Available values" 中,所有值均取自数据集(隐藏),而 "value field" 是来自其相应隐藏数据集的 [Measures].[ParameterValue]

当我 "show hidden datasets" 进入 "text mode" 的每个隐藏数据集时,这些是 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] 参数值的 "roots" 不同,我需要创建一个数据集或成员在替换此 [2017] 的每个隐藏数据集中。是 "doable" 吗?如果是,是否有任何指导?

B. 如果不是,另一个结果也是可以接受的:最终用户将需要生成大部分 current yearcurrent year-1。为了解决这个问题,我制作了一个模板 "Year" DS,其内容与 FP - Year 中的内容相同,并添加了以下成员:

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

我将它们插入 SELECT 并进行预览,它显示了 2 个新列,分别是 2017 年和 2016 年。然后我去更改了 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. 对于每个其他参数的默认值,我相应地将 2017 年和 2016 年的值交换为 CStr(Parameters!Year.Value(0))CStr(Parameters!Year.Value(1))。示例:="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Year.Value(0)) + "]"
  3. 在每个参数的选项中,我将它们设置为 "Hidden" 期待我的新年参数。
  4. 现在,我有一个 1 年参数,下拉列表显示 Current YearLast Year

尽管这可以缓解问题,但是否有类似的结果但下拉菜单显示实际年份? 即它会是动态的,所以在几年内来吧,会弹出2018年、2019年等等?这样,最终用户不仅可以比较当前和过去的一年,还可以比较任何 2 年?

感谢大家!

EDIT3 这是我此时所在位置的屏幕截图:

EDIT4

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

@[FP - 年份]:

="[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)) + "]"

瞧瞧结果:

我建议两种方式:

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

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

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

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

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