自助式敏捷BI分析逐渐深入人心,它是一套完整的解决方案,用来将企业中现有的数据进行有效整合,快速准确的提供报表并提出决策依据,帮助企业做出明智的业务经营决策。然而想真正实现企业级业务数据自助分析,搭建好底层业务数据模型,是企业实现BI分析需要做好的第一步,也是至关重要的一步。
本文将以一个简单的数据分析场景为例,通过两张零售业务数据表,让你快速看懂真正的敏捷BI业务模型是如何搭建的。
本文BI工具:FineBI
下载地址:www.finebi.com
1.商品定价表:
如下图所示,存储商品ID、商品名称、定价的相关商品字段信息。
2.销售明细表:
如下图所示,存储商品ID、销售日期、销量的相关商品销售信息。
对于这样的业务数据表,维度表(商品定价表)中同时包含指标信息(定价),如果此时我们需要统计每一个商品对应的销量情况,对于传统的BI底层数据建模工具,我们往往会将商品定价表和销售明细表进行数据表之间的右连接,拼接成数据大宽表。
最终得到如下图所示的数据宽表,统计每种商品对应的销量情况。
此时如果仅仅只是统计每个商品对应的销量情况,那么是没有任何问题的。但是细心的童鞋们可以观察上图中圈红的部分,由于是根据商品ID进行右连接,那么商品定价表中的定价指标字段自然也会跟着销售明细表一起进行拓展,那么这样一来其实在底层存储的数据中就产生了关于定价的冗余数据。
如下图所示,此时我们可以通过汇总表统计每个商品的销量以及定价的情况:
我们通过计算之前的商品定价表和商品销量表中的数据可以发现,对于商品的销量统计,是完全没有问题的。对于商品定价,我们可以看到衬衫、领带、帽子、皮鞋、运动鞋的定价依次变成了240、300、60、900、750,然而我们清楚地知道,其实领带、帽子、皮鞋、运动鞋的真实定价应该为80、100、20、300、250。
大家可能会疑惑为什么每种商品的定价都变大了,此时其实我们只需要再增加一个销售日期的统计口径便可以观察出本质原因:
如上图所示,再加入销售日期的统计口径之后,定价就变回正确的定价了。毫无疑问,是由于商品定价表和商品销量表根据商品ID右连接而产生了定价的冗余数据。
好,说到这里,传统的BI底层建模在以数据拼接宽表统计多张表的数据关联时,无疑都难逃此劫(构建的宽表模型会产生冗余数据)。下面来看看真正的敏捷BI业务模型是如何做到快速数据表关联,而不产生冗余数据的吧。
在取到商品定价表和销售明细表之后,我们只需要将商品定价表的商品ID和销售明细表中的商品ID直接进行如下图所示的1:N关联即可。
在关联视图中可以看到刚刚创建好的如下图所示的敏捷关联模型:
此时我们再来统计每个商品对应的销量和定价,如下图所示,可以看到所有商品的销量以及定价全部都被正确统计出来了,完全没有产生冗余数据。这是因为我们的建立的敏捷BI模型在统计多张数据表时,每张表还是独立的存储在底层数据模型之中,只有当需要跨表关联计算取数时,才会根据关联的数据表ID进行数据匹配计算,这样一来,完全保障了底层数据模型的灵活性和可拓展性,除了不产生冗余数据之外,对于大表关联计算的性能也能够得到极强的提升。
在准确地得到每个商品的销量和定价之后,我们可以添加一个销售额(销量*定价)指标,快速统计出每个商品对应的总销售额。
网友评论