2016-06-08 196 views
0

我正在構建一個小立方體,並且在創建計算時遇到問題。SSAS標準差計算

Cube View

總之,我想基於插件的一些值。 作爲一個例子,我想要執行時間的標準偏差。

事情是這樣的:

SELECT Plugin.PluginId, AVG(Task.ExecutionTimeMs) AS Mean 
, STDEVP(Task.ExecutionTimeMs) AS [Standard Deviation] 
, STDEVP(Task.ExecutionTimeMs) * STDEVP(Task.ExecutionTimeMs) AS Variance 
FROM Task 

在我的分析項目我創建了下面的表達式計算的:

STDEVP([Finished Tasks], [Measures].[Execution Time Ms Sum]) 

,沒有工作。 我嘗試了一些其他功能(MAX,AVG),但沒有按預期工作,所以我顯然做錯了什麼。

創建此類措施的正確方法是什麼?

回答

0

假設你在談論SSAS Multidimensional,那麼StDevP MDX是一個相當昂貴的函數,因爲它必須在葉級別(事實錶行級別或您的案例中的任務級別)進行計算。如果你有超過幾千個任務,我會推薦一個性能優化並獲得正確數字的優化。

這個想法是從這個thread

  1. 負載以簡單的SUM測量(X) - 事實柱(在立方體聚集的)的總和
  2. 負載在x的簡單SUM度量的平方(X2) - 事實的平方的總和柱(聚集在立方體)中的計數器
  3. 負載稱爲CNT - 這一事實柱(在立方體聚集的)的計數

[該MDX計算隨後將被:]

((x2 - ((x^2)/ cnt))/ cnt)^ 0.5