Ssas

SSAS 如何計算標準差

  • January 14, 2020

我正在嘗試跨標準偏差和平均值等一系列數據計算各種統計計算。

數據來自許多不同的“數據源”。這些都保存在一個維度中。

我嘗試使用此範例STDDEVP中所示的函式,該函式對度量進行操作。

但結果是錯誤的。我認為這是錯誤的,因為它處理的是總數而不是原始數據。

$$ Sum of Values $$是對事實表中的數據求和的標準聚合度量。 按照格雷格提供的連結,我現在正在使用這個:

CREATE MEMBER CURRENTCUBE.[Measures].[Standard Deviation]
AS  (([Measures].[Sum of Values]^2 - (([Measures].[Sum of Values]^2)/[Measures].[Count of Values])/[Measures].[Count of Values])^0.5),
FORMAT_STRING = "#,##0.00;-#,##0.00", VISIBLE = 1 ,  ASSOCIATED_MEASURE_GROUP = 'Fact TS Data'; 

這給了我這個:

在此處輸入圖像描述

這仍然是不正確的。

使用 SQL 如果我使用STDDEV以下查詢計算 Air Temp:

 SELECT stdevp([Value])
 FROM [EnvironmentalDataMart].[DDS_HILLTOP].[factTimeSeries]
 where [DETL_DataSourceSurrogateKey] = 78

我得到:6.13770334742149

如何讓 MDX 查詢計算STDDEV我的維度中的每個數據源?

我也嘗試過使用“無聚合”的 Measure,但它沒有返回任何內容。

根據您傳入的第一個參數,StDev 函式確實以匯總粒度執行。如果您總是想在最低級別計算 StDev,那麼您可以編寫一些數學上等效的度量並避免使用 StDev MDX 函式。此處描述了此方法。讓我知道這是否沒有意義。MDX 將是:

(([Measures].[Sum of Square] - (([Measures].[Sum of Values]^2)/[Measures].[Count of Values]))/[Measures].[Count of Values])^0.5

有關他採取的步驟的完整解釋,請參閱彼得的回答

此外,如果您堅持使用目前使用的 MDX 方法,您將需要按如下方式修復第一個參數。您的程式碼將總計計入計算中。此 MDX 不會:

STDDEVP( {[Data Source].[Data Source Name].[Data Source Name].MEMBERS},[Measures].[Total])

引用自:https://dba.stackexchange.com/questions/153960