【干货】公司年终业绩分析报告,你的数据统计对么?

01 - 24 - 2019

作者 | 陈晓杰

编辑 | Sammi

 

每年年终或新年伊始,公司管理层都要从各个角度比如部门、产品线等考察公司过去一年的业绩,作为数据分析团队,你需要向管理层准备这样的数据分析报告,而在此过程中,你可能会面临着这样的问题:

 

* 公司的组织架构在过去的一年中发生了调整,部分人员的所属部门也因此发生了变动,那各部门的业绩如何统计?

* 由于业务优化,公司一些产品的分类发生了变更,那全年各产品分类的销售数字如何统计?

 

为了生成上述业绩报告,多维数据分析是最常用与高效的技术手段。通过多维建模,将员工业绩、产品销售定义为事实表,把员工、产品、日期等定义为维度表,从而方便高效的从各个维度对公司核心 KPI 进行汇总统计和对比分析,以下便是基于销售数据的一个简单多维分析模型示例。

 

图表1:一个简单的多维模型示例

 

事实表一般会每天更新,而维度表尽管基本稳定,但也会随着时间发生变化,比如产品的分类、客户的国家、员工的部门等,这就是多维数据分析中的缓慢变化维概念(Slowly Changing Dimension, SCD)。如何处理这个变化,回答本文开始的问题,需要根据查询分析的特定需求分别处理,业界称之为缓慢变化维度的处理

 

缓慢变化维度的常见处理方法

 

一般来说,最为常见的缓慢变化维度的处理方法有类别 1 (Type 1) 和类别 2 (Type 2),其具体处理方法和查询举例如下:

 

* 类别 1:维度表中直接覆盖原值,查询时只能使用最新的维度属性,反应维度最新状态(latest status);

* 类别 2:维度表中添加新的记录,通常增加有效期字段来区分,记录维度表所有历史变化,从而使得历史可追溯。在查询时一般使用当时的维度属性,反应历史事实(historical truth)。

 

以图表1的多维模型为例,假设产品 iPhoneX 在 2018 年双 11 后,分类从 3C 调整为了 Mobile,以下分别是类别 1 和类别 2 对产品维度表的处理方法,以及在查询 2018 年各产品分类的销售数字时的结果:

 

图表2: 缓慢变化维类别 1 和类别 2 的处理方法与查询结果示例

 

注:类别 2 的处理方法有各种具体实现方法,比如常见的拉链表,但基本原理一致。

 

讲到这里,相信各位已经对文章开头的问题已经有答案了,现在需要做的就是和业务方沟通,统一数据统计口径,然后在 ETL 或者数据仓库中具体实现。在一些复杂的场景中,还会使用到类别 3 和类别 4,甚至是混合的处理方法,本文不在此进行深入讨论,具体内容各位可以参考相关文档。

 

Kyligence的缓慢变化维处理实践

 

在大数据场景下,为了加速数据分析的性能与并发,基于多维模型(Cube)进行预计算是最为行之有效的方法之一。开源项目 Apache Kylin 便是其中代表,而基于它为核心的企业级大数据分析平台 Kyligence Enterprise,更是实现了 PB 级数据的亚秒级查询响应和数以千计的高并发访问。

 

默认情形下 Apache Kylin 与 Kyligence Enterprise 对所有维度表均做类别 2 处理,每次 Cube 刷新时记录当时的维度表数据,以便在查询时使用并反应当时的历史事实。

 

启用缓慢变化维类别 1

 

在默认情形下,当用户需要使用最新维度表信息统计结果时,即需要类别 1 处理方法时,就需要刷新所有 Cube 历史数据,这带来了大量额外的计算开销,在海量数据场景下无法接受。因此,Kyligence Enterprise 从 v3.2.2 版本之后,内生支持缓慢变化维类别 1,用户可以在定义模型时,通过简单的设置,即可对维度表启用缓慢变化维类别1处理,如下图:

图表3 Kyligence 支持缓慢变化维类别1处理

 

对于启用了缓慢变化维 Type 1 的维度表,Kyligence Enterprise 将仅保留一个最新版本,并在每次 Cube 数据刷新时更新该维度表,而在查询时,所有 Cube 历史数据(Segments)将与该最新的维度表联接并反馈查询结果,其原理如下图所示:

 

图表4 Kyligence 支持缓慢变化维类别1处理原理

 

总结

 

以上便是多维分析中缓慢变化维与常见处理方法的简单介绍,以及 Kyligence 与 Apache Kylin 在大数据场景下的实践。

 

在海量数据多维分析场景下,Kyligence Enterprise 实现了灵活的缓慢变化维类别 1 和类别 2 的处理,既保障了查询性能,又避免了不必要的 Cube 数据刷新的开销,从而满足不同的数据分析需求,大幅提升大数据分析的效率。

 

未来 Kyligence 还会做更多探索与改进,比如类别 1 和类别 2 的灵活切换,支持更多缓慢变化维处理类型等,敬请期待。

 

更多详情,请参考 Kyligence Enterprise 用户手册:

(https://docs.kyligence.io)

 

关于Kyligence

Kyligence 由首个来自中国的 Apache 软件基金会开源项目 Apache Kylin 核心团队组建,是专注于大数据分析领域创新的数据科技公司。Kyligence 提供基于 Apache Kylin 的企业级大数据智能分析产品 Kyligence Enterprise,以及基于公有云的托管式 Kylin 在线服务 Kyligence Cloud。目前,Kyligence 已赢得了海内外多家金融、保险、证券、电信、制造、零售、广告等企业级客户。

近期文章

【Kyligence 公开课】视频回顾—— Superset设计与SQL查询

【Kyligence 公开课】视频回顾—— Superset设计与SQL查询

  公开课现场座无虚席   在上周举办的 2019 年 Kyligence 公开课 NO. […]

详细阅读

【干货+案例】保险行业怎么实现业财融合?

【干货+案例】保险行业怎么实现业财融合?

作者 | 周倚平 编辑 | Sammi   不管是“全球新增的600万亿欧元保费中,中国市场占八成” […]

详细阅读

Apache Kylin v2.6.0 正式发布

Apache Kylin v2.6.0 正式发布

近日,Apache Kylin 社区很高兴地宣布,Apache Kylin v2.6.0 正式发布。 &nbs […]

详细阅读