標準偏差や平均など、さまざまなデータにわたるさまざまな統計計算を計算しようとしています。
データは、さまざまな「データソース」から取得されます。これらはディメンションに保持されます。
メジャーを操作する この例 に示すように、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';
これは私にこれを与えます:
これはまだ正しくありません。
SQLの使用次のクエリでAir TempのSTDDEV
を計算する場合:
SELECT stdevp([Value])
FROM [EnvironmentalDataMart].[DDS_HILLTOP].[factTimeSeries]
where [DETL_DataSourceSurrogateKey] = 78
私は:6.13770334742149
ディメンションのデータソースごとにSTDDEV
を計算するMDXクエリを取得するにはどうすればよいですか?
「集計なし」のメジャーを使用してみましたが、何も返されませんでした。
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])
これを機能させるには、次のものが必要です。
DMVに列を追加して、生の値の2乗を生成します。
SELECT [Value], square([Value]) as ValueSquared
FROM factTable
生の値を合計するメジャー。 [Sum of Values]
生の値の2乗を合計するメジャー。 [Sum of Square]
カウントメジャー[Count of Values]
計算メジャーの構文は次のとおりです。
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';
Rawデータ(つまり、SQLテーブル全体)で使用する場合は、SQLレベルで実行する必要があります。そのために集計する必要はありません。したがって、コード1の標準偏差が機能するので、次のことをお勧めします。DMVで、標準偏差に対して計算された列を追加します 列全体 [データソース名]。