【ディメンションテーブル】

ディメンションテーブル とは?

💡 数字だけじゃ分からない!「誰が・いつ・何を」を教えてくれる説明書
📌 このページのポイント
ディメンションテーブルの役割 ファクトテーブル(数字) 商品ID: P001 顧客ID: C042 日付ID: D0407 金額: 1,200円 数量: 3個 IDと数字だけ... JOIN 商品ディメンション P001 = ノートPC / 家電 / メーカーA 顧客ディメンション C042 = 田中太郎 / 30代 / 東京都 日付ディメンション D0407 = 2026年 / 4月 / 月曜 / 平日 田中太郎さんが4月の月曜にノートPCを3個購入(1,200円) ディメンションで数字に「意味」が付く!
ディメンションテーブルの役割イメージ
ひよこ ひよこ

ディメンションテーブルって何を入れるの?

ペンギン先生 ペンギン先生

「誰が」「何を」「いつ」「どこで」みたいな、分析の切り口になる情報を入れるんだよ。例えば商品ディメンションなら商品名・カテゴリ・メーカー、顧客ディメンションなら名前・年齢・地域、日付ディメンションなら年・月・曜日・祝日フラグなどが入るんだ

ひよこ ひよこ

なんで普通のマスタテーブルとは違うの?

ペンギン先生 ペンギン先生

考え方は似ているけど、ディメンションテーブルは「分析のために最適化されたマスタ」なんだ。普通のマスタテーブルは正規化してデータ重複を減らすけど、ディメンションテーブルはわざと非正規化して、1つのテーブルに必要な属性を全部まとめるんだよ。JOINを減らしてクエリを速くするためだね

ひよこ ひよこ

具体的にはどんな種類があるの?

ペンギン先生 ペンギン先生

代表的なのは日付ディメンション、商品ディメンション、顧客ディメンション、地域ディメンションだよ。特に日付ディメンションは必ずと言っていいほど作る。「2026年4月7日」という日付に対して、年度・四半期・月・週番号・曜日・祝日かどうか、みたいな情報を全部持たせるんだ

ひよこ ひよこ

日付ディメンションってそんなに大事なの?

ペンギン先生 ペンギン先生

めちゃくちゃ大事だよ。「前年同月比」「四半期ごとの推移」「平日と休日の比較」みたいな分析が、日付ディメンションがあると簡単にできるんだ。SQLでDATE関数を駆使する代わりに、ディメンションのカラムで絞るだけで済むんだよ

ひよこ ひよこ

ディメンションテーブルの行数って多いの?

ペンギン先生 ペンギン先生

ファクトテーブルに比べると圧倒的に少ないよ。商品マスタが数万件、顧客が数十万件くらいでも、ファクトテーブルの売上明細は数億件になることもある。ディメンションは「幅が広く(カラムが多い)行数は少ない」、ファクトは「幅が狭く行数が多い」というのが典型的なパターンだね

ひよこ ひよこ

SCD(緩やかに変化するディメンション)って聞いたことあるけど、何?

ペンギン先生 ペンギン先生

Slowly Changing Dimensionの略で、ディメンションの値が時間とともに変わる場合の扱い方だよ。例えば顧客が引っ越して住所が変わったとき、上書きするか(Type 1)、履歴を残すか(Type 2)、別カラムに新旧を持つか(Type 3)を選ぶんだ。DWH設計で避けて通れない重要なテーマだよ

ひよこ ひよこ

奥が深いんだね!

ペンギン先生 ペンギン先生

そうだよ。ディメンションの設計がDWHの使いやすさを左右すると言っても過言じゃない。「分析者がどんな切り口で見たいか」を先に考えてからディメンションを設計すると、みんなが使いやすいDWHになるんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ディメンションテーブル」って出てきたら「分析の切り口(誰が・いつ・何を)を格納するテーブル」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dimension Table」 = 次元テーブル
💬 Dimension(次元・側面)という名前の通り、データを多角的に見るための「切り口」を提供するテーブルだよ
← 用語集にもどる