簡體   English   中英

在MDX中篩選多個DateRanges

[英]Filter on Multiple DateRanges in MDX

假設我有一張看起來像的桌子

ID | EntryDate  | ExitDate   | LastSeen   | Sex
---|------------|------------|----------------
1  | 2000-01-23 | 2015-01-18 | 2013-08-01 | M
2  | 2008-01-13 | null       | 2012-06-25 | F
3  | 2014-01-09 | 2014-12-21 | 2014-09-12 | M

我已經創建了作為[Measures]。[People]作為Count(ID)的度量和維,並具有3個唯一的日期維[EntryDate],[ExitDate],[LastSeenDate],具有[Day] Level,以'YYYYMMDD'格式表示(例如:20151231)

我要編寫的MDX是計算2014年1月1日之前進入的人數,2013年1月1日之后最后一次看到的人數以及2013年1月1日之后的退出日期的人數

如果我將其編寫為sql,則語法為

Select count(ID) from table where entryDate < 20140101 and exitDate > 20130101 and lastseenDate > 20130101;

我的第一次嘗試是將MDX編寫為

With
Set [EnrolDateRange] As Filter([EnrolDate].[Day].Children,[Enrol Date].[Day].CurrentMember.Name < '20140101')
Set [LastSeenDateRange] As Filter([LastSeenDate].[Day].Children,[LastSeen Date].[Day].CurrentMember.Name > '20130101')
Set [ExitDateRange] As Filter([ExitDate].[Day].Children,[ExitDate].[Day].CurrentMember.Name > '20130101')
MEMBER [Measures].[N1] As Aggregate ([EnrolDateRange],[Measures].[People])
MEMBER [Measures].[N2] As Aggregate ([LastSeenDateRange],[Measures].[People])
MEMBER [Measures].[N3] As Aggregate ([ExitDateRange],[Measures].[People])
MEMBER [Measures].[Total] As ([Measures].[N1] + [Measures].[N2] + [Measures].[N3])
Select { [Measures].[Total] } on columns, { [Sex].[Sex].Children } on Rows FROM [Cube]

但是這里的問題是我得到的總數是錯誤的,因為相同的行將分別為每個條件聚合。

我無法在日期上進行交叉聯接的原因是因為我擁有60多年的數據。

有什么方法可以使用MDX來實現上述目標

NULL:(Date)用於<= ,將(Date):NULL用於>=

select [Measures].[People] on 0
from [Cube]
where
(
 {NULL:[EntryDate].[Day].&[20131231]}
 /* not 20140101 because <= */

 ,{[LastSeenDate].[Day].&[20130102]:NULL}
 /* not sure, you mean after including Jan 1st or no */

 ,{[ExitDate].[Day].&[20130102]:NULL} /* the same */
)

一個重要提示:過濾器中的成員必須存在於每個維度。

例如,如果此維度中沒有[EntryDate].[Day].&[20131231] ,則服務器將其替換為NULL,並且不知道要過濾哪個維度,因為另一個范圍部分是查詢中的NULL。 結果將全部為NULL,請小心。

按照我的做法:將空成員(沒有真實數據)添加到維度比開發其他行為(例如“如果成員不存在,請在其右側/左側找到第一個非空成員”)更好。 與棘手的邏輯相比,這不會影響磁盤空間(僅影響維度數據),並且性能下降非常低。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM