【问题标题】:SSAS MDX for Many to many relationship多对多关系的 SSAS MDX
【发布时间】:2014-12-25 15:25:05
【问题描述】:

使用 Adventureworks DW 2008 多维数据集,我正在尝试构建一个 MDX 查询,该查询将返回没有特定原因代码的互联网订单计数。

FactInternetSales 与 FactInternetSalesReason 具有多对多关系。每笔销售都有 1 个或多个原因代码。

如果我尝试退回未使用“促销中”原因的订单,我仍然会将促销中的订单计入计数,因为它们还有其他原因。

MDX怎么写,说如果这个订单有这个原因,不计入计数,不考虑其他原因?

针对冒险作品 sql 数据仓库的等效 SQL 将是:

select count(distinct salesordernumber) from FactInternetSales
where not exists (select salesorderNumber 
                    from FactInternetSalesReason 
                    where SalesReasonKey = 2 
                    and FactInternetSales.SalesOrderNumber = FactInternetSalesReason.SalesOrderNumber
                )

【问题讨论】:

    标签: sql-server ssas mdx adventureworks azure-sqldw


    【解决方案1】:

    这是互联网订单计数:

    SELECT 
      {
        [Measures].[Internet Order Count]
      } ON 0
    FROM [Adventure Works];
    

    这是不包括促销活动的互联网订单计数:

    SELECT 
      {
        [Measures].[Internet Order Count]
      } ON 0
    FROM [Adventure Works]
    WHERE 
      Except
      (
        [Sales Reason].[Sales Reason].[Sales Reason]
       ,[Sales Reason].[Sales Reason].[On Promotion]
      );
    

    以下将这些排除项转化为具体措施:

    WITH 
      MEMBER [Measures].[Internet Order Count OnPromotion] AS 
        (
          [Measures].[Internet Order Count]
         ,[Sales Reason].[Sales Reason].[On Promotion]
        ) 
      MEMBER [Measures].[Internet Order Count excl OnPromotion] AS 
          [Measures].[Internet Order Count]
        - 
          [Measures].[Internet Order Count OnPromotion] 
    SELECT 
      {[Date].[Calendar].[(All)]} ON 0
     ,{
        [Measures].[Internet Order Count]
       ,[Measures].[Internet Order Count OnPromotion]
       ,[Measures].[Internet Order Count excl OnPromotion]
      } ON 1
    FROM [Adventure Works];
    

    【讨论】:

    • 谢谢。这适用于冒险作品立方体,但它不适用于我的立方体。我的立方体上一定有什么东西坏了。回到绘图板。 :)
    • 当我仔细查看这些数字时,您的第二个查询从 AW 多维数据集返回 21,197,用于排除促销活动的订单,但您的第三个查询使用计算的度量,将促销排除订单返回为 24,144。所以现在我试图找出导致差异的原因
    猜你喜欢
    • 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
    相关资源
    最近更新 更多