干货公司年终业绩分析报告,你的数据统

北京中科白癜风康复明星 https://m.39.net/baidianfeng/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kyligence的缓慢变化维处理实践

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

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

启用缓慢变化维类别1

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

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

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

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

总结

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

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

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

更多详情,请参考Kyligence官方网站:




转载请注明:http://www.180woai.com/afhpz/8172.html


冀ICP备2021022604号-10

当前时间: