【问题标题】:Subselecting with MDX使用 MDX 进行子选择
【发布时间】:2011-01-29 09:02:18
【问题描述】:

问候堆栈溢出社区。

我最近开始在 SSAS2008 中构建 OLAP 多维数据集,但遇到了困难。如果有人至少能指出我正确的方向,我将不胜感激。

情况:两个事实表,同一个多维数据集。 FactCalls 保存有关订阅者呼叫的信息,FactTopups 保存充值数据。这两个表都有许多共同的维度,其中一个是订阅者维度。

FactCalls            FactTopups
订阅者密钥      订阅者密钥
通话时间         日期键
通话费用               充值 ...

我想要实现的是能够根据过去 7 天内已充值帐户的不同订阅者构建 FactCalls 报告。

我基本上在寻找与 SQL 等效的 MDX:

select *  
  from FactCalls  
 where SubscriberKey in 
       ( select distinct SubscriberKey from FactTopups where ... );  

我已尝试为包含 SubscriberKey 的两个表创建退化维度并执行以下操作:

Exist( 
         [Calls Degenerate].[Subscriber Key].Children, 
         [Topups Degenerate].[Subscriber Key].Children 
     )

没有成功。

亲切的问候,

文斯

【问题讨论】:

    标签: filter ssas mdx exists subquery


    【解决方案1】:

    您知道有时候最简单、最明显的解决方案会以某种方式让您不知所措吗?好吧,这显然是其中之一。他们说“MDX 不是 SQL”,我现在知道他们的意思了。我一直从完全 SQL 的角度来处理这个问题,完全忽略了 filter 命令的明显用途。

    with set [OnlyThoseWithTopupsInMarch2010] as
        filter( 
                [Subscriber].[Subscriber Key].Children, 
                ( [Measures].[Topups Count], 
                  [Topup Date].[Calendar].[Month Name].&[2010]&[3] ) > 0 
              )
    
    select non empty{
            [Measures].[Count],
            [Measures].[Cost],
            [Measures].[Topup Value]
    
          } on columns,
          non empty{ [Test] } on rows
     from [Calls] ; 
    

    简单得令人尴尬。

    【讨论】:

      【解决方案2】:

      您可能会发现类似以下内容的效果会更好。过滤器方法将强制遍历每个订阅者,而 NonEmpty() 函数可以利用存储引擎中的优化。

      select non empty{ 
              [Measures].[Count], 
              [Measures].[Cost], 
              [Measures].[Topup Value] 
      
            } on columns, 
            { 
      NonEmtpy( [Subscriber].[Subscriber Key].Children,     
                  ( [Measures].[Topups Count],     
                    [Topup Date].[Calendar].[Month Name].&[2010]&[3] ) )
         } on rows 
       from [Calls] ; 
      

      【讨论】:

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