出来事(ファクト)と、その切り口(ディメンション)に分ける。分析の SQL が単純になる。
スター型スキーマは、分析用のテーブルを2種類に分ける設計です。真ん中にファクト(起きた出来事と、その数値)を置き、周りにディメンション(出来事を切り分ける切り口)を置きます。図にすると星の形になるのでこう呼びます。
| ファクト | ディメンション | |
|---|---|---|
| 中身 | 注文・クリック・入金などの出来事と、金額・数量などの数値 | 顧客・商品・店舗・日付などの属性 |
| 行数 | 多い(増え続ける) | 少ない〜中くらい |
| 列 | ディメンションへのキー+数値 | 名前・カテゴリ・地域など文字の属性 |
| 例 | fct_order_items | dim_customer・dim_product・dim_date |
こうしておくと、分析の SQL は「ファクトにディメンションをつないで、属性で GROUP BY して数値を SUM する」という同じ形になり、誰が書いても迷いにくくなります。
SELECT d.year_month, p.category, SUM(f.amount) AS sales
FROM fct_order_items f
JOIN dim_date d ON f.date_key = d.date_key
JOIN dim_product p ON f.product_key = p.product_key
GROUP BY d.year_month, p.category;面接ではこう答える
スター型スキーマは、分析用のテーブルをファクトとディメンションに分ける設計です。真ん中のファクトには注文やクリックなどの出来事と金額などの数値、周りのディメンションには顧客・商品・日付などの切り口を置きます。分析の SQL が「ファクトにディメンションをつないで、属性で GROUP BY して SUM する」という同じ形になるので、誰が書いても迷いにくくなります。設計では最初にファクトの粒度を決めます。
Dataとの関わりmart の設計の基本形で、設計面接でも「どんなファクトとディメンションを作るか」をまず聞かれます。