【问题标题】:Summing up multiple MDX queries in SSAS总结 SSAS 中的多个 MDX 查询
【发布时间】: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


    【解决方案1】:

    不确定这是不是你要找的东西

    WITH Member [M1] AS Sum(Different DateRange, ([z].&[q],Measure) ) + 
                        Sum(DateRange, ([x].&[y],Measure))
    
    SELECT [M1]
    
    FROM [Cube]
    

    WITH Member [M1] AS Sum(Different DateRange * {[z].&[q]}, Measure ) + 
                        Sum(DateRange * {[x].&[y]}, Measure)
    
    SELECT [M1]
    
    FROM [Cube]
    

    我不知道有什么方法可以在 MDX 中添加两个选择的结果...

    【讨论】:

    • 谢谢,但我需要为每个查询设置不同的 WHERE 部分
    • 好的——你能解释一下为什么吗? - 如果您找到解决方案,请告诉我们。
    • 当然,我更新了我的问题,并给出了解释以及我目前对如何解决问题的最佳猜测。希望这是有道理的..
    • Txs,不确定我是否理解所有内容,但使用计算成员允许添加具有不同维度的元组,查看提议的解决方案之一不起作用的具体示例将有所帮助:-)
    • 实际上,我将您的想法付诸实践,完全可以通过这种方式组合不同的 WHERE 过滤器!谢谢冰立方!! :)))
    【解决方案2】:

    我相信你需要 Aggregate() 而不是 Sum。

    【讨论】:

      【解决方案3】:

      您可以通过这种方式使用 SubCubes 在 MDX 中实现 UNION 行为:

      Select
      {...} On Columns,
      {...} On Rows
      From (
           Select 
                  {
                    {Dimension1.Level.Members * Dimension2.&[1] * Dimension3.&[2]},
                    {Dimension1.&[X] * Dimension2.Members * Dimension3.&[5]}  
                  } On Columns
           From [Cube]
           )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多