MDX, вычисляющий время между событиями

У меня есть куб, который извлекает данные из 4 таблиц фактов/тускнений.

  1. FactCaseEvents (EventID,CaseID,TimeID)
  2. DimEvents (EventID, EventName)
  3. DimCases (CaseID,StateID,ClientID)
  4. DimTime (TimeID,FullDate)

События будут: CaseReceived,CaseOpened,CaseClientContacted,CaseClosed

DimTime хранит запись для каждого часа.

Я хотел бы написать оператор MDX, который даст мне 2 столбца: «CaseRecievedToCaseOpenedOver5» и «CaseClientContactedToCaseClosedOver5»

CaseRecievedToCaseOpenedOver5 будет содержать количество наблюдений с разницей во времени более 5 часов за время между CaseReceived и CaseOpened.

Я предполагаю, что "CaseRecievedToCaseOpenedOver5" и "CaseClientContactedToCaseClosedOver5" будут вычисляемыми членами, но мне нужна помощь, чтобы понять, как их создать.

Заранее спасибо.


person madcolor    schedule 09.02.2009    source источник


Ответы (2)


Это похоже на хорошее место для использования таблицы фактов типа накопительного снимка и расчета времени, необходимого для перехода от одного этапа конвейера к другому в процессе ETL.

person Shane Delmore    schedule 10.02.2009

Запрос для 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

Если вы будете часто использовать этот элемент, создайте его как вычисляемый элемент в кубе на вкладке «Вычисления», если я правильно помню.

person Meff    schedule 07.04.2009