MDX - AGGREGATE()和SUM()函数之间的区别

时间:2014-09-25 15:42:58

标签: sql sql-server ssas mdx data-warehouse

我想知道下面发生了什么。为什么以下MDX查询提供不同的输出?

注意:[Measures]。[Claim Of Of - Count]是一个计算的度量(我们使用表格模型方法)。 [事故日期]是此措施背后的DAX计算的一部分。此度量与使用[事故日期]维度的另一个度量(在计算中)相关。

查询1

- 错误消息:检测到无限递归。依赖循环是:sumallsales - > sumallsales。

WITH 
  MEMBER [Accident Date].[Year].sumallsales AS 
    Sum
    (
      [Accident Date].[MOnth].MEMBERS
     ,[Measures].[Claim As Of - Count]
    ) 
  MEMBER [Accident Date].[Year].aggregateallsales AS 
    Aggregate
    (
      [Accident Date].[MOnth].MEMBERS
     ,[Measures].[Claim As Of - Count]
    ) 
SELECT 
  {
    [Accident Date].[Year].sumallsales
   ,[Accident Date].[Year].aggregateallsales
  } ON 0
 ,[Client].[Client Name].MEMBERS ON 1
FROM [AW Cube];

查询2

---所有空值

WITH 
  MEMBER [Accident Date].[Year].sumallsales AS 
    Sum
    (
      [Accident Date].[MOnth].[all]
     ,[Measures].[Claim As Of - Count]
    ) 
  MEMBER [Accident Date].[Year].aggregateallsales AS 
    Aggregate
    (
      [Accident Date].[MOnth].[all]
     ,[Measures].[Claim As Of - Count]
    ) 
SELECT 
  {
    [Accident Date].[Year].sumallsales
   ,[Accident Date].[Year].aggregateallsales
  } ON 0
 ,[Client].[Client Name].MEMBERS ON 1
FROM [AW Cube];

查询3

---相等且正确

WITH 
  MEMBER [Accident Date].[Year].sumallsales AS 
    Sum
    (
      [Accident Date].[Year].[all]
     ,[Measures].[Claim As Of - Count]
    ) 
  MEMBER [Accident Date].[Year].aggregateallsales AS 
    Aggregate
    (
      [Accident Date].[Year].[all]
     ,[Measures].[Claim As Of - Count]
    ) 
SELECT 
  {
    [Accident Date].[Year].sumallsales
   ,[Accident Date].[Year].aggregateallsales
  } ON 0
 ,[Client].[Client Name].MEMBERS ON 1
FROM [AW Cube];

查询4

---所有空值

WITH 
  MEMBER [Accident Date].[Year].sumallsales AS 
    Sum
    (
      [Accident Date].[Year].CurrentMember
     ,[Measures].[Claim As Of - Count]
    ) 
  MEMBER [Accident Date].[Year].aggregateallsales AS 
    Aggregate
    (
      [Accident Date].[Year].CurrentMember
     ,[Measures].[Claim As Of - Count]
    ) 
SELECT 
  {
    [Accident Date].[Year].sumallsales
   ,[Accident Date].[Year].aggregateallsales
  } ON 0
 ,[Client].[Client Name].MEMBERS ON 1
FROM [AW Cube];

查询5

---使用sum函数的值是使用aggregate

的值的两倍
WITH 
  MEMBER [Accident Date].[Year].sumallsales AS 
    Sum
    (
      [Accident Date].[Year].MEMBERS
     ,[Measures].[Claim As Of - Count]
    ) 
  MEMBER [Accident Date].[Year].aggregateallsales AS 
    Aggregate
    (
      [Accident Date].[Year].MEMBERS
     ,[Measures].[Claim As Of - Count]
    ) 
SELECT 
  {
    [Accident Date].[Year].sumallsales
   ,[Accident Date].[Year].aggregateallsales
  } ON 0
 ,[Client].[Client Name].MEMBERS ON 1
FROM [AW Cube];

0 个答案:

没有答案