2013-04-02 66 views
2

我最近問a question對多,多對多關係,以及它們如何被用來計算得到回答相當優良的交點。現在,我們的多維數據集還有一個很好的要求,即將其擴展到更多數據。一般的問題是:How many orders contain both product x and y?SSAS計算度量:訪問關係數據庫

然而,測度組現在要大得多,目前約1.4十億行。我嘗試使用另一篇文章中描述的方法來實現這一點,其中有幾個隱藏的交叉引用度量值組。但是,這對於我們的硬件來說太簡單了,多維數據集的大小接近0.5 TB,查詢需要幾分鐘才能完成。

現在我會嘗試使用另一種選擇:我可以訪問我們的關係型數據庫在計算度量?看來我可以,使用UDFs如described in this article。我可以在c#中編寫一個函數來查詢我們的關係數據庫,並返回包含用戶選擇的產品的所有訂單。但爲了做到這一點,我需要將用戶選擇的所有尺寸數據提供給UDF。我還需要UDF返回計算出的值,以便它可以作爲計算成員的結果輸出。那可能嗎?如果是,如何?微軟提供的示例只包含一個小的確定性字符串函數作爲UDF。

回答

0

這裏我自己的結果:

它似乎是可能的,但有限制。類Microsoft.AnalysisServices.AdomdServer.Context可以爲您提供每個層次結構的currentMember,但這不適用於Excel-Style-Subselects。它包含單個成員或AllMember。

另一種選擇是讓使用DMV SELECT * FROM $System.DISCOVER_SESSIONS MDX查詢。該視圖上會有一列包含給定會話的最後一個mdx查詢。但是,爲了不覆蓋自己的最後一個查詢,您將不需要使用當前連接,而是需要打開一個新連接。會話ID可以通過Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection.SessionID獲得。

第二種方法是確定我們的用例。它允許您處理軸,因爲UDF功能上有小區範圍的,但你不知道你是哪個小區,如果有人對你知道最後一點什麼,請告訴我。謝謝!