【发布时间】:2011-07-27 22:10:59
【问题描述】:
我需要对多个查询的结果求和。
我面临的挑战是每个查询都定义了成员(以计算日期范围)
我需要能够跨多个 mdx 查询组合/求和这些成员
WITH Member [M1] AS Sum(DateRange, Measure)
SELECT [M1]
FROM [Cube]
WHERE {[x].&[y]}
WITH Member [M1] AS Sum(Different DateRange, Measure)
SELECT [M1]
FROM [Cube]
WHERE {[z].&[q]}
每个查询根据不同的条件选择相同的成员。
我能想到的唯一方法是 UNION 而不是 SUM([M1]) 但不知道在 MDX 中如何实现
更新 - 回复 icCube 问题,这就是为什么我需要为每个查询有一个单独的 WHERE 子句:
我需要为每个查询单独的 WHERE 部分,因为我需要聚合不同切片的结果。我的切片由 n 个维度定义。我根据用户配置输入动态地为每个切片发出 mdx 查询(并动态构建我的 WHERE 子句以按用户偏好进行过滤)。允许用户配置重叠切片(这些是我需要总结在一起的)。然后我需要将这些切片行数组合成一个报告。我正在做的方式是将带有 MDX 查询的字符串传递给报表。但是由于我想不出一种将多个查询放入一个可执行字符串的方法,(我也不知道会有多少查询)这种方法不再可能(除非有某种方法可以合并/求和它们。
我现在能想到的唯一方法是使用额外的 batching 步骤,该步骤将遍历所有查询,将它们(使用 Adomd.net)处理到 staging em> 表,然后我可以使用 SQL sum(..) 将它们聚合成一个报告。这种方法的最大缺点是需要维护额外的系统,并且报告中的数据更有可能是陈旧的。
【问题讨论】:
标签: sql-server sql-server-2005 reporting-services ssas mdx