2009-02-03 53 views
2

我在分析服務,它返回每天平均營收爲基於他們的最後3個週期的位置計算度量。期間是地點定義的時間長度,因此一個地點可能每月關閉他們的期間,另一個地區可能每季度關閉一次。如何使SSAS中的計算量度正確捲起?

要返回平均每日收入,我有一個factPeriods表,該表返回期間的收入以及有助於期間的天數。以下MDX在該位置電平,則返回正確的值([措施]。[天在AR收費])/([措施]。[天在AR天])。

問題是當我捲到更高的層次時,比如說我想按狀態返回平均每日收入,計算是不正確的,因爲它首先彙總了對期間有貢獻的日期,然後進行分配。我希望首先在最低級別進行平均,然後對日常平均收入的結果進行總結。以下是我想要發生的事情的一個例子。

說我只有兩個地點,A和B.每月關閉,B關閉季度。最後關閉的結果是:

位置/收入/天促進收入

位置A/$三十〇分之三千天 位置B/$ 1800至1890年天

位置A被生成100 $ /地點B的收入僅爲每天20美元。我的總額應該是120美元一天。相反,它會返回40美元/天。以下是計算級別發生的情況。

我想式是在僞代碼SUM(([措施]。[天在AR收費])/([措施]。[天在AR天]))

但它實際上是給我可以幫助我確定合適的公式,以便根據需要進行此項工作(SUM([Measures]。[AR收費天數)))/(SUM([Measures]。[Days AR Days]))

?它最終應該是100美元/天+ 20美元/天,而不是4800美元/ 120天。我懷疑我可能需要使用後代,但我不清楚我將如何使用它們,或者如果這是甚至正確的方向。

回答

1

如果您可以在ETL或處理中獲得所需的數字,則不要使用SSAS計算,因爲它的性能會更好。

在這種情況下,我會添加一個DSV計算來進行除法運算,然後允許SSAS和平常和。

0

我的直接解決方案是計算ETL過程中的平均每日收入,然後SSAS將對該值進行求和。儘管有人知道這個問題,但我仍然很樂意看到MDX解決方案。

0

這是簡單地指定適當的「解決順序」與您計算的問題。我不能給你具體的MDX解決你的問題,因爲我不知道你的立方體結構是什麼,但看着「解決順序」中的文檔,或通過谷歌。這正是「解決令」應該解決的問題。你將基本上告訴Analysis Services首先要做什麼。

+0

我試圖解決這個問題,但它不起作用。這不是一種計算依賴於另一種計算的情況,而是以錯誤的順序求解,這種情況下,在單個簡單計算中,它是求和然後除法,而不是求和除法。 – 2009-02-04 18:53:02

3

強制計算髮生在葉級別然後彙總的最簡單方法是在CALCULATE之前移動它;在您的MDX腳本中聲明。

通常你應該離開CALCULATE;應在腳本的第一條語句,但我認爲你所描述的情況是它是有道理的有CALCULATE之前計算成員是一個例外;

-2

工作減少一個方程3個獨立的方程?在一個分子中計算分子,在另一個分子中計算分子,然後在第三個分子中計算分子?我不知道你正在談論的工具,所以我不知道你是否可以按順序進行多個計算。但那肯定會爲你訂購。