2009-02-09 54 views
3

我有一个Cube,它从4个事实/暗淡表中绘制数据。MDX计算事件间的时间

  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

这看起来像使用一个累积快照类型事实表和计算才能摆脱流水线的一个阶段,在ETL过程的下一时间的好地方。

+0

感谢您的评论..我会研究这一点。 – madcolor 2009-02-10 23:09:18

2

用于查询的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

,在计算选项卡上,如果我没有记错的话。

+0

杀手..谢谢。 – madcolor 2009-04-08 02:11:39