異なるSCD2技術の意味論

美容とファッションのエキスパートが語る、異なるSCD2技術の魅力と意義

小さな違いが大きな影響を与える方法

Brad Starkeyさんによる写真、Unsplashで利用

最近、私は次元モデリングについて、特にデータウェアハウス/データレイク内で異なる種類の履歴をどのように表現するかについて考えています。多くの記事で、さまざまな言語やプラットフォームでSCD2テーブルを作成する方法が説明されています。しかし、私はより微妙であまり一般的に議論されないことに焦点を当てたいと思います:SCD2の意味論と、さまざまな設計の選択肢がユースケースに意味のある影響を与える方法です。

私がカバーしたい2つの主要なトピックは次のとおりです:

  1. ディメンションを行バージョンする際に選ぶ日付は非常に重要です。選択は恣意的ではなく、デザインでは最も一般的なユースケースを重視する必要があります。
  2. レコードの行バージョン方法によって、テーブルに対するアクセスパターンが決まります。ある程度は厳密にエルゴノミクスの問題ですが、データ品質の重要な側面だと私は主張します。ユーザーが適切な操作を簡単に行えるようにすることが、データモデラーの目標であるべきです。

参照日を選ぶ

SCD2テーブルを作成する一般的なパターンは、データ内のある日付またはタイムスタンプを使用することです。行が意味的に変更されたことを確認した後、列の直接比較またはハッシュ値の比較によって、既存のレコードを「廃止」し、新しいレコードを挿入する必要があります。

しかし、どの日付を使用するのでしょうか?さまざまなタイプのデータについては、次の3つの選択肢から選ぶことができます:

  • タイムスタンプの抽出
  • ソースシステムのタイムスタンプ
  • ビジネス(エンティティ/イベント)のタイムスタンプ

詳しく見ていきましょう。

タイムスタンプの抽出

この方法は、「データを取得したときの生データの姿」を重視しています。真実の情報源はデータウェアハウスとそれをロードするプロセスであり、データ自体の本質的な属性ではありません。

次の例を考えてみましょう:

このレコードから、次のようなSCD2レコードを生成します(可読性のために一部のメタデータフィールド(代理キー、ハッシュ、ディメンション挿入タイムスタンプなど)は省略しています):

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more