在数据仓库的雪花模型(Snowflake Schema)中,通常说的“拆分事实表”并不是像维表那样做规范化拆分,而是对事实表按某些维度或业务过程进行拆分(分事实表)。这么做的原因主要有以下几点:
不同业务过程关心的维度不同。例如:
如果强行放在一张大事实表里,很多行会出现大量 NULL(如下单记录没有支付信息)。
拆分后:下单事实表、支付事实表、退款事实表各自只保留相关字段,数据更紧凑。
事实表必须保持统一粒度。如果业务过程粒度不同:
不能混在一张表里,否则会破坏聚合正确性。
拆分是满足多粒度建模的必要手段。
雪花模型本身是对维表做规范化拆分(如“日期维→年/季/月维”)。
而“拆分事实表”是**多维模型设计原则(Kimball)**的一部分,常与雪花模型配合使用:
雪花模型中“拆分事实表”,本质是为了按业务过程分离不同粒度和维度的事实,减少稀疏性、提升性能、保证模型正确性。
如果你愿意,我也可以用一张具体电商例子(订单/支付/退款)画个简版雪花模型结构来说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。