在面向业务需求的数据分析过程中,需要对多张数据表进行合并(去规范化、扁平化),传统上通常是通过连接来实现,然而连接(内连接、左右连接)可能会导致数据丢失,尽管丢失的数据是当前业务需求所不需要的部分,但这也带来潜在的弊端:
虽然全连接(FULL JOIN)是不丢失数据,但性能一般、结果怪异以及可能还存在数据发散问题,因而也不是一个很好的选择
- 意味着一次数据处理只能满足一次业务需求,(由于数据缺失)下一个需求可能需要重新处理数据(换一种连接方式);
下面以 Sales 和 Products 两张表为例来进行演示,比如有两个业务需求①从时间维度分析销售额②从产品维度分析销售额(销量为零的产品也要求展示),按传统的办法,前者一般以 Sales 为主表进行左连接,而后者一般以 Products 为主表进行左连接,即针对两个不同需求分别做不同的处理:
这样的做法,不仅处理了两次,也创建了两张临时表,浪费了存储空间也增加了维护成本。而统一星型模式(USS),由于没有数据丢失,一次数据处理便可满足以上两个业务需求:
并且 USS 的桥接表使得连接(join)过程变得十分简单易用,直接由分析人员去做连接处理也不容易出错。当然,如果BI工具支持关联(association)则可改用关联的合并方式,数据冗余更小,并且杜绝了数据发散的可能,另见〖避免数据发散(USS)〗。