Hello there, ('ω')ノ
ディメンションテーブル(Dimension Table) とは、データウェアハウスやOLAP(オンライン分析処理)において、ファクトテーブル(Fact Table)を補助し、分析の軸(ディメンション)を提供するテーブルのことです。
ディメンションテーブルの特徴
分析のための属性情報を持つ
- 例: 「製品」「地域」「顧客」など、ビジネスの視点でデータを分類する要素を含む。
主キー(Primary Key)を持つ
- 一意の識別子(例:
product_id、customer_id)を持ち、ファクトテーブルと結合(JOIN)される。
- 一意の識別子(例:
冗長性がある(非正規化されていることが多い)
- 分析を高速化するため、ある程度のデータの重複を許容する。
ファクトテーブルとリレーションを持つ
- ファクトテーブルの外部キー(Foreign Key) とディメンションテーブルの主キーを結びつける。
ディメンションテーブルとファクトテーブルの違い
| 項目 | ディメンションテーブル | ファクトテーブル |
|---|---|---|
| 目的 | 分析の軸となる情報を保持 | 数値データ(売上、件数など)を保持 |
| データの種類 | 文字列やカテゴリ情報(製品名、地域など) | 数値(売上、利益、注文数など) |
| 主キー | 一意の識別子(例: product_id) |
複数の外部キーの組み合わせ(複合キーのことが多い) |
| 正規化の度合い | 非正規化が多い | 正規化されることが多い |
ディメンションテーブルの例
1. 顧客ディメンションテーブル(Customer Dimension)
| customer_id | customer_name | country | age_group |
|---|---|---|---|
| 101 | 山田太郎 | 日本 | 30-39 |
| 102 | John Smith | アメリカ | 40-49 |
| 103 | Alice Brown | イギリス | 20-29 |
2. 製品ディメンションテーブル(Product Dimension)
| product_id | product_name | category | brand |
|---|---|---|---|
| 201 | スマートフォンX | モバイル | ブランドA |
| 202 | ノートPC Y | パソコン | ブランドB |
ディメンションテーブルの活用例
例えば、売上データ(ファクトテーブル)とディメンションテーブルを組み合わせて、以下のような分析が可能になります。
売上ファクトテーブル
| transaction_id | customer_id | product_id | sales_amount | date |
|---|---|---|---|---|
| 1001 | 101 | 201 | 50,000円 | 2024-01-01 |
| 1002 | 102 | 202 | 120,000円 | 2024-01-02 |
このファクトテーブルを、顧客ディメンションテーブルと製品ディメンションテーブルと結合(JOIN)すると、「どの国のどの顧客が、どのカテゴリーの製品を購入したか」 という詳細な分析が可能になります。
結論
ディメンションテーブルは、分析の軸となる情報(製品、顧客、地域など)を持つテーブルであり、ファクトテーブルと結合することでビジネスデータの分析を容易にする。
Best regards, (^^ゞ