2016-10-21 2 views
0

私のシナリオでは、ゆっくりと変化する寸法タイプ2を使用する方法を理解するのが困難です。 私は別のチュートリアルWebサイトを見てきましたが、それらは適合しません。ゆっくり変化する寸法タイプの理解2

私は含む従業員ディメンション表を持っている:

+-----+---------------+------------+------------+ 
| id | employee  | designation| Location | 
+-----+---------------+------------+------------+ 
| 1 | Ola   | CEO  | Newyork | 
| 2 | Ahmed   | DEVELOPER | California | 
| 3 | Ola   | Manager | California | 
+----------+----------+------------+------------+ 

私はアカウントファクトテーブルに

+-------+----------+ 
|emp_id | Amount | 
+-------+----------- 
| 1  | 2000000 | 
| 2  | 300000 | 
+----------+-------+ 

を持っている今、私たちは次元が同じオラの従業員にこのように新しいIDを変更し、していることを確認与えられている。 ファクトテーブルではどのように管理しますか?

  • オラの新しいIDはファクトテーブルに見つかりません。

  • したがって、新しい行を実際に追加した場合、Olaという新しいIDを使用して、同じ従業員であることを「主キー」と区別してリンクする方法を教えてください。

  • 私たちはこの従業員を新社員ではなく、実際に場所/指定が変更されているとはどのように区別しますか?私はそれを行うための多くの方法があると確信しています

+0

私は、これが非常に役に立った:SCD 2のデータモデルhttp://datawarehouse4u.info/SCD-Slowly-Changing-Dimensions.html特に部が記述されている。これは区別部分にも答えます。実際のテーブルでは、5月にオラがニューヨークにあったが、6月にはカリフォルニアに行きました。ユニークな従業員を記述するためにスノーフレークテーブルを追加する必要があるかもしれません。 – tobi6

答えて

2

は、ここに一つの方法です - 従業員のためのユニークなディメンション表の「employee_Key」を持っています。したがって、ディメンションテーブルは次のようになります。

id | emp_key | employee | designation| Location |Valid From| Valid To | 
-----|---------|------------|------------|------------|----------|----------| 
1 | EMP1 | Ola  | CEO  | Newyork |1/1/1900 |1/1/2016 | 
2 | EMP2 | Ahmed  | DEVELOPER | California |1/1/1900 |NULL  | 
3 | EMP1 | Ola  | Manager | California |1/2/2016 |NULL  | 

従業員の「新規」IDを引き続きロードすることができます。この場合、その従業員には2つの異なるキーセットがあります。

+-------+----------+ 
|emp_id | Amount | 
| 1  | 2000000 | 
| 2  | 300000 | 
| 3  | 100000 | 
+----------+-------+ 

あなたが最初から従業員のために(金額の合計を言う)ロールアップしたい場合は、emp_keyによってIDキーおよびグループを使用して事実とディメンションに参加します。 あなたは彼がマネージャーになったので、量を知りたいのであれば、

select emp_key, sum(amount) from employee dim, account fact where dim.ID = fact.ID group by emp_key. 

は、あなただけのIDフィールドにロールアップを行う必要があります。

select dim.ID, sum(amount) from employee dim, account fact where dim.ID = fact.ID group by dim.ID. 

又はこのよう -

select fact.ID, sum(amount) from account fact group by fact.ID. 
+0

ありがとうございます。そのような属性の変更に迷惑メールのディメンションを使用すると、あまりうまくいかないでしょうか?どんなアプローチをお勧めしますか? – Miru

関連する問題