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, который даст мне 2 столбца:"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
Если вы будете часто использовать этот элемент, создайте его как вычисляемый элемент в кубе на вкладке «Вычисления», если я правильно помню.