解决粒度不一致问题(数据建模-USS)

由于基于维度建模的星型模型中,为提高易用性和分析性能普遍会实行去规范化(de-normalization)的惯例,但这有时会带来一些分析上的负面影响,尤其是当需要联合分析两张粒度不一样的事实表的时候,比如下面的 Sales 和 Targets 事实表:

conformed_granularities_03
conformed_granularities_01

联合分析销售事实和销售目标是比较常见的业务需求,然后上面的 Sales 表无法从 Targets 表中获取数据,Targets 表也无法从 Clients 和 Products 两张维表中获取维度属性。对于 Sales 和 Targets 连接的问题,Kimball 建模方法论中一般会提倡在 Sales 表中创建用于连接 Targets 的外键,做法如下(前两个转换):

conformed_granularities_04
conformed_granularities_02

上图中的后两个转换手段则是 USS 对 Targets 表与 Clients、Products 两维表连接的解决办法,即使用所谓的重规范化(re-normalization)拆出需要的粒度的维表,这样各种联合分析的需求就都能满足了。而模型中存在的剩下的多路径发散问题,我们已经知道由 USS 的桥接表都能解决:

conformed_granularities_05
conformed_granularities_06

图中填充红色的部分标识是新加的列,尤其是桥接表中 Sales 的红色部分相当于是给原有模型添加了额外的两条连接(Sales直连Countries和ProductLines),这样做有利于多粒度的分析(另见〖Northwind样例数据实战(USS)〗);蓝色的部分则标识是合并已有列生成的技术列(单一外键)。

这样最终得到的模型方案能够同时用于解决多种需求,不管是跨表的联合分析,还是不同粒度的分析需求,都能由这一个模型解决。比如使用 QlikView 可构建如下联动的、可下钻的多功能看板:

conformed_granularities_07
conformed_granularities_08

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值