DataStageのDimensionステージをゆっくり変更する
Slowly Changing Dimension (SCD) ステージは、スター・スキーマ・データベースのコンテキスト内で機能する処理ステージです。 SCD ステージには、1 つの入力リンク、1 つの出力リンク、ディメンション参照リンク、更新リンクを設定できます。
SCD ステージは、入力リンクでソース・データを読み取り、参照リンクでディメンション表のルックアップを実行し、出力リンクでデータを書き込みます。 出力リンクはデータを別の SCD ステージに渡すか、別のタイプの処理ステージに渡すか、またはファクト表に渡すことができます。 ディメンション更新リンクは、ディメンションへの変更を出力する独立した出力リンクです。 データベース内のディメンションの数やパフォーマンスの要件に応じて、これらのステップを単一ジョブ内で実行しても、一連のジョブに分けて実行してもかまいません。
SCDステージは、SCDタイプ1とSCDタイプ2の両方の処理をサポートする:
- SCDタイプ1
- ディメンジョン・テーブルの属性を上書きします。
- SCDタイプ2
- ディメンジョン・テーブルに行を追加します。
各SCDステージは、1つの次元を処理し、等号マッチング技法を使用してルックアップを実行する。 ディメンジョンがデータベース・テーブルの場合、ステージはデータベースを読み取り、メモリ内にルックアップ・テーブルを構築します。 一致した場合、SCD ステージはディメンジョン・テーブルの行を更新し、変更されたデータを反映します。 一致する行が見つからない場合、ステージはディメンジョン・テーブルに新しい行を作成します。 新しいディメンジョン行の作成に必要な列は、すべてソース・データに存在する必要があります。
SCDステージへの入力データは、イベントが発生した順番を正確に表していなければならない。 入力データをシーケンス番号や日付フィールドでプリソートする必要があるかもしれない。 ジョブに複数のSCDステージがある場合、各ステージで入力データのソート順が正しいことを確認する必要があります。
SCDステージが並列で実行される場合、入力データはキーごとにハッシュ分割されなければならない。 ハッシュ・パーティショニングは、同じビジネス・キーを持つすべてのレコードを同じプロセスで処理することを可能にする。 SCDステージでは、プロセスごとに個別のルックアップテーブルを構築することで、ディメンジョン・テーブルをプロセス間で分割する。