2012-11-01 8 views
8

私はSQL 2008/SSISで最初のデータウェアハウスを構築しています。ファクトテーブルのロードに関するベストプラクティスを探しています。SQL/SSIS DataWareHouseファクトテーブルのロード、ベストプラクティス?

現在、私のDWには、タイプ1のSCDである約20次元(オフィス、従業員、製品、顧客など)があります。

  • ないヌル(ステージング中にテキストまたは数値のための0のために空白に置き換え)
  • 未知の主要メンバーは、各次元に移入(SK ID 0:私のDW構造では、私はすでに適用されているいくつかあります)段階から生産テーブルへのSCDタイプ1ローディング用
  • UPSERT
  • 私のファクトローディングSSISプロジェクトで

、Iはローディング寸法を持っている現在の方法は、ある大きさの私のローディングのためにDISTINCT SELECT各DIMに複数のルックアップ(20+)を行い、FACT表にデータを移入します。私は設定私の検索の場合

:ように、各SKについて:

  • キャッシュフル
  • は "surrogate_idkey?ISNULL(surrogate_idkey)0" と変換の派生 "一致するエントリ"
  • のための障害を無視します検索が失敗した場合、SK ID 0(未知のメンバー)にデフォルト設定されます。
  • 私次元ルックアップの一部は、複数のビジネスキー

は、これが最善のアプローチですか?上記の私の説明に役立つ添付写真。

enter image description here enter image description here enter image description here

答えて

5

正常に見えます。パフォーマンスの問題にぶつかり始める場合はオプションがありますが、安定している場合(データロード時間内に終了し、ソースシステムのリソースがなくなっていないなど)、変更する必要はありません。

に目を維持するためにいくつかの潜在的な問題が...

  1. は、あなたの次元のサイズが増加した場合、フル・キャッシュ・ルックアップ変換が原因SSISのメモリの制約に...問題を引き起こすことがあり20+ましたシステム...しかし、タイプ1なので、私は心配しません。 (あなたは上記の持っているものに)共通の代替からファクトテーブルのデータを抽出することで、フルキャッシュ検索「水和物」は、実行前...それらの20+を有する

をあなたが遅くなる場合があり

  • 単一のSQL文を使用してディメンション・キー・ルックアップを実行する前に、ステージング領域に配置してください。あるものは、この目的のためにステージング領域にディメンションキーマッピングテーブルのセットを保持しています。これにより、ソースシステムでのロック/ブロックが減少します。データが大量に読み込まれ、データを吸い取っている間にソースシステムをブロックし、20回以上のルックアップ変換を実行する必要がある場合は、ブロックします。

    大量のデータ、大規模なディメンション、複雑なキーマッピング(通常は複数のソースシステムのため)、短いデータロードタイムウィンドウがある場合は、ステージング領域の戦略が優れている方が重要になります。

  • +0

    ありがとうBanton、現在、私たちは約200列を含む4mのレコードをロードしています。毎日約2k行の新しいレコードがあります。ローディングステージはかなり速いです。フィードバックをお寄せいただきありがとうございます。 – exxoid

    +0

    [専用BIサイトのイニシアチブをフォローし、使用し、共有してください。](http://area51.stackexchange.com/proposals/70503/business-intelligence?referrer=EPHSm8-3avvaMxLjdRIeNg2)。私は最初、この質問を[BIサイトの提案がなかったときのメタ]で出しました。(http://meta.stackexchange.com/q/232414/201662) – bonCodigo

    関連する問題