数仓分层能减少重复计算,为啥能减少?如何减少?这篇文章包懂!
很多时候,看一些数据领域的文章,说到为什么做数据仓库、数据仓库要分层,我们经常会看到一些结论:因为有ABCD……等等理由,比如降低开发成本、减少重复计算等等好处。
然后,多数人就记住了ABCD。但是,每每被问起来,为什么,有什么案例,你是怎么理解的,就被问住,傻眼了。
概念套概念,没意思,不如返璞归真,从生活案例重新理解起~
一、从统计班级人数开始
本文将用生活化案例,结合粒度的概念,帮你理解常说的减少重复计算。
假如,你带一个班级,你是班主任,你上第一节课。但你不知道班上到了多少人,于是,让同学们报数,班上有 30 人,从 1 报到 30,每个人报一次数,一共30 次。
第二节课,来了科任老师 A, 他也想知道班级人数,于是也让同学们报数,从1 报到 30,又是 30 次。
第三节课,来了科任老师 B,他也想知道人数,于是…
第四节课,来了科任老师 C,他也想… 好,一次又一次地报数,同学们烦了。于是有个聪明人记录下来,写到黑板上。
第五节课,等到科任老师 E 面带微笑地走进教室,问班里一共多少人,笑着说,同学们,要不我们来报数吧?
孩子们异口同声地对老师说:老师,请看黑板!
你看,把结果记录和存储下来,就不用再从 1 报到 30才能知道结果了。
这就是减少重复计算了!
二、思考思考粒度
我们再看看粒度。
关于粒度,我曾在数据仓库的文章里讲过,可以回看下:数仓避坑-整明白懂粒度
按照报数规则,一个人只能往另一个人的报数上加一,班级人数这个数字每加一,背后对应的就是一个新的人。
人不可再分,最小就是1,不存在0.5个人,班级人数这个数字的最小粒度,就是人。
粗一点的粒度是什么?以班级为粒度单位报人数,可以只用报一次。
粒度还可以是组,班级里面,我们可以按照不同的方式给同学们分成不同的组。常见的,按照列分组。
其实,这种分组,是按照同学们所坐位置的物理空间来划分的。
我们还可以划分其他的组,比如,按照出生月份,住的小区,兴趣爱好,等等进行分组。
当我们想知道,某个组有多少人,并不需要每次都从最小粒度去统计人数,都去报数,我们都可以把组,这个相对人来说,更粗的粒度的数字统计出来,记录下来, 下次再有类似的提问/请求,直接拿粗粒度的统计结果,也就是直接回答,这个组有多少人。
这就是,减少重复计算的生活化案例,是不是比构建指标体系、搭建中台、减少重复开发、重复计算,要具象多啦~
三、当问题开始复杂,分层的好处出现
刚刚,我们解决了班级粒度的事情,现在,你是校长了。
你的管理范围变大了,至少,统计人数,你先核心是关注更大层面的统计数据,比如全校人数,各年级人数,然后当有一些班级人数分配不均匀的时候,再细致看某个班的人数。
有了班级、年级人数,那么全校人数就好办啦~层层往上汇总累加就好了,总不至于全校开大会,从头报到尾吧。
管理的场景,问题是多如牛毛的,不同场景,所需要的统计数据、分组,都不尽相同。
在招生期间,你要知道每个学区给定的学生名额数,还有一些特长生的名额;
在日常管理期间,你要知道不同年级学生出勤、上课的情况。
更重要的是,你得了解学生的成绩情况。不同年级、不同学科、不同类型的学生,绝对分数,分数的变化趋势。
虽然咱们搞素质教育,不对外暴露这些信息,避免攀比和比较,但是最终落到学校的升学人数、升学率的时候,这些过程性的数据又是我们不得不关注的。
所谓的分层,是分而治之,分而算之。
光讲好处,问题就没有了吗?肯定是有的,比如,我们要额外地记录一些数据,要保证这些分而算的数据的准确性,相当于是信任这个分层数据的提供者。
整个过程中,还要从分析的角度出发,去设计很多分层里面的相关维度、共性维度。关于维度,可以看这篇:数仓避坑-想清楚维度
四、企业里的重复计算
回到企业的环境里,我们会对用户的观看图片、看视频、看直播的行为事件进行统计、计数,看了几次,看了多长时间。
我们也非常关心用户看完这些,到底花了多少钱,送了多少个礼物,买了多少直播间里的商品。
我们会从各种角度对这些过程行为、消费结果进行拆解和统计。
于是乎,企业里会有非常多需要统计、计数的数据。
比如,埋点会上报某个用户在某市某刻观看了A视频,用的手机是苹果,操作系统的版本是IOS7.x,用户所在的IP解析出来是在一线城市。
观看完之后,进入到了讲某个商品的直播间B,系统也会记录,在直播间B下单购买了商品C,金额是99,购买的个数是4个。
当我们要去统计,一线城市的用户观看A图片的次数,购买商品C的数量和金额的时候。
我们会跟之前统计班级人数、分组人数一样,要统计这些结果。
我们可以提前把一些结果提前记录下来,然后每次其他人要查询相同信息的时候,就不用每次都要「报数」了~
比如,今年小米发的双十一战报。
可能很多人都想要这个结果,用于宣传或者分析,那我们直接把这个数据存下来,当别人要的时候,直接拿出来就好了(图片里面,还备注了数据的统计口径)。
具体的一些后台报表,我就不去举例了,大家体会到重复计算到底是怎么回事,就可以了。
关于这些数据是怎么存储的,可以了解数据仓库维度模型:数仓避坑-搞懂维度模型
作者
Lee,公众号:数据产品小lee。关注直播、短视频和文娱领域、擅长数据架构、CDP及数据治理相关工作。
本文
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!