2012-03-02 10 views
1

Kimballの方法論に基づいてデータウェアハウスを作成する初期段階です。ETL外部キーを追加する方法と方法T-SQL SSIS

現在、ソースデータを調査中です。私は主キー(自然キーではない)を追加することによって、これが事実と次元の間の接続を可能にすることを理解しています。

愚かな質問のように聞こえるが、これはどのように正確に行われるのだろうか?このプロセスを実行する良い記事はありますか?

最初にすべての次元を取り込むと思います。そしてファクト・データが引き渡されると、ファクト・テーブルに外部キーを「プッシュ」するルックアップが実行されますか?これはいつの時点で行われますか? SSIS内では「ベストプラクティス」の方法は何ですか?これはすべて1つのパッケージで実行されますか?

これはおおまかなことですか?

この場合、データをロードする順番に特に注意する必要がありますか、それとも対応する次元が存在しない事実を読み込むことができますか?

+0

これを助けることが、(同様の) http://stackoverflow.com/search?q=user%3A196713+loading+fact+table –

+0

おかげで、これはまさに正しい方向に私をプッシュしています –

答えて

2

まず、すべての次元を取り込むと思います。 ファクトデータが持ち越されると、 ファクトテーブルに外部キーが「プッシュ」されるルックアップが実行されますか?これはいつの時点で行われますか? SSIS "ベストプラクティス"メソッドは何ですか?これはすべて1つのパッケージで行われますか?例えば パッケージですか?

スキーマと表の設計によって異なります。


それはstar schemaをだと仮定すると、FKは、データ値自体に基づいています。

DIM1 <- FACT1 -> DIM2 
^ 
| 
FACT2 -> DIM3 

あなたが最初にあなたがFKを必要とするようFACT1に挿入する前に、DIM1とDIM2を埋めます。


それはsnowflake schemaだと仮定すると:あなたが最初FACT1に挿入する前に、その後DIM1とDIM2をDIM1_1を埋めるよ

DIM1_1 
^ 
| 
DIM1 <- FACT1 -> DIM2 


FKの関係ではなく、データ値自体(データおよび/またはディメンション値として文字列の膨大な量を扱うちょっと最適化)の何か他のもの(主に数)に基づいていると仮定すると、あなたは」勝ちましたDIMテーブルにデータを挿入するまで待つ必要があります。私はそれが非常に混乱していると確信しています:)ので、私は簡単に説明しようとします。

  1. あなたが処理しているデータセットから抽出FACTおよびDIMENSION値:必要な手順は、(2つのテーブル、FACT1とDIMENSION1を持つ単純なスタースキーマを想定)のようなものになるだろう。
  2. 再現可能なアルゴリズムを使用してDIMENSIONの値(文字列)に基づいて一意の番号を生成します(SHA1など、同じ文字列の場合は常に同じ番号が与えられます)。
  3. 数値とFACT値をFACT1テーブルに挿入します。
  4. DIMENSION1テーブルに、数値とDIMENSION値を挿入します。

ステップ3 & 4を並列に行うことができます。には、制約がない限りです。数値列の結合は、文字列の1つよりも効率的です。

#2のマッピングは再現性があるため保存する必要はありません(正しいアルゴを選んでください)。 明らかに、これはスノーフレークスキーマおよび/または複数の次元のために拡張することができます。

HTH

関連する問題