に計算を追加しようとしていますBIDS 2008R2
:DaysSinceLastOrder
ユニーク ユーザー (およびそれぞれの平均 DaysSinceLastOrder 時間) を考慮した平均
たとえば、orders テーブルに次の行があるとします。
customerID daysSinceLastOrder
1 null
1 1
1 3
2 6
3 null
次に((1 + 3)/2 + 6) / 2 = 4
、最後の注文からの平均日数 が必要です
つまり
、各ユーザーについて、そのユーザーのdaysSinceLastOrder
平均を計算し、それらの値の平均をとりますが、値が
null の注文は無視します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
値は、その顧客の最初の注文であることを意味します