2011-07-08 119 views
1

Sql Server报告服务报告SSRS:部分重用MDX查询?或MDX作为参数?

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

即会员和SELECT部分​​将每行(MTD.Count YTD.Count)

相同,但是,我想它过滤10周不同的方式..

的唯一途径我能想到现在这样做的,是将10个集,每一个不同的WHERE部分,但我想重新使用只有一个DS

或者

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

回答

0

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

Subreports

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

您可以在基质的细胞嵌入一个报表,并把它传递一个参数(在我的情况下,我通过整个WHERE过滤器,但你可以使它更精细,仅通过一个字段。

然后在你的报表可以显示只有一个基础,它是由父报表传递的参数集的信息。

这里有一些更多的链接

SubReports

Designing Reports with Custom MDX Queries

0

可以使用这样的几个参数有数据集:

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

这将是缓慢的,因为你正在使用很多StrToSet的功能,但它应该工作。

+0

您如何使@slicerAxisMdx在每一行中有所不同?这是我的问题。 –

+0

的含义,我想要的不仅仅是查询的一个变体..我需要它的变体。像.. ..数组@slicerAxisMdx –

+1

你可以在子报表中做到这一点,传递不同的MDX我想......你不能在相同的查询中动态地更改WHERE子句 –