在数据仓库的雪花模式(Snowflake Schema)中,“关联维表”本质上就是通过规范化后的维度表之间的外键关系进行连接(JOIN)。
下面从概念、结构、关联方式、示例和注意事项几个角度说明。
雪花模式是在星型模式基础上,把维度表进一步规范化:
所以:
雪花模式中,维表不仅和事实表关联,维表之间也会相互关联。
通过外键关联:
fact_sales.dim_product_id = dim_product.product_id
通过维度自身的规范化外键:
dim_product.category_id = dim_category.category_id
事实表
fact_sales
- sale_id
- product_id (FK)
- store_id (FK)
- amount
产品维表(主维表)
dim_product
- product_id
- product_name
- category_id (FK)
类别维表(子维表)
dim_category
- category_id
- category_name
SELECT
f.sale_id,
p.product_name,
c.category_name,
f.amount
FROM fact_sales f
JOIN dim_product p
ON f.product_id = p.product_id
JOIN dim_category c
ON p.category_id = c.category_id;
这就是雪花模式关联维表的标准写法。
如果维度继续拆分:
dim_category
- category_id
- category_name
- department_id
dim_department
- department_id
- department_name
关联方式:
JOIN dim_category cat
ON p.category_id = cat.category_id
JOIN dim_department dep
ON cat.department_id = dep.department_id
示例视图:
CREATE VIEW v_sales_star AS
SELECT
f.*,
p.product_name,
c.category_name
FROM fact_sales f
JOIN dim_product p ON f.product_id = p.product_id
JOIN dim_category c ON p.category_id = c.category_id;
如果你愿意,我可以:
你现在是用在哪一类场景?(数据仓库 / BI / 建模作业)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。