ファクトテーブルとディメンションテーブルの設計
メニューを表示するにはスワイプしてください
ほとんどのExcelワークブックは、すべての情報を1つの広いシートに保存しています。顧客名、商品カテゴリ、地域、取引合計などが同じ行に並び、何千回も繰り返されています。これは小規模な問題には対応できますが、データが増えたり、名前が変更されたり、他のデータソースと組み合わせたい場合にはうまく機能しません。
リレーショナルモデルは、データを主題ごとに分割したテーブルに分けることでこの問題を解決します。この分割の背後にある重要な概念が、ファクトテーブルとディメンションテーブルの区別です。
動画で使用されているワークブックは、課題で使用するワークブックとは異なります。 レッスン中に講師と一緒に手順を追いたい場合は、開始前に動画の下にある動画用ワークブックをダウンロードしてください。
ファクトテーブル
ファクトテーブルは、イベントや取引(発生した事象)を記録するテーブル。
特徴:
- 多数の行:各イベントごとに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 ファクトテーブルのグレインを最もよく表している記述はどれですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください