3

これはキーワードで検索するのが少し難しいので、この質問が存在する場合は申し訳ありません.

Startdate 列と Enddate 列でモデル化された、ゆっくりと変化する標準タイプ 2 のディメンションがあるとします。Enddate が NULL のレコードは、ディメンション レコードの現在のバージョンです。

ソース データから何がファクト テーブルに挿入されるかを検出するのは非常に簡単です。新しいファクト テーブル レコードは、ビジネス キーと Enddate = NULL のディメンション レコードの一致に基づいて、最新のディメンション レコードにマップされて挿入されます。

ソース システムのメジャーに更新があった場合にどうすればよいか、何がファクト テーブルの挿入ではなく更新になるかを理解するのに少し苦労しています。結合するビジネス キーしか持っていないようで、ファクト テーブル内の既存のレコードは、以前のバージョンのディメンション レコードを指している可能性があります。ディメンションから正しい代理キーを取得して、ファクト テーブルを更新する方法がわかりません。

必要に応じて詳細を提供できます。

前もって感謝します。

4

1 に答える 1

4

ソーステーブルに日付がありますかinsert? createそれを使用して行うことができます

select * from dim where src_dt 
between dim.startdate and dim.enddate and keys = src.keys 

正しいディメンション行を返します。SCD を使用している場合。

ルックアップを行うときは、日付と自然キーを使用して正しいディメンション行を取得し、挿入と更新の両方で最新の薄暗い行を選択しないでください。

于 2013-02-05T02:19:39.217 に答える