【问题标题】:SSRS: Partial re-use of a MDX query? OR MDX as Parameter?SSRS:部分重用 MDX 查询?或 MDX 作为参数?
【发布时间】:2011-07-08 19:10:07
【问题描述】:

在 Sql Server Reporting Services 报告中

是否可以在报表中定义 MDX 查询,然后多次重复使用它,但每次使用不同的 WHERE 部分。

即每一行的成员和 SELECT 部分都是相同的 (MTD.Count YTD.Count)

但是,我想用 10 种不同的方式过滤它..

我现在能想到的唯一方法是添加 10 个数据集,每个数据集都有不同的 WHERE 部分,但我只想重复使用一个 DS

交替

另一个完全可以接受的选项是将整个 MDX 查询作为某种参数提供给报表。我的挑战是我的 MDX 查询是动态生成的(包括实际查询的数量),所有这些都是用户驱动的。那么有没有一种方法可以为报表提供 n 个 MDX 查询,并将其插入矩阵?我今天想到的一种方法是动态发出整个 RDL XML..

【问题讨论】:

    标签: sql-server sql-server-2005 reporting-services ssas mdx


    【解决方案1】:

    您可以使用以下几个参数来获取数据集:

    SELECT
    {
        StrToSet(@rowAxisMdx)
    } ON 0,
    {
        StrToSet(@columnAxisMdx)
    } ON 1
    FROM [Cube]
    WHERE {
        @StrToSet(@slicerAxisMdx)
    }
    

    由于您使用了很多 StrToSet 函数,它会很慢,但它应该可以工作。

    【讨论】:

    • 如何让@slicerAxisMdx 在每一行中都不同?这是我的问题。
    • 意思是,我想要的不仅仅是查询的一个变体。我需要它的 n 个变体。喜欢.. @slicerAxisMdx 数组
    • 您可以在子报表中执行此操作,传递不同的 MDX 我想...您不能在同一查询中动态更改 WHERE 子句
    • 是的,子报告最终正是我所需要的.. 不确定您何时添加此评论.. 抱歉,如果是在我在回答中得出该结论之前 :)
    • 不是 ;) 我只是想说,如果需要,您可以使用带有参数化 MDX 的子报表,如我在上面的回答中一样 - 您可以将参数传递给子报表...
    【解决方案2】:

    这很可能是我的解决方案:

    Subreports

    是的,子报表在这里救了我。我的实际目标是重复相同的 MDX 查询,并为每一行使用不同的 WHERE 部分。子报告就是为此而设计的。您可以定义一个矩阵并将其绑定到数据集。该数据集将确定您的矩阵将填充多少行数据。

    您可以在矩阵的一个单元格中嵌入一个子报表,并为其传递一个参数(在我的例子中,我传递的是整个 WHERE 过滤器,但您可以使其更细化并且只传递一个字段。

    然后在您的子报表中,您可以根据从父报表传入的参数仅显示一组信息。

    这里还有一些链接

    SubReports

    Designing Reports with Custom MDX Queries

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      相关资源
      最近更新 更多