0

DWH システムに SCD type2 履歴ディメンション テーブル (または、SCD type2 属性を持つテーブルと言うべきか) を実装したいとします。これは、今のところnatural key+ primary surrogate key+ datefrom+ dateto+iscurrent列を追加した「通常のテーブル」として実装しています。

どこ

  • これprimary surrogate keyは、すべてのファクト テーブルで外部キーとして使用するために必要です。
  • datefrom+ dateto+iscurrent列は履歴を追跡するために必要です。

ここで、ファクト ディメンション DWH 設計でシステム バージョン管理されたテンポラル テーブルを使用したいと考えていますが、MSDNは次のように述べています。

現在のテーブルと履歴テーブルの間でレコードを関連付けるためには、テンポラル テーブルに主キーを定義する必要があります。履歴テーブルに主キーを定義することはできません

したがって、「オンザフライ」または別のETLプロセスを生成するビューを使用する必要があるように見えますがprimary surrogate key、両方のアイデアが好きではありません...

たぶん別の方法がありますか?

4

1 に答える 1

1

データ ウェアハウスの永続的なステージング領域でテンポラル テーブルを使用します。その後、ソース システムから変更を適用するだけで、過去のバージョンが失われることはありません。

次に、クエリを実行するとき、またはディメンション データマートを構築するときに、ファクトをディメンションの現在または履歴バージョンに結合できます。これを行うために代理キーは必要ありませんが、ディメンション モデルのクエリを簡素化および最適化するために代理キーを作成できることに注意してください。次のような式で代理キーを生成できます

 ROW_NUMBER () OVER (ORDER BY EmployeeID, ValidTo) AS EmployeeKey

そして、通常どおりファクト テーブルをロードするときに、ディメンション テーブルを結合します。

しかし興味深いのは、これにより次元モデリングが延期され、本当に必要になるまで SCD タイプの選択が延期される可能性があることです。また、データ マートの設計と実装を減らして延期することで、漸進的な進歩をより迅速に実現できます。データマートの設計思考が進化している間、永続的なステージング エリア (または、その用語を好む場合は「データ レイク」) のビューを使用して、レポートの初期セットを自信を持って配信できます。

于 2018-05-09T13:14:31.763 に答える