我正在尝试添加一个计算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 个),这不是我想要在上面使用的
- 空
daysSinceLastOrder
值表示这是该客户的第一个订单