緩やかに変化するディメンション(SCD):ノーコードでの実装アプローチ



緩やかに変化するディメンション(SCD:Slowly Changing Dimensions)は、データウェアハウスにおいてディメンションデータの変更を時間経過とともに管理・追跡するための重要な手法です。SCD には主に8つのタイプがあり、それぞれ異なる方法で変更を処理します。

  1. SCD タイプ 0(固定):変更は許可されません。データは初回ロード時のまま維持されます。
  2. SCD タイプ 1(上書き):変更時に既存データを上書きし、履歴は保持されません。
  3. SCD タイプ 2(新規行追加):データの新しいバージョンとして新規行を追加し、変更履歴を保持します。
  4. SCD タイプ 3(新規属性追加):以前の値を格納する新しいカラムを追加し、限定的な履歴追跡を可能にします。
  5. SCD タイプ 4(履歴テーブル追加):変更を追跡するための別の履歴テーブルを作成します。
  6. SCD タイプ 5(ミニディメンションとタイプ 1 アウトリガー):ミニディメンションとタイプ 1 属性を組み合わせて、現在の値を追跡します。
  7. SCD タイプ 6(ハイブリッド):SCD タイプ 1、2、3 を組み合わせて、変更追跡への包括的なアプローチを提供します。
  8. SCD タイプ 7(ハイブリッド):タイプ 6 と似ていますが、より複雑なシナリオに対応する追加機能を備えています。

ノーコードのデータインフラツールである CData Sync を使えば、これらの SCD モデルを簡単に実装できます。この記事では、最も一般的なタイプ 1 から 3 を紹介し、CData Sync でコードを書くことなくこれらの SCD タイプを設定・自動管理する方法を解説します。技術レベルを問わず、どなたでもご活用いただけます。

緩やかに変化するディメンション(SCD)とは

SCD は、データ分析基盤の中核であるデータウェアハウス内のデータ変更を分類・管理するためのデータモデリング手法です。分析の重要な軸となるマスターデータの属性における履歴変更を、どのように追跡・保存するかに焦点を当てています。

SCD にはタイプ 0 からタイプ 7 まで8つのタイプがあります。ただし、先述のとおり、この記事では最も一般的な タイプ 1、2、3 の3つを紹介します。

例を使って SCD タイプ 1 から 3 を理解する

顧客の請求先住所の変更を例に、これらのタイプを見ていきましょう。モデルを簡略化するため、サロゲートキーは省略し、都市名のみに焦点を当てます。

CData Solutions という企業が、当初 イリノイ州シカゴ に拠点を置いていましたが、ニューヨーク州ニューヨーク市 に移転したとします。その結果、2022年12月3日 に請求先住所が ニューヨーク市 に更新されました。

この例を通じて、各 SCD タイプがマスターデータ属性の変更をどのように処理するかを説明していきます。

SCD タイプ 1:上書き(最新の値のみを保存)

SCD タイプ 1 は、データ変更を処理する最もシンプルなアプローチです。古い値を新しい値で上書きするため、以前の住所は完全に失われます。

更新前(旧住所 - イリノイ州シカゴ)

IdNameBillingCityLastModifiedDate
101CData SolutionsChicago, IL2021-08-15

更新後(新住所 - ニューヨーク州ニューヨーク市)

IdNameBillingCityLastModifiedDate
101CData SolutionsNew York City, NY2022-12-03

この場合、移転後の請求先住所 (BillingCity)ニューヨーク州ニューヨーク市 として保存されます。

そのため、分析の軸となるマスターデータに過去の住所が保持されないため、請求書などのトランザクションデータに以前の住所 (イリノイ州シカゴ) が保存されていない場合、過去の特定時点におけるその住所に関連するデータの取得や分析ができなくなります。ただし、トランザクションデータ(請求書など)には発行時の請求先住所が記録されることが一般的であり、財務分析や業務分析において過去の所在地を参照できます。

SCD タイプ 2:新規レコード追加(完全な履歴を追跡)

SCD タイプ 2 は、履歴追跡が必要な場合に使用します。古い値を上書きする代わりに、以前の住所を保持しつつ、更新された住所の新規レコードを挿入します。

このアプローチにより、住所の変更を時系列で追跡できます。

更新前

IdNameBillingCityStartDateEndDateIsCurrent
101CData SolutionsChicago, IL2021-08-15NULLYes

更新後

IdNameBillingCityStartDateEndDateIsCurrent
101CData SolutionsChicago, IL2021-08-152022-12-02No
101CData SolutionsNew York City, NY2022-12-03NULLYes

以下の例では、CData Solutions の請求先住所は当初 イリノイ州シカゴ でしたが、2022年12月3日ニューヨーク州ニューヨーク市 に移転した後、旧住所を保持したまま新しいレコードが追加されました。これにより、顧客データの履歴変更を追跡できます。データウェアハウスにデータを供給するほとんどのビジネスシステムは OLTP ベースであり、通常は最新のデータのみを保持するため、SCD タイプ 2 アプローチにより履歴レコードが保持されます。これはデータウェアハウスの重要な目的の一つです。

StartDate(レコード作成日)、EndDate(新しいレコードが作成された日)、IsCurrent(そのレコードが最新かどうかを示す)といったフィールドを維持することで、任意の時点における顧客データの履歴スナップショットを取得できます。これにより、特定の日付における顧客の横断的なデータセットの取得や、最新のレコードのみを表示するフィルタリングなど、さまざまな分析ユースケースが可能になります。

SCD タイプ 3:新規フィールド追加(限定的な履歴を保存)

SCD タイプ 3 は、以前の値と現在の値を同じレコード内で追跡するための追加カラムを設けることで、限定的な履歴を保存します。無制限の履歴を維持する SCD タイプ 2 とは異なり、SCD タイプ 3 は直近の変更のみを保持する設計です。

更新前

IdNameCurrentBillingCityPreviousBillingCityLastModifiedDate
101CData SolutionsChicago, ILNULL2021-08-15

更新後

IdNameCurrentBillingCityPreviousBillingCityLastModifiedDate
101CData SolutionsNew York City, NYChicago, IL2022-12-03

この方式では、旧住所 (イリノイ州シカゴ) を持つ元のレコードが、変更が発生した日を示す EndDate とともにデータベースに残り、一方で更新された住所 (ニューヨーク州ニューヨーク市) を持つ新規レコードが新しい StartDate とともに作成されます。

これにより、変更の明確なタイムラインを維持しながら、過去と現在の住所を追跡できます。変更のたびに新しいエントリが作成されるため、複数の履歴的な住所変更を保存でき、顧客の所在地が時間とともにどのように変化するかを分析できます。ただし、このアプローチではより多くのストレージ容量と、同一エンティティの複数レコードを管理するための追加処理が必要になります。

CData Sync を使った SCD の実装

CData Sync は、データウェアハウスにデータをロード(ELT)、その後ウェアハウス内で変換することで、データ分析インフラを構築できます。このアプローチにより、最新のデータプラットフォームの機能を活用しながら、効率的なデータ処理と保存を実現します。

CData Sync における SCD

SCD を使用したデータモデリングは、通常 データ変換の段階で行われます。CData Sync には dbt と呼ばれる統合データ変換機能が備わっており、ELT プロセスにおける T(Transform:変換) コンポーネントとして機能します。これにより、データウェアハウス内に最新のデータモデリング環境を構築できます。

CData Sync 新機能 – dbt Core 統合

dbt には Snapshots という機能があり、データの変更を時系列で追跡することで SCD タイプ 2 を実装できます。組織はこの機能を活用して、履歴レコードを効率的に維持できます。

ETL と ELT:従来型と最新のアプローチ

ELT に加えて、CData Sync は従来の ETL(Extract, Transform, Load)方式もサポートしています。ETL では、データをデータウェアハウスにロードする前に変換を行います。ETL アプローチにより、CData Sync では SCD タイプ 1 とタイプ 2 をコードを書かずに実装できます。

SCD タイプ 1:データの上書き(CData Sync のデフォルト動作)

デフォルトでは、CData Sync は SCD タイプ 1 アプローチに従い、ソースシステムからの最新の値のみがデータウェアハウスに保存されます。

データ更新を最適化するため、CData Sync には主要なリレーショナルデータベース(RDBMS)向けに Change Data Capture(CDC) を使用する高度な差分更新メカニズムが含まれています。これにより、変更されたレコードのみが同期され、効率が向上し処理時間が短縮されます。増分更新をサポートしない SaaS アプリケーションについても、CData Sync はデータを最新の状態に保つための代替方法を提供します。

SCD タイプ 2:CData Sync による履歴データの維持

CData Sync V22 の主要な機能強化として History Mode があり、SCD タイプ 2 を実装して履歴データの変更を保持できます。この機能により、組織は時間経過に伴う変更を追跡し、データ更新の完全な履歴レコードを維持できます。

定期的なデータスナップショット(月次や四半期など)を必要とするビジネスでは、CData Sync で ジョブ変数を設定することで、履歴データの追跡を自動化できます。

SCD タイプ 3:ETL 方式では非対応

SCD タイプ 1 およびタイプ 2 とは異なり、SCD タイプ 3 は CData Sync の ETL 方式では直接実装できません。代わりに、まず SCD タイプ 2 を使用してデータをインポートし、その後 ELT アプローチを使用してデータウェアハウス内に別の変換テーブルを作成する必要があります。

まとめ

この記事では、ノーコードのデータインフラツールである CData Sync を使用して、さまざまなタイプの緩やかに変化するディメンション(SCD)を実装する方法を解説しました。CData Sync 内で最新のデータモデリングフレームワークである dbt を統合する方法と、Change Data Capture(CDC)、History Mode、ジョブ変数設定などの主要機能の活用方法について説明しました。これらの機能を活用することで、さまざまなユースケースや設計ポリシーに合わせて、柔軟かつスケーラブルな方法でデータ履歴を効率的に管理できます。

CData Sync は 30日間の無料トライアルを提供しており、その機能を実際に体験いただけます。今すぐエンタープライズデータをクラウドデータウェアハウスに統合しましょう!ご質問がございましたら、サポートチームがいつでもお答えいたします。