2012-02-22 105 views
2

我有一個維度爲「Company」的成員爲「CompanyName」,度量組爲「CompanyMembership」,其度量爲「StartDate」和「EndDate」。我如何計算一個日期或月份或年份的會員數量?我也有一個用戶層次結構Date.Calendar(就像Adventure Works中的一樣)。MDX計算量度 - 開始日期和結束日期之間的計數

如果當前會員的日期代表一個月,會員價值將是該月的第一天,我只關心會員資格是否涵蓋當天。如果一年的會員價值將成爲一年中的第一天,我只關心該會員資格是否涵蓋當天。

這裏是我想什麼一些僞代碼: SUM(IF(Measures.StartDate < = Date.Calendar.Value < = Measures.EndDate),那麼1否則爲0)

我想保持起始日期和EndDate放在同一個事實錶行中(沒有分成兩行 - 一個是StartDate,另一個是EndDate),但是如果沒有其他方法,它會願意更改模式。

我該怎麼寫這個表達式?

回答

0

我沒有在您的當前模式中執行此操作的方法,但您應該真的考慮將Membership設置爲時間維度。那會回答「這個公司是這個日子的成員嗎?」更容易。

+0

您的意思是在範圍內爲每個日期使用單個日期,而不是像這樣的範圍:如果範圍是2012年1月1日 - 2012年12月31日,那麼2012年1月1日的行,1/2/2012,...,12/31/2012?如果是這樣,這是一個好主意,但由於表格的大小和廣泛的日期範圍,我認爲它不適合我。 – 2012-02-22 18:23:09

+0

這就是主意。不過,你不應該創造一個新的事實表。如果SSAS無法根據事實表中的一對日期構建時間維度,則可以創建一個視圖來進行擴展。我建立一個立方體已經有幾年了,所以我不確定最優雅的方法。 – Simon 2012-02-22 18:41:31

+0

使用視圖聽起來像是一個不錯的選擇。我擔心空間的使用,因爲我擁有多次具有相同類型的關係的表格有100,000,000多行,日期範圍爲10年以上(例如,成員也有會員資格)。我希望得到一個mdx函數來節省空間,但是然後性能可能會使它無法使用。我將測試視圖並回傳。謝謝。 – 2012-02-22 18:54:32

相關問題