2016-05-07 8 views
0

私はolapルックアップのファクトテーブルを設計中です。現在、ユーザーがカスタムディメンションやスライスなどのolapクエリを実行することはできません。特定のレポートを実行するために、自分でクエリを作成します。OLAPファクトテーブルの空レコード

私の質問は、これらのレポートのファクト表です。私は既存のレコードの更新を避け、複数の次元の行を挿入するだけです。

2つの挿入:たとえば

YEAR AMOUNT 
2016 1 
2016 1 

代わりの1のインサート、年= 2016が存在するかどうかを確認し、その後1更新もしそうなら:

以下のように
YEAR AMOUNT 
2016 2 

答えて

0

ご覧ください。

https://dba.stackexchange.com/questions/138409/fact-table-with-blank-dimensions/138515#138515

を私が直面した問題は、一つのテーブルにすべての事実を置くしようとしていました。ベストプラクティスは、事実を別のテーブルに分けて細分化し、事実に必要な最小限のカラムに制限することを学びました。

これはデータを挿入する余分な作業ですが、データベース作業の大部分を占める検索中に実際に支出します。

0

使っアップサートロジック:

ソース表とターゲット表のインナー結合を取り込み、一致したときにamountフィールドを更新します。他に、新しいレコードを挿入します。

insert into target (select * from source s, target t where s.year <> t.year); 

Update target T set T.amount = T.amount + S.amount 
from source S where T.year = S.year;