SSRS与SSAS作为数据源和参数

时间:2012-04-25 15:05:46

标签: reporting-services

谁能告诉我如何在这里使用SSRS参数?我使用SSAS作为数据源,报告显示一切正常,但我想根据参数值过滤结果。

SELECT NON EMPTY { [Measures].[Count of ID], [Measures].[Average of Amount] } ON COLUMNS, NON EMPTY { (STRTOMEMBER(@Region,CONSTRAINED) * [Query].[State].[State].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [Model] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

报告中的参数为@Region。

1 个答案:

答案 0 :(得分:4)

最简单的方法是设置DataSet,使用QueryDesigner从SSAS中撤回您想要的内容。指定维度过滤器时,最右侧是“参数”标题下的复选框。选中此项,它将自动为您生成SSRS参数。

这将创建一个期望值如下的参数,实际上是一个维度过滤器:

\[DimensionName\].\[AttributeName\].&\[Value\]

如果您需要通过MDX手动执行此操作,查看您的MDX表达式,它会向我(在我非常有限的MDX经验中 - 仍然在学习)中试图在您的ROWS中指定您的参数(过滤器)而不是在FROM子句中应用它。

我希望它可能更像是这样的东西?:

SELECT 
NON EMPTY { [Measures].[Count of ID], [Measures].[Average of Amount] } ON COLUMNS
,NON EMPTY { ([DimensionName].[AttributeName].ALLMEMBERS * [Query].[State].[State].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM 
(SELECT (STRTOSET(@Region,CONSTRAINED) ON COLUMNS FROM [Model])
WHERE ( IIF( STRTOSET(@Region, CONSTRAINED).Count = 1, STRTOSET(@Region, CONSTRAINED), [DimensionName].[AttributeName].currentmember ) ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

DimensionName AttributeName 替换为多维数据集定义中的实际值。这假设您的@Region参数格式与我上面指定的格式相同。如果没有,则在将报表参数分配给DataSet时,可以替换DataSet属性中的其余语法。

道歉,如果这不起作用,我现在正在研究MDX的有限知识,但我认为部分答案总比没有好,对吧?