数仓为什么要分层?
分层诞生的背景
我们可以想象这样一个场景。
第一天,小A要写一个任务,获取每日的成交金额,然后制作成一张报表给老板看,于是小A就蹭蹭蹭的写了一个脚本,从数据抽取,到sum的逻辑加工,然后使用报表查询。完美收工
第二天,小A又接到一个任务,这一次是运营那边需要每日的交易金额,展现的活动页面上,小A想,上次取过,直接用上次的表拿来就用,完美收工。
第三天,小A的第一个业务方说,我每天的成交金额不要浙江省的,小A想改那个脚本,但是运营也在用,犯了难,只能cv大法了。
第四天,新同事小B接到一个任务,要取上海市的每日成交金额,最近跌的厉害,小B看了下小A写表,没法用啊,于是蹭蹭蹭自己从抽取,到sum加工,到where过滤,到报表查询重新写了一遍。
看出什么问题了没,任务管理混乱,没有复用,重复开发,应用方需要花费大量的精力在底层细节上。
而分层便是基于任务功能做出的层级划分,分工开发,提高效率。
什么是分层
分层是以解耦为核心,基于任务功能做出的分工和层级划分。每一层分工计算,提高效率。
分层的好处
- 清晰数据结构: 每一层都有其作用域,方便理解定位和使用
- 统一数据口径:提供统一的数据出口。
- 减少重复开发: 通过中间层,减少重复计算。
- 把复杂问题简单化: 将一个复杂任务拆解为多个步骤,处理单一功能,方便理解、排查和恢复。
- 屏蔽原始数据异常: 屏蔽业务影响,通过下层改动对上层无感知。
- 业务应用方从细节解放
传统的分层
这里就不细说了,ods,cdm,ads