数仓为什么要分层?

分层诞生的背景

我们可以想象这样一个场景。
第一天,小A要写一个任务,获取每日的成交金额,然后制作成一张报表给老板看,于是小A就蹭蹭蹭的写了一个脚本,从数据抽取,到sum的逻辑加工,然后使用报表查询。完美收工

第二天,小A又接到一个任务,这一次是运营那边需要每日的交易金额,展现的活动页面上,小A想,上次取过,直接用上次的表拿来就用,完美收工。

第三天,小A的第一个业务方说,我每天的成交金额不要浙江省的,小A想改那个脚本,但是运营也在用,犯了难,只能cv大法了。

第四天,新同事小B接到一个任务,要取上海市的每日成交金额,最近跌的厉害,小B看了下小A写表,没法用啊,于是蹭蹭蹭自己从抽取,到sum加工,到where过滤,到报表查询重新写了一遍。

看出什么问题了没,任务管理混乱,没有复用,重复开发,应用方需要花费大量的精力在底层细节上。

而分层便是基于任务功能做出的层级划分,分工开发,提高效率。

什么是分层

分层是以解耦为核心,基于任务功能做出的分工和层级划分。每一层分工计算,提高效率。

分层的好处

  • 清晰数据结构: 每一层都有其作用域,方便理解定位和使用
  • 统一数据口径:提供统一的数据出口。
  • 减少重复开发: 通过中间层,减少重复计算。
  • 把复杂问题简单化: 将一个复杂任务拆解为多个步骤,处理单一功能,方便理解、排查和恢复。
  • 屏蔽原始数据异常: 屏蔽业务影响,通过下层改动对上层无感知。
  • 业务应用方从细节解放

传统的分层

这里就不细说了,ods,cdm,ads