データウェアハウスのゆっくりと段階的な変更のディメンションテーブルの設計
ゆっくりと変化する寸法:
ディメンションデータは時間とともに変化し、変化の速度は比較的遅くなります。この種のディメンションデータは、通常、緩やかに漸進的なディメンションと呼ばれます。データウェアハウスは、履歴の変更、特に一部の重要なデータを追跡する必要があるため、履歴の状態も特定の方法を採用する必要があります。保存します。
次の実装のアイデアに大別されます
1)完全なスナップショット:
現在のデータのスナップショットデータの全量を毎日保存するこのソリューションは、履歴状態を保存する簡単な方法を使用して、小さなデータボリュームのディメンションに適しています。
2)履歴ステータスを保存するための追加のデータ列
1つ以上のステータス値を保持するための追加(1列/複数列)。
Id |
名前 |
部署 |
最終部 |
… |
1 |
ジャンタイ |
DEP1 |
Dep3 |
|
3)ジッパー時計技術
ディメンションデータが変更されると、古いデータは無効になり、変更されたデータは新しいレコードとしてディメンションテーブルに挿入されて有効になります。これにより、データ変更の履歴を特定の粒度で記録できます。
前述の代理キーと組み合わせると、Uid_orgは元のビジネスの主キーであり、Uid_agencyは代理キーです
Uid_agency |
Uid_org |
名前 |
部署 |
開始日 |
終了日 |
1 |
1 |
ジャンタイ |
DEP1 |
20180501 |
20180509 |
2 |
1 |
ジャンタイ |
Dep2 |
20180510 |
20991231 |
質問1:ジッパーテーブルから特定の日のデータステータスを取得する方法
SELECT *
FROM lalian_table
WHERE start_date <= ‘${bizdate}’ AND end_date >= ‘${bizdate}’
Ext:ゆっくりと段階的に変更
代理キーは、ディメンションモデリングで強く推奨される方法です。そのアプリケーションは、ソースの変更によって引き起こされるデータウェアハウス構造の不安定な問題を効果的に特定し、データ取得のパフォーマンスを向上させることもできます。
ただし、ご覧のとおり、サロゲートキーのメンテナンスコストは非常に高く、特にファクトテーブルへの影響が大きいデータのロードプロセスでは高くなります。HIVEベースのデータウェアハウスの構築における影響は、さらに深刻です。たとえば、代理キーの生成、ファクトテーブル内の関連付けられたキーのステータス、非等価関連付けはサポートされていないため、ETLプロセスがより複雑になります。
したがって、ビッグデータシステムでは、代理キーを慎重に使用してください。同時に、緩やかに段階的なディメンションシーンの場合は、時間にスペースを使用することを検討し、ディメンションテーブルの完全なスナップショットを毎日保持できます。しかし、これは実際の状況に応じて測定されたストレージコストをもたらします。