【问题标题】:How to filter second parameter based on first parameter using MDX?如何使用 MDX 根据第一个参数过滤第二个参数?
【发布时间】:2015-09-19 00:18:23
【问题描述】:

我是 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 是我的第一个参数。我希望查询基于它进行过滤,但事实并非如此。

当我第一次尝试关闭查询设计器时,出现以下错误:

查询包含未声明的 BU 参数。

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

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

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

我已经在常规 SQL 中使用 SSRS 完成了此操作,并且效果很好。但是如何使用 Cube 和 MDX 来完成呢?

【问题讨论】:

  • @BU 的值是多少?
  • @whytheq BU 的值是一个字符串,例如“Word”或“Apple”。它来自用户选择的先前参数。
  • 那么它必须是 SSAS 将识别为集合的集合的完整字符串,例如 "{[Fruit].[type].[" + @BU + "]}"

标签: reporting-services parameters mdx


【解决方案1】:

以下内容直接来自此 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 查询设计器 模式?如果是这样,您需要在 查询设计器,如 here 所述,在“使用查询”部分 参数”。


编辑

这是strToSet 函数的文档:https://msdn.microsoft.com/en-us/library/ms144782.aspx

如果@BU 是“Apple”,您需要执行以下操作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2020-09-24
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多