2013-07-17 201 views
2

我對MDX這個深度比較陌生,但這裏是我的兩難境地。我的目標是使用.Net存儲過程實現計算成員。計算(XIRR)將基於一組現金流量日期和現金流量。理想情況下,這將是我的多維數據集中的一個計算結果,可作爲Excel/Browser用戶的衡量指標。MDX被計算成員SubCube

所以開始簡單我只是試圖實現我自己的COUNT計算成員/度量(甚至不使用.Net)來說根據當前上下文計算給定維度中的成員數量。因此,讓我們說我有一個維度客戶與客戶ID密鑰。假設我的數據庫中共有100個客戶。因此,Count(Customer.CustomerId.AllMembers)將爲100.現在,當您開始使用瀏覽器並在Customer.CustomerId上說過濾器時。 & 1,Customer.CustomerId。 & 2(客戶ID爲1和2)我希望我的計數成員返回2,但它返回的總數爲100。我曾嘗試使用存在。我相信有一些我根本不瞭解的東西。

希望這是有道理的,非常感謝來自對SSAS/MDX和計算有很好理解的人的幫助。提前致謝。

馬蒂

回答

1

你可能有一些問題,在這裏,我沒有當我試圖做類似的事情。

您的計算成員不尊重客戶端子選擇,這是正常的。理論上你會做的是創建一個動態集合,然後在計算的成員中使用它來強制維度計數在您的過濾器創建的子多維數據集的上下文中進行評估。磨沙在這裏有一個很好的文章:http://sqlblog.com/blogs/mosha/archive/2007/08/25/mdx-in-katmai-dynamic-named-sets.aspx

所以你最終的東西,如:

CREATE DYNAMIC SET CurrentCube.Customers AS 
EXISTING(Customer.CustomerId.CHILDREN); 

CREATE MEMBER CurrentCube.Measures.CustomerCount AS 
Customers.COUNT 

現在你要真正的問題是在SSAS https://connect.microsoft.com/SQLServer/feedback/details/484865/calcuated-member-with-a-reference-to-dynamic-named-set-kills-the-cubes-performance個bug,因此上面的代碼,這將可能在本地工作得很好,會殺死一個生產魔方。這對我來說是一個令人興奮的學習經歷。

看看你是否可以得到任何解決方法,我不能。

我能得到我想要的東西,但我不得不創建查詢範圍的動態集合爲MDX查詢的一部分,我不能將其創建爲一個立方體對象:

WITH DYNAMIC SET Customers AS 
EXISTING(Customer.CustomerId.CHILDREN); 

MEMBER Measures.CustomerCount AS 
Customers.COUNT 

SELECT 
Measures.CustomerCount 
ON COLUMNS 
FROM [Cube] 
WHERE Customer.CustomerId.&[1] 

讓我們知道您的身體情況如何。

+0

謝謝你指點我正確的方向。我現在正在使用一個解決方案,現在我使用了與我的XIRR(現金流)所需的度量關聯的維度上的動態命名集。在我的計算指標中結合使用EXISTING可以爲我提供準確的現金流量。我最終會想找出一個更好的解決方案,以處理用於Filter/SubCube的其他維度或其他維度的現金流量。但現在這會起作用。非常感謝你!! – kapacity