如何使用MDX基于第一个参数过滤第二个参数?

时间:2015-09-19 00:18:24

标签: reporting-services parameters mdx

我是MDX的新手,我正在尝试编写一些自定义代码,以使我的SSRS报告中的参数下拉成为他们所需的方式。

我写了一个有效的查询,它为我所拥有的参数提供数据。这证实有效。现在我有了这个参数,我想为另一个参数写另一个查询,我将使用第一个参数中的值来过滤第二个参数。因此,当用户从下拉列表中选择一个或多个选项时,将根据用户选择过滤第二个参数的结果。

我写了下面的代码,但我看不出它为什么不起作用。

WITH 
MEMBER [Measures].[ParameterValue] AS 
      [Agent].[Department].CURRENTMEMBER.UNIQUENAME 
SELECT 
{
      [Measures].[ParameterValue]
} ON COLUMNS, 
Descendants
(
      [Agent].[Department].[Enterprise Group]
)
ON ROWS 
FROM 
( 
      SELECT 
      ( 
            STRTOSET(@BU, CONSTRAINED) 
      ) ON COLUMNS 
FROM [State Perspective]
)

@BU是我的第一个参数。我希望查询基于它进行过滤,但事实并非如此。

当我第一次尝试关闭Query Designer时,出现以下错误:

  

Query包含BU参数,该参数未声明。

因此,我右键单击数据网格区域,并将参数和值指向多维数据集中的一些示例数据。这解决了这个问题,我可以在查询设计器上单击“确定”。

但查询不会根据需要进行过滤。而是返回所有结果而不是过滤值。

我在这里做错了什么,或者甚至可以做到这一点,根据前一个参数中的值过滤另一个参数?

我已经在使用SSRS的常规SQL中完成了这项工作,它运行得很好。但是如何使用Cube和MDX完成它?

1 个答案:

答案 0 :(得分:0)

以下内容直接来自此MSDN论坛帖子:https://social.msdn.microsoft.com/forums/sqlserver/en-US/1f7e872a-d75f-440a-8ab8-88694e6c5370/error-while-passing-parameter-to-mdx-query-on-ssrs

  

您好Srini ...您是否在文本中使用BIDS中的SSAS查询设计器   模式?如果是这样,您需要在中显式声明您的参数   查询设计器,如“{3}}中所述,在”使用查询“一节中   参数”。

修改

以下是strToSet功能的文档:here

如果@BU说“Apple”,你需要做这样的事情:

strToSet('{[Fruit].[type].[' + @BU + ']}', constrained)