MDX Расчет времени между событиями - PullRequest
3 голосов
/ 09 февраля 2009

У меня есть куб, который рисует свои данные из 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" будут рассчитанными членами, но мне нужна помощь, чтобы выяснить, как их создать.

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

Ответы [ 2 ]

2 голосов
/ 08 апреля 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

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

2 голосов
/ 11 февраля 2009

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

...