web-dev-qa-db-ja.com

SSAS標準偏差の計算方法

標準偏差や平均など、さまざまなデータにわたるさまざまな統計計算を計算しようとしています。

データは、さまざまな「データソース」から取得されます。これらはディメンションに保持されます。

メジャーを操作する この例 に示すように、STDDEVP関数を使用してみました。

しかし、結果は間違っていました。私はそれが生データではなく合計に取り組んでいるので間違っていると思います。 [値の合計]は、ファクトテーブルのデータを合計する標準の集計メジャーです。

グレッグによって提供されたリンクをたどって、私は今これを使っています:

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'; 

これは私にこれを与えます:

enter image description here

これはまだ正しくありません。

SQLの使用次のクエリでAir TempのSTDDEVを計算する場合:

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

私は:6.13770334742149

ディメンションのデータソースごとにSTDDEVを計算するMDXクエリを取得するにはどうすればよいですか?

「集計なし」のメジャーを使用してみましたが、何も返されませんでした。

2

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])
3
GregGalloway

これを機能させるには、次のものが必要です。

  1. DMVに列を追加して、生の値の2乗を生成します。

    SELECT [Value], square([Value]) as ValueSquared
    FROM factTable 
    
  2. 生の値を合計するメジャー。 [Sum of Values]

  3. 生の値の2乗を合計するメジャー。 [Sum of Square]

  4. カウントメジャー[Count of Values]

  5. 計算メジャーの構文は次のとおりです。

    CREATE MEMBER CURRENTCUBE.[Measures].[Standard Deviation]
    AS (([Measures].[Sum of Square] - (([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';
    
3

Rawデータ(つまり、SQLテーブル全体)で使用する場合は、SQLレベルで実行する必要があります。そのために集計する必要はありません。したがって、コード1の標準偏差が機能するので、次のことをお勧めします。DMVで、標準偏差に対して計算された列を追加します 列全体 [データソース名]。

1
Hila DG