2014-07-04 105 views
1

我使用以下(簡體)星計劃作爲一個SSAS OLAP多維數據集的數據源: enter image description here略相關尺寸

在我的立方體,我有措施[天],它只是包含「 1「 - 這只是一個簡單的方法來獲取某段時間的天數,對於計算每日平均值很有用,等等。顯然,這個度量與店鋪和員工維度無關。

現在,比方說,我用下面的MDX查詢:

SELECT { [SalesAmount], [Days] } on 0, 
    { [Shop].[Shop].[Shop].members } on 1 
FROM 
    [MyCube] 
WHERE 
    ([Shop].[Country].[USA], [Calendar].[Month].&[201406]) 

這將返回在美國所有的商店名單,與他們的銷售金額爲2014年6月,和天在六月號。它按預期工作,性能很好。

現在說,我想要相同的清單,但除了商店之外,我想要按員工拆分銷售額。當然,我穿越員工維度與鋪尺寸:

SELECT { [SalesAmount], [Days] } on 0, 
    { [Shop].[Shop].[Shop].members * 
     [Employee].[Employee].[Employee].members } on 1 
FROM 
    [MyCube] 
WHERE 
    ([Shop].[Country].[USA], [Calendar].[Month].&[201406]) 

有兩個問題與此:首先,業績跨越這兩個(潛在的)大尺寸時,遭受了很多。其次,我獲得了大量銷售額= NULL的記錄,這些記錄對於所有與美國商店無關的員工都是如此。如果我刪除[天]度量,我會得到預期的結果,但我需要日平均值等的度量值。

我正在尋找替代方法來建模我的多維數據集,以避免此問題。也就是說,當我通過Shop-dimension過濾我的事實表時,我只希望顯示Employee-dimension中的相關記錄(因此,由於Employee和Shop維度通過事實表相關,所以此帖的標題)。

我已經考慮將商店和員工維度結合到一個「組織」維度中,但這會產生多個問題:首先,員工可能在多個商店中工作,並且隨着時間的推移,分支機構可能會發生變化。

注:我沒有在尋找替代MDX解決方案,因爲我的最終用戶使用各種前端工具,他們無法控制生成的MDX。正如我所見,問題應該在多維建模中解決,而不是在前端。建模技術和參考文獻將非常感激。

回答

0

如果您可以在店鋪內有員工,避免穿越2個獨立維度。這將改善我相信的表現。

0

我不確定您的解決方案是否屬於這種情況,但在我使用諸如Days度量之類的度量的情況下,需要計算幾個計算度量值,但對於最終沒有必要用戶可以看到Days度量標準。因此,只是使措施不可見可以解決您的問題:

由於用戶無法在普通客戶端工具中選擇度量,查詢將不包含您的factSales表中沒有共同記錄的員工和商店組合的記錄。如果客戶端工具在行上使用NON EMPTY,至少這是事實,默認情況下大多數工具都使用該工具。由於結果集小得多,它也應該更快地到達客戶端工具,從而大概解決了性能問題。

在沒有數據時,您應該注意計算度量的表達式,以保持結果爲NULL。如何做到這一點將取決於你定義的措施。

而且您應該知道,只要用戶能夠手動輸入MDX表達式,他們即使看不見,也能夠使用該測量。多維數據集中有一個不可見的度量,可用於MDX查詢。它只是未列在許多客戶端工具顯示的度量列表中。但是,如果用戶故意使用Days度量,因爲他們知道它在那裏,並且他們知道度量的名稱並因此可以將其輸入到MDX表達式中,他們應該意識到他們需要以避免你有問題。無論如何,這些用戶將是「高級用戶」。