SSRS:添加基于2个DataSet的Matrix

时间:2011-07-06 20:54:23

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

我刚开始使用SSRS,并想出如何将我的MDX查询连接到多维数据集并将其插入矩阵

但是,我需要一个矩阵,在每个部分中,我需要调用一个不同的DataSet。

例如:

Matrix1 会有一个基于 DataSetA 的重复部分(假设其客户中心)。

在Matrix1的每个部分(客户中心)中,我将使用 DataSetA 中的作为<,使用数据集B 的表达式strong>参数(假设它是一个单独的MDX查询,根据客户中心ID获取一些其他信息)。

所以我在tablix单元格中的表达式是这样的:

=First(Fields!MTD_Trades.Value, "DatasetB")

是否可以使用此时的参数传递MDX查询过滤器(或where子句)?

理想情况下它会是这样的(伪代码):

=First(Fields!MTD_Trades.Value, "DatasetB") WHERE Fields!Where_Filter.Value

沿着这些方向的东西..其中MDX WHERE 部分基于另一个查询是动态的

更新 - 解决方案说明

这是我正在做的一个例子:假设应用程序基于空中交通,这里的业务用户是一些航空管理人员。我会给那个人一个UI,让他们定义他们想要看到的切片。例如,他们可以进来,并创建n个切片(即国际航班,离开美国的航班,午夜后抵达的航班,有50多名乘客的航班......)。如您所见,他们可以自由地为每个切片添加他们希望的任何过滤器。

然后根据他们的动作(使用GUI),我将生成必要的MDX查询(每个切片一个)。

我的挑战是创建一个SSRS报告,为每个切片(1-n)显示一个单独的行。希望有助于理解我的难题。对于每个切片(航班数量),查询的第一部分将是相同的,但WHERE部分对于报告而言将是不同的且动态的。

1 个答案:

答案 0 :(得分:1)

您可以使用lookup()函数从报表项中访问其他数据集中的数据,但不能在报表中运行多个子查询。您只能在参数中执行此操作,其中一个参数可以是另一个查询驱动参数的输入。

最佳操作方法是修改原始查询以包含Matrix所需的所有数据。

编辑:听起来你需要使用多值参数。

  1. 在“切片”参数中,将其设置为allow multiple values
  2. 在接受此参数的数据集中,转到参数表单并将值设置为=Join(Parameters!Slices.Value,",")的表达式。
  3. 拉开查询中的字符串并运行每个子查询,然后作为集返回。