Fundamentals of Data Engineering | 8.Data Modeling | Techniques for Modeling Batch Analytical Dataの要約

要約範囲

Chapter8
Techniques for Modeling Batch Analytical Data
– 冒頭
– Inmon
– Kimball
– Fact tables, Dimension tables
(Star schema の手前まで)

冒頭

raw dataは構造化、半構造化などの様々な形式のデータであるが、出力時は行と列の構造化データモデルが想定されます
この時に有効なKimball、Inmon、およびData Vaultの3つの主要なデータモデリングアプローチを紹介しています
実際には、これらのテクニックのいくつかを組み合わせることができる
例えば、一部のデータチームはData Vaultで始めてから、その隣にKimballのスタースキーマを追加するなど、技術を組み合わせることがあります
eコマースの注文システムで発生するトランザクションをモデリングする例を使用して説明されています

注釈

ここで取り上げたInmon, Kimball, and Data Vaultについてはざっくりとした概要なので、詳細は各著者の書籍を読むことをお勧め
データモデリングがバッチ分析データの中心である理由と方法を理解するためだけでも、これらの書籍を読むことは有効

Inmonのアプローチ

ビル・インモンが1989年に提唱したアプローチは、「データウェアハウスを使ってソースシステムと分析システムを分離する」

4つの重要な要素
  • サブジェクト指向(Subject-oriented)
    データウェアハウスは、営業やマーケティングなど、特定の分野に焦点を当てる
    (アプリケーションごとではなく、分野ごとに分ける)
  • 統合(Integrated)
    異種ソースからのデータを統合し、正規化する
  • 不揮発性(Nonvolatile)
    データがデータウェアハウスに保存された後も、データは変更されない
    (Time-variantを実現させるための要素)
  • 時間可変(Time-variant)
    さまざまな時間範囲を照会できます
    (理論的には)保存履歴が許す限り、元のデータを照会することができる状態

統合について

データウェアハウスのあらゆる側面の中で、「統合」は一番重要

ETLに徹底的に重点を置き、きめ細かく、高度に正規化されたERモデルで、組織全体からデータが統合される
厳密な正規化要件により、データの重複が可能な限り少なくなり、データが発散したり冗長性に悩まされたりすることがなくなるため、下流での分析エラーが少なくなる

データウェアハウスは企業全体の情報要件をサポートする「single source of truth (信頼できる唯一の情報源)」となります

… おそらくこんな意味?

Inmonが目指すのは「single source of truth」の状態

–> どんな状態か?

企業のデータが一箇所でみれる(=single source) x ETLと厳密な正規化でデータの整合性が高い(=truth)

Inmon データウェアハウスが e コマースでどう使用されるか

  • ビジネス・ソース・システムは受注、在庫、マーケティング
  • データウェアハウスに ETL され、3NF に格納される
    • 理想的には、データウェアハウスはビジネスの情報を全体的に包含する
  • 部門固有の情報要求に対してData martsを使ってデータを提供
    • このデータマートの部分にスタースキーマを適用することもオプションとしてある
      簡単にアクセスできるデータモデルであればOK

Inmonはたくさん本を書いてるから読んでみてね!

Kimballのアプローチ

Inmonとは対照的に、ラルフ・キンボールのアプローチはボトムアップであり、データウェアハウス自体で部門またはビジネスの分析に焦点を当ている

データウェアハウス自体で部門やビジネスの分析をモデル化し、提供することを推奨
正規化をあまり重視せず、場合によっては非正規化もOK
メリットは「高速な反復(?)とモデリングが可能」、デメリットは「データの冗長性、重複が発生する可能性がある」

参考: https://www.researchgate.net/figure/Kimballs-data-warehouse-architecture-7_fig2_312486486

続いてはスタースキーマの紹介
Kimballのモデルでは、ファクトテーブル(数量データ)およびディメンションテーブル(質的データ)を使用したスタースキーマでモデル化される

Fact tablesの特徴

  • ファクトはイベントに関連するデータ
  • データの変更はされず、追加のみ発生するテーブル
  • カラム数は少ないけど、レコード数(イベントを表す行数)は多くなる
  • ファクト・テーブルは可能な限り小さい粒度にする必要がある
  • (?)ファクト・テーブル内でのデータの集約や導出は避けてください
    • 集計または派生を実行する必要がある場合は、downstreamのクエリ、データ・マート・テーブル、またはビューで提供する
  • ファクト・テーブルは他のファクト・テーブルを参照せず、ディメンジョンのみを参照する

fact tableの例

  • “顧客からの注文ごとに、日付ごとに売上総額を表示する”を表したテーブル
  • 最小の粒度にされたテーブル
  • データ型はすべて数値 (整数および浮動小数点)
  • CustomerKey 7 に同じ日の 2 つの注文がある(イベントごとにデータが登録される)

Dimension tablesの特徴

ファクトテーブルに格納されたイベントの参照データ、属性、および関係的なコンテキストを提供する
一般的には幅広く短い形状(おそらく、「カラム数が多く、行数は少ない」)
イベントの「何」「どこ」「いつ」などを表現できる
ディメンションは非正規化され、重複データが発生する可能性がある

date dimensionの例

Kimballデータモデルでは、通常、日付は日付ディメンションに格納され、これにより日付キー(DateKey)をファクトおよび日付ディメンションテーブルの間で参照できる

日付ディメンションテーブルを使用すると、「2022年第1四半期の総売上は何か?」や「火曜日と水曜日にどれだけの顧客が買い物をするか?」などの分析が簡単に行える

customer dimensionの例

姓名、郵便番号、およびいくつかの特殊な日付フィールドなど、顧客を表す複数のフィールドが 含まれている

EFF_Start_dateは有効開始日を表すカラム
EFF_EndDateが9999-01-01のデータは「顧客レコードがアクティブであり、変更されていない」ことを意味している
つまりあるユーザの最新レコードを取得する場合は、終了日が9999-01-01のデータを抽出すれば良い
(図8-11 Mattは2レコードあるがEFF_EndDate=9999-01-01のが最新)

遅延変更寸法(Slowly Changing Dimensions, SCD)

データの特性や属性が変更される際に、その変更をどのように扱うかを定義する手法の一つ

SCDの3つのType
  1. Type 1 (上書き)
    既存の寸法レコードを単純に上書きします
    変更の履歴は保持されない
  2. Type 2 (完全な履歴)
    変更が発生した場合に新しいレコードを作成する
    変更が発生すると、その変更が発生した特定のレコードは変更されたフラグが立てられ、新しいレコードが作成されます。これにより、変更の履歴が保持される
    過去の状態を追跡できるため、分析や報告で過去のデータを利用する際に有用
  3. Type 3 (カラム追加)
    新しいフィールドを作成し、そのフィールドに変更後の値を格納し、元のフィールドは変更前の値を保持する
    過去の状態を一部追跡できますが、過去と現在のデータが同じレコード内に存在するため、データが複雑化する可能性がある

Type 3 (カラム追加)の例

SCD のタイプのうち、タイプ 1 はほとんどのデータウェアハウスのデフォルトの動作であり、タイプ 2 は実際に最もよく使用される手法

英語に関して

1.(Inmonの箇所)The result is that data—once it resides in the data warehouse—has a single physical corporate image.

訳は「その結果、データはいったんデータウェアハウスに置かれると、単一の物理的な企業イメージを持つことになる」になりそうだけど、ここの「corporate image」とは?
企業の分析するための貴重なデータのまとまりを指してると思うけど「image」がしっくりこなかった

2. cursory, roughly, looselyの違いをChatGPTに聞いてみた

Q:英語の意味にかんする質問です
cursory, roughly, loosely は同じような意味を持ちますか?

— ここからChatGPTの回答 —
A:これらの単語は似ていますが、微妙な違いがあります。


“Cursory” は通り一遍で、急いで、注意深くないという意味です。何かを手短に見る、ざっと見るといった感じです。注意深く調査や検討をしないで行われることを指すことがあります。

“Roughly” は大まかに、おおよそという意味です。正確な数値や情報がない場合に、おおよその値や概要を示す際に使います。程度や数量が正確でないことを示す言葉です。

“Loosely” は緩く、ゆるくという意味です。物事が密接に結びついていない、厳密でない、または柔軟であることを指します。関連性があるが厳密でない状態を表現するのに使います。
簡潔に言えば、これらの単語はいずれも何かをあまり注意深く、正確には捉えていない状態を示すものですが、微妙に異なるニュアンスがあります。

3. single source of truth (信頼できる唯一の情報源)はSSOT としてよくビジネスで使われる言葉らしい

学んだ単語をザッと

alongside: 並行して
arsenal: 武器庫, 宝庫
you should have in your arsenal. : あなたの武器になるはずだ。
cursory : (説明・調査などが詳細でなく)大ざっぱな, (十分な注意を払わず)大急ぎで行う、いいかげんな、ぞんざいな
canonical: 規準的な、標準的な
bogging down: 完全に停止(ダウン)する、減速させる、または立ち往生させる
subject-oriented: 方向づけられた主題
integrated: 統合された
nonvolatile: 不揮発性の
time-variant: 時間(の経過)とともに変化する
adhere: 付着する、粘着する、接着する(ここでは「厳守する」みたいな意味)
salient: 目立った、顕著な、際立った
feed(過去形: fed): (データが)供給する、餌を与える
reside: 「住む」のフォーマルな表現、(データ)が保存される
with a relentless emphasis on ETL: ETLに徹底的に重点を置き…
relentless: ひどく厳格な,厳しい,過酷な,容赦のない
resembles: 似ている
diverge: 分岐する,分かれる · 逸脱する,違ってくる,ずれる
holistically: 全体的に、総体的に
holistically encompasses: 全体的に包含する
spectrums: 境界線、 (思想や活動などの)範囲、領域
skew: (動詞)歪める
derivations: 派生、(本源から)引き出すこと