Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ファクトテーブルとディメンションテーブルの設計 | データ準備
Excelデータモデリング

ファクトテーブルとディメンションテーブルの設計

メニューを表示するにはスワイプしてください

ほとんどのExcelワークブックは、すべての情報を1つの広いシートに保存しています。顧客名、商品カテゴリ、地域、取引合計などが同じ行に並び、何千回も繰り返されています。これは小規模な問題には対応できますが、データが増えたり、名前が変更されたり、他のデータソースと組み合わせたい場合にはうまく機能しません。

リレーショナルモデルは、データを主題ごとに分割したテーブルに分けることでこの問題を解決します。この分割の背後にある重要な概念が、ファクトテーブルとディメンションテーブルの区別です。

Note
注意

動画で使用されているワークブックは、課題で使用するワークブックとは異なります。 レッスン中に講師と一緒に手順を追いたい場合は、開始前に動画の下にある動画用ワークブックをダウンロードしてください。

ファクトテーブル

ファクトテーブルは、イベントや取引(発生した事象)を記録するテーブル。

特徴:

  • 多数の行:各イベントごとに1行(1注文、1支払い、1訪問など);
  • メジャー:集計したい数値項目 — Quantity、Total、Cost、Hours;
  • 外部キー:ディメンションテーブルを参照するID列 — CustomerID、ProductID、OrderDate;
  • 説明的なテキストは少ない:名前、ラベル、カテゴリはディメンションに含める。

ファクトテーブルの例:

  • 売上明細行;
  • 請求書支払い;
  • ウェブサイト訪問;
  • サポートチケット。

ディメンションテーブル

ディメンションテーブルは、ファクトに関与するエンティティ(誰、何、どこ、いつ)を記述するテーブル。

特徴:

  • ユニークなエンティティごとに1行:顧客ごと、商品ごと、日付ごとに1行;
  • 説明属性:名前、カテゴリ、地域、セグメントなど — 主にテキスト;
  • 主キー:ファクトテーブルが参照する一意のID列。

ディメンションテーブルの例:

  • Customers(CustomerID、CustomerName、Region、Segment);
  • Products(ProductID、ProductName、Category、UnitPrice);
  • Dates(Date、Year、Month、Quarter);
  • Employees(EmployeeID、Name、Department、Role)。

3つの質問による判断フレームワーク

フラットテーブル内の任意の列について、次の順で質問する:

Q1:この列は合計やカウントしたい数値か?—Quantity、Total、Cost → ファクトテーブルのメジャー;

Q2:この列は他の場所の説明と紐づくIDか?—CustomerID、ProductID、OrderDate → ファクトテーブルの外部キー;

Q3:この列は人物、商品、期間などの説明ラベルか?—CustomerName、Region、Category → ディメンションテーブルの属性

Q3に該当する場合は、さらに「何を説明しているか?」を確認。顧客に関する列はすべてCustomers、商品に関する列はProducts、日付に関する列はDatesに分類する。

1. Orders_Flatシートで、次のうちProductsディメンションに最も明確に属する列グループはどれか?

2. この章の Sales ファクトテーブルのグレインを最もよく表している記述はどれですか?

question mark

Orders_Flatシートで、次のうちProductsディメンションに最も明確に属する列グループはどれか?

正しい答えを選んでください

question mark

この章の Sales ファクトテーブルのグレインを最もよく表している記述はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  2
some-alt