4

通常のファクト テーブルとディメンション テーブルを含む SQL Server 2005 データマート スター スキーマがあります。これは、SSIS ベースの ETL パッケージを介してデプロイおよび設定されます。これまでのところすべて順調です。

顧客から新しい要件について連絡がありました。決して、あなたが言うのを聞きます!この要件は、データ マートに新しいディメンション テーブルを追加して、たまたま財務に関する事実の新しい側面を測定する必要があることを意味します。

この新しいディメンションによってファクトを「スライス」できるようにするには、新しいディメンションにリンクするファクト テーブルに新しい外部キー列を追加する必要があります。

これを行う最善の方法がわかりません。すでにキャプチャされたデータはどうすればよいですか? 新しい列を null 可能にして、古い事実が NULL になることを受け入れるだけですか? 実際、私が入力していると、古い事実も更新できることに気づきました。または、それぞれの新しい (親) ファクトへのリンクと新しいディメンションへのリンクを含む別の (子?) ファクト テーブルを作成する必要があるかもしれません。

この種の変更のベスト プラクティスに関する情報は見つかりませんでした。

どんな助けでも大歓迎です。

ところで。Analysis Services はまだ使用されていません。

ありがとう、マーティン

4

3 に答える 3

9
  1. 新しいディメンション テーブルを追加します。

  2. それを移入します。

  3. 既存のファクトに null 許容参照を追加します。

    すべてのファクトが新しい次元に結合できるわけではありません。これは、新しい情報がある場合によくあることです。元のファイルがすべて揃っている場合は、すべての事実を更新するために必要なすべての情報が揃っている可能性があります。

    すべてのファクトを新しいディメンションにマップできない場合は、「N/A」行をディメンションに追加します。事実について知っていることによっては、いくつかの N/A 行を表示する十分な理由がある場合があります。

  4. ファクトを更新して、すべてが新しいディメンション (適切なディメンション値または特別な N/A 行) を参照するようにします。

理想的には、ファクト テーブルを変更して、列を null 非許容にします。これには非常に長い時間がかかる場合があり、データのエクスポート、テーブルの再定義、およびデータの再ロードが簡単になります。

于 2009-12-09T15:42:49.373 に答える
2

S.Lot はそのほとんどに答えましたが、古い事実をどうするかはビジネス上の決定であることを付け加えておきます。必ず彼らに尋ねて、書面で入手してください。

于 2009-12-10T13:07:28.430 に答える
1

S.Lott は素晴らしい答えを持っています。それを「子」ファクト テーブルの提案と組み合わせると、新しいディメンションと他のすべての同じディメンションを持つ「ブリッジ テーブル」として別のファクト テーブルを作成できますが、考えてみてください。 - その問題が発生する場合は、新しいファクト テーブルのデザインを古いものと同じにすることができますが、null 非許容新しい次元 (ブリッジ テーブルの唯一の費用は、とにかく事実のスペースです)。S.Lott が提案したように、有効なディメンションまたは履歴の N/A ディメンションにリンクして、履歴を新しいテーブルに適切に入力します。次に、新しいデータの入力を開始します。戻って null 許容を null 非許容に変更する必要はありません。次に、古いファクト テーブルを非推奨にするか、プレゼンテーション レイヤー ビューを交換することができます (それらがある場合、これにより、ファクトとディメンションの下で多くの自由が得られます)。

于 2009-12-10T20:22:13.987 に答える