我是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完成它?
答案 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)