MDX حساب الوقت بين الأحداث
-
22-08-2019 - |
سؤال
لدي مكعب يسحب بياناته من 4 جداول حقائق/قاتمة.
FactCaseEvents (EventID,CaseID,TimeID)
DimEvents (EventID, EventName)
DimCases (CaseID,StateID,ClientID)
DimTime (TimeID,FullDate)
الأحداث ستكون: CaseReceived,CaseOpened,CaseClientContacted,CaseClosed
يحمل DimTime إدخالاً لكل ساعة.
أرغب في كتابة عبارة MDX التي ستزودني بعمودين:"CaseRecievedToCaseOpenedOver5
" و "CaseClientContactedToCaseClosedOver5
"
CaseRecievedToCaseOpenedOver5
سيحتوي على عدد الحالات التي كان لها فارق زمني يزيد عن 5 ساعات للوقت بينهما CaseReceived
و CaseOpened
.
أظن ذلك "CaseRecievedToCaseOpenedOver5
" و "CaseClientContactedToCaseClosedOver5
" سيتم احتساب الأعضاء، ولكني بحاجة إلى بعض المساعدة في معرفة كيفية إنشائهم.
شكرا لك مقدما.
المحلول
يبدو هذا مكانًا جيدًا لاستخدام جدول حقائق نوع اللقطة المتراكمة وحساب الوقت المستغرق للانتقال من مرحلة واحدة من خط الأنابيب إلى المرحلة التالية في عملية ETL.
نصائح أخرى
الاستعلام عن AdventureWorks (يعمل DateDiff في MDX):
WITH
MEMBER Measures.NumDays AS
'iif(ISEMPTY(([Delivery Date].[Date].CurrentMember
,[Ship Date].[Date].CurrentMember
,Measures.[Order Count]))
,null
, Datediff("d",[Ship Date].[Date].CurrentMember.Name
,[Delivery Date].[Date].CurrentMember.Name))'
SELECT
NON EMPTY {[Ship Date].[Date].&[63]
:[Ship Date].[Date].&[92]} ON COLUMNS,
NON EMPTY {[Delivery Date].[Date].&[63]
:[Delivery Date].[Date].&[92]}
* {[Measures].[NumDays]
, [Measures].[Order Count]} ON ROWS
FROM [Adventure Works]
مأخوذ من: http://www.mombu.com/microsoft/sql-server-olap/t-can-i-have-datediff-in-mdx-265763.html
إذا كنت ستستخدم هذا العضو كثيرًا، فقم بإنشائه كعضو محسوب في المكعب، في علامة التبويب العمليات الحسابية إذا كنت أتذكر جيدًا.