MDX Calcolo tempo tra gli eventi
-
22-08-2019 - |
Domanda
Ho un cubo, che trae i suoi dati da 4 dei fatti / tavoli dim.
-
FactCaseEvents (EventID,CaseID,TimeID)
-
DimEvents (EventID, EventName)
-
DimCases (CaseID,StateID,ClientID)
-
DimTime (TimeID,FullDate)
Eventi sarebbero: CaseReceived,CaseOpened,CaseClientContacted,CaseClosed
DimTime detiene una voce per ogni ora.
Vorrei scrivere un'istruzione MDX che mi otterrà 2 colonne: "CaseRecievedToCaseOpenedOver5
" e "CaseClientContactedToCaseClosedOver5
"
CaseRecievedToCaseOpenedOver5
terrebbe il numero di casi che hanno avuto una differenza di tempo più di 5 ore per il tempo tra CaseReceived
e CaseOpened
.
Sto indovinando che "CaseRecievedToCaseOpenedOver5
" e "CaseClientContactedToCaseClosedOver5
" sarebbero calcolati membri, ma ho bisogno di aiuto per capire come crearli.
Grazie in anticipo.
Soluzione
Questo sembra un buon posto per utilizzare un tipo di snapshot tabella dei fatti accumulare e calcolare il tempo necessario per passare da uno stadio della pipeline a quello successivo nel processo di ETL.
Altri suggerimenti
Query per AdventureWorks (DateDiff lavora in 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]
Tratto da: http://www.mombu.com/microsoft/sql-server-olap/t-can-i-have-datediff-in-mdx-265763.html
Se userete questo utente molto, crearlo come un membro calcolato nel cubo, nella scheda Calcoli se ricordo bene.