フラットデータのリファクタリングとリレーショナルテーブルへの変換
メニューを表示するにはスワイプしてください
幅広いフラットシートは、すべてのイベントに関するあらゆる情報を1つのテーブルにまとめたものです。顧客情報、製品情報、日付、取引金額などがすべて1か所に集約されています。読みやすい反面、リレーショナルデータモデルには対応できません。
繰り返しによる問題点:Acme Corpのすべての注文で顧客名、地域、セグメントが繰り返されます。これらの詳細が変更された場合、すべての行を個別に更新する必要があり、不整合やストレージの肥大化につながります。
動画で使用されているワークブックは、タスクで使用するワークブックとは異なります。 レッスン中に講師と一緒にステップごとに進めたい場合は、開始前に動画下部にある動画用ワークブックをダウンロードしてください。
ステップ 1 — 次元テーブルの特定と抽出
次元テーブルは、各イベントの「誰」「何」「いつ」を記述するテーブル。これらは境界が明確なため、最初に作成。各行は一意でなければならず、貼り付け後に重複を削除。
- Customers テーブル: CustomerID (PK), CustomerName, Region, Segment;
- Products テーブル: ProductID (PK), ProductName, Category;
- Dates テーブル: Date (PK), Year, Month (number), Month name, Quarter.
なぜ日付テーブルは1年全体をカバーする必要があるのか?
タイムインテリジェンス計算(年初来、移動平均、期間比較)には、連続したギャップのないカレンダーが必要。テーブルが注文日だけの場合、売上のない月が完全に抜け落ち、計算が正しく行えない。
ステップ 2 — ファクトテーブルの作成
ファクトテーブルは「何が起きたか」を記録し、1イベントにつき1行。測定値と、各イベントを次元テーブルに紐付ける外部キーを格納。説明的なテキストは含まない。
- Sales(ファクトテーブル): OrderID (PK), OrderDate → Dates (FK), CustomerID → Customers (FK), ProductID → Products (FK), UnitPrice, Quantity, Total.
- PK — 主キー(テーブル内の各レコードを一意に識別する識別子);
- FK — 外部キー(他のテーブルの主キーにリンクするフィールド)。
スター・スキーマ
4つのテーブルはスター・スキーマを形成し、ファクトテーブルが中央に位置し、ディメンションテーブルが放射状に広がり、それぞれが主キー/外部キーのペアで接続されている。
タスク
- ワイドなフラットシートの列を、宛先ごとに色分け:customers(青)、products(オレンジ)、dates(緑)、fact values(黄);
- 各色グループを新しいシートにコピーし、範囲を名前付きのExcelテーブルに変換(挿入 → テーブル);
- 主キー列を選択し、データ → 重複の削除を使用して各行が一意であることを確認;
- datesテーブルでは、日付列を1月1日から12月31日までカバーするように拡張し、Year, Month, Month Name, および Quarter 列を追加。
=YEAR(),=MONTH(),=TEXT(B2, "MMMM"), およびクォーターの数式="Q"&INT((MONTH(B2)-1)/3+1)を使用; - datesシートを値のみ(数式なし)で新しいシートに貼り付け、テーブルに変換;
- 残りの列と3つの外部キー(
OrderDate,CustomerID,ProductID)を使ってfactテーブルを作成。
1. フラットなシートをファクトテーブルとディメンションにリファクタリングする主な利点は何ですか?(2つ選択)
2. フラットテーブルからCustomersディメンションを作成する際に不可欠なステップはどれですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください