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 year
和 current 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 的另一个解决方案。,这不是我想要的,但它有点像工作完成。
- 创建了具有 2 个可用值的新 Year 参数:
[CurrentYear]
和 [LastYear]
- 对于每个其他参数的默认值,我相应地将 2017 年和 2016 年的值交换为
CStr(Parameters!Year.Value(0))
和 CStr(Parameters!Year.Value(1))
。示例:="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Year.Value(0)) + "]"
。
- 在每个参数的选项中,我将它们设置为 "Hidden" 期待我的新年参数。
- 现在,我有一个 1 年参数,下拉列表显示
Current Year
和 Last 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。
经过一些研究,我发现混合参数是一个热门话题,但我还没有找到针对这种特定情况的解决方案。简而言之,我有来自不同数据集的 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 year
和 current 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 的另一个解决方案。,这不是我想要的,但它有点像工作完成。
- 创建了具有 2 个可用值的新 Year 参数:
[CurrentYear]
和[LastYear]
- 对于每个其他参数的默认值,我相应地将 2017 年和 2016 年的值交换为
CStr(Parameters!Year.Value(0))
和CStr(Parameters!Year.Value(1))
。示例:="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Year.Value(0)) + "]"
。 - 在每个参数的选项中,我将它们设置为 "Hidden" 期待我的新年参数。
- 现在,我有一个 1 年参数,下拉列表显示
Current Year
和Last 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。