MDX SSAS计算考虑不同用户的度量的平均值

时间:2013-03-22 22:19:44

标签: ssas mdx

我正在尝试在BIDS 2008R2中添加计算:平均DaysSinceLastOrder考虑到唯一身份用户(以及他们平均每天的DaysSinceLastOrder次数)

例如,如果我的订单表有这些行:

customerID  daysSinceLastOrder
1           null
1           1
1           3
2           6
3           null

然后我想要自上次订单后的((1 + 3)/2 + 6) / 2 = 4平均天数

用语言:
对于每个用户,计算该用户daysSinceLastOrder的平均值 然后取这些值的平均值 但忽略值为daysSinceLastOrder的订单

显然这个基本计算不起作用,因为它忽略了分子中客户的唯一性:

CREATE MEMBER CURRENTCUBE.[Measures].[Avg Days Since Last Order]
    AS [Measures].[daysSinceLastOrder] / [Measures].[#UniqueCustomers]
SQL中的

将是:

select AVG(t.avgDaysSinceLastOrder) as avgDaysSinceLastOrder
from (
  select customerID, AVG(daysSinceLastOrder) as avgDaysSinceLastOrder
   from orders  
   group by customerID  
) t

那么我怎样才能在MDX中完成这项工作?

更新:
实际上我想要这样的东西:

CREATE MEMBER CURRENTCUBE.[Measures].[Avg Days Since Last Order]
    AS sum(avg_daysSinceLastOrder_per_customer) / [Measures].[#Unique Customers]

我尝试了以下不起作用,它只是平均所有内容,而不是基于每个客户:

CREATE MEMBER CURRENTCUBE.[Measures].[Avg Days Since Last Order]
    AS sum([Customers].[User Id],
          sum([Customers].[User Id], [Measures].[Days Since Last Order]))
       / [Measures].[#Unique Customers]

备注

  • daysSinceLastOrder度量是在ETL期间预先计算的(SUM为多维数据集中的聚合类型)
  • #UniqueCustomers显然是多维数据集中的一个度量(在这种情况下会有3个),这不是我想要在上面使用的
  • null daysSinceLastOrder值表示该客户的第一个订单

0 个答案:

没有答案