記事執筆の動機
PowerBIを使用する際に、「なんとなくリレーションを組んでいたら、スタースキーマっぽくなった」から脱却するために、スタースキーマについて適切に言語化ができるようになりたくて執筆しました。
ファクトテーブルとは
Microsoftではファクトテーブルを以下の通り記載しています。
ファクト テーブルには観測値やイベントが格納されます。ファクト テーブルには、販売注文、在庫量、為替レート、気温などがあります。ファクト テーブルには、ディメンション テーブルに関連するディメンション キー列と、数値メジャー列が含まれています。
参考 : スタースキーマとPower BIでの重要性を理解する
何度読んでもイメージしにくいですが、私は「メインで分析したいデータ」と理解しました。
具体的には、明細データやトランザクションデータなどが該当するかと思います。基本的には、日付(or時間)の列が含まれることが多いように感じます。
ファクトテーブルの具体例
OrderID | Date | ProductID | Units |
---|---|---|---|
0001 | 2024-01-01 | AAA | 10 |
0002 | 2024-01-01 | BBB | 7 |
0003 | 2024-01-02 | CCC | 32 |
0004 | 2024-01-10 | DDD | 9 |
0005 | 2024-02-01 | AAA | 16 |
0006 | 2024-03-31 | DDD | 2 |
ファクトテーブルの特徴
またファクトテーブルは以下の特徴を持ちます。
- ファクトテーブルは別のファクトテーブルを参照することはなく、ディメンジョンテーブルのみを参照する
- ファクトテーブルのエントリは更新されず、追記しかされない
ディメンジョンテーブルとは
Microsoftではファクトテーブルを以下の通り記載しています。
ディメンション テーブルでは、ビジネス エンティティ (モデル化の "対象") について説明します。 エンティティには、時間自体を含め、製品、人、場所および概念を含めることができます。 スター スキーマに存在する最も一貫性のあるテーブルは、日付ディメンション テーブルです。 ディメンション テーブルには、一意の識別子として機能する 1 つのキー列 (または複数の列) と説明列が含まれています。
参考 : スタースキーマとPower BIでの重要性を理解する
いやわからん。笑
何度読んでもわからなかったです笑
ディメンジョンテーブルは基本的にはマスタデータと理解して問題ないと思います。
特徴として、ファクトテーブルと比較して、列が多く行が少ないデータ形式になっていることが多いです。
スタースキーマに存在する最も一貫性のあるテーブルは、日付ディメンションテーブルであるとのことですので、日付のディメンジョンテーブルの例を見てみましょう。
ディメンジョンテーブルの例
Date | Year | Month | Day | Quarter | Day-of-Week |
---|---|---|---|---|---|
2024-01-01 | 2024 | 1 | 1 | 1 | 月 |
2024-01-02 | 2024 | 1 | 2 | 1 | 火 |
2024-01-03 | 2024 | 1 | 3 | 1 | 水 |
2024-01-04 | 2024 | 1 | 4 | 1 | 木 |
2024-01-05 | 2024 | 1 | 5 | 1 | 金 |
2024-01-06 | 2024 | 1 | 6 | 1 | 土 |
このように、日付に対して、さまざまな情報を付加してくれるマスタデータのようなイメージです。
スタースキーマとは
Microsoftではスタースキーマを以下の通り記載しています。
スター スキーマは、リレーショナル データ ウェアハウスで広く採用されている成熟したモデリング手法です。 モデラーは、モデル テーブルを "ディメンション" または "ファクト" として分類する必要があります。
参考 : スタースキーマとPower BIでの重要性を理解する
イメージできるでしょうか?
スタースキーマとは、ファクトテーブルとディメンジョンテーブルを統合したものです。
私が提示したファクトテーブルとディメンジョンテーブルの例では、「Date」列をキーとして、データを統合することができます。PowerBIを使用する際には、「Date」列をキーとしてリレーションを組むことによって、統合することができます。以下の図が今回のリレーションを可視化したものになります。
スタースキーマの特徴
- 1つのスタースキーマにつき、1つのファクトテーブルしか持てない
- ディメンジョンの数は可能な限り減らすようにする
まとめ
- スタースキーマとは、ファクトテーブルとディメンジョンテーブルを統合したもの
- 1つのスタースキーマにつき、ファクトテーブルは1つまで
- ファクトテーブルはメインデータ、ディメンジョンテーブルはマスタデータのイメージ