2014-01-08 115 views
1

我有一種情況,即使用SSAS多維數據集來分析位置之間的行程頻率。我將這些位置定義爲立方體和行程頻率的一個尺度。從SSAS多維數據集或關係數據庫獲取其他數據

我正在創建一個返回此數據的服務,並且每次我從某個位置返回數據時,我還必須返回與該位置關聯的幾個其他字段(名稱,地理座標和其他字段),但不是在立方體中使用的部分維度。

我能想到的兩種不同的方式來獲取信息:

  1. 所有需要的領域從立方體到尺寸,讓他們在同一MDX查詢。
  2. 從多維數據集中獲取數據後,從關係數據庫中獲取用作多維數據集基礎的其他字段。

這兩個選項都可以給我我需要的信息,我不知道哪一個是最好的選擇。

回答

1

將信息添加到維度將使所有事情變得簡單,您只需運行MDX查詢,並且所有內容都在那裏。無需在服務中實施複雜的查找邏輯。您可能會考慮將一些附加字段作爲自定義屬性(如here)進行實施,但這可能會使其檢索起來更復雜一些,具體取決於您使用的確切客戶端界面。因此,最簡單的方法是將它們作爲屬性來實現。

如果你想要去的多一點複雜的方式,以及你想要得到的信息,在一個正常的MDX語句的結果,你必須之前包含屬性軸的ON ROWSON COLUMNS等添加DIMENSION PROPERTIES [Dim].[Attrib].[Prop] 。這包括結果中的財產。您如何訪問它取決於您的客戶端界面。

如果您正在使用Adomd.net,你可以從成員Properties財產的性質,但 - 根據documentation - 需要調用FetchAllProperties方法來填充這一點。

使用屬性時還有另一種方法:定義一個措施,因爲

[Dim].[Attrib].CurrentMember.Properties("Prop") 

將提供屬性值作爲衡量沒有任何特殊的實施需要在客戶端上。

由於屬性需要一些特殊處理,無論是爲了獲得訪問權限還是通過定義度量,在很多情況下,正常屬性將是最佳解決方案。

+0

我終於測試了您的建議,但無法獲取屬性值。我正在使用ADOMD.NET從C#程序執行MDX查詢。我能夠獲得我需要的所有信息的唯一方法是將附加信息定義爲常規維度屬性,並將它們作爲輸出列添加到查詢中。 – lbarreira

+0

@lbarreira正如我寫的,它更容易定義爲正常的屬性。無論如何,我添加了一些信息如何訪問我的答案中的屬性。 – FrankPl

+0

我用兩種方式獲取我需要的信息做了一個小測試。在多次運行測試(重複查詢100次)並更改這兩個選項之間的多維數據集結構之後,如果將其他屬性定義爲自定義屬性,那麼要獲取客戶端上的信息,我需要大約1600ms。如果將屬性定義爲常規尺寸屬性,則所需時間僅爲1000毫秒。有了這樣的性能差異,我想我會去與正常的維度屬性... – lbarreira