经过一些研究,我发现混合参数是一个热门话题,但我还没有找到解决这种特定情况的方法。简而言之,我有来自各个数据集的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 year
和current 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。的另一种解决方案,这不是我想要的,但它可以完成工作。
[CurrentYear]
和[LastYear]
CStr(Parameters!Year.Value(0))
和CStr(Parameters!Year.Value(1))
的2017和2016值。示例:="[Year exit].[Financial Year exit].&[" + CStr(Parameters!Year.Value(0)) + "]"
。 Current Year
和Last Year
。即使这样可以缓解这个问题,但是无论如何都有类似的结果,但下拉菜单会显示实际的年份?即它会是动态的,所以在未来几年,会有会弹出2018年,2019年等?这样最终用户不仅可以比较当前和过去的一年,还可以比较任何两年?
感谢所有人!
EDIT3 以下是我所在的屏幕截图:
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)) + "]"
结果是:
答案 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。