训练的目的

数据构建的概念对刚接触的同事来讲很抽象,最大的问题是“不容易理解为什么需要分层”,传统的ERP顾问等都是通过源表直接写SQL获取数据。本训练的的目的是帮助刚如何的同事理解数据分层的意义,直观理解什么叫数据构建。

数据构建的意义

数据构建的典型问题?

我们在做ERP的时候也做表,通常做表的方式是“直接从数据库写一段SQL取出数据”,然后我们发现经常要关联很多表,很麻烦,所以会做一些“视图”预先把表都关联起来,然后基于视图写SQL。

一上是最常见的也是最简单的数据构建方式。带来的问题是什么呢?由于没有统一的方法和管理,带来的典型问题有:

  1. 面向用户:指标不统一,因为每一个字段都可能是不同的人通过sql写的,都有自己的理解,也都可能存在理解的偏差,同一个指标,在不同的sql里面,叫法不同,口径不同,导致管理层在不同的表里面看到的同一个指标数值不同,从而带来对整个数据的不信任。
  2. 面向IT:指标无法复用,同一个指标,在不同的粒度,不同的周期,不同的表里面无法共享,常见的情况示例:销售已经开发出了A指标,但是财务需要用到A、B指标,因为B指标不在销售的表里面,所以财务又重新开发了一套包含A和B的sql,导致大量的无效投入。
  3. 面向供应商:开发效率低,因为每次都是全新开发,都是基于excel在管理指标和口径,有时候甚至联excle都没有,不同的供应商有不同的理解,字段的命名五花八门,难以维护,自然开发成就搞,数据也很难横向共享。

数据分层和数据构建的关系?

数据分层本质和宜家的仓库,家里的整理,是一个道理,就是分门别类对有共性的东西进行归集。数据分层是数据构建的第一环,相当于人的脑袋、躯干、四肢,分层是数据构建落地的第一环。本练习的数据分层为:ODS-DWD-FOR_DWS-DWS-ADS-DIM
image.png

练习的目标成果

从DWD开始到ADS,理解数仓规范,生成一张以月为周期,项目为粒度的拉通“供应”“销售”的视图。

注:不要删除初始数据,如果有需要尝试的地方,可以复制一张表进行修改。

练习数据任务介绍

ODS模拟数据介绍

ods_oa_organization 组织表,来源于OA系统
ods_ty_project 项目表,来源于主数据系统
ods_my_room 房间表,来源于ERP系统
ods_my_contract 合同表,来源于ERP系统

表的关系

ods_oa_organization:ods_ty_project 1:n 一个组织下面有多个项目
ods_ty_project:ods_my_room 1:n 一个项目下面有多个房间
ods_my_room:ods_my_contract 1:n 一个房间有多个合同,换房退房产生新合同

DIM层构建

任务:把项目和组织关联起来,方便后续所有的表使用,形成统一的项目维度表。
组织冗余为6级。
image.png
扩展任务:构建一个2000.01.01~2050.12.31的时间维度表

DWD层构建

任务:构建一张运营域的明细表
image.png
任务:构建一张营销域的明细表
image.png

FOR_DWS层构建

任务:构建以房间为粒度的,日为周期的供应面积,供应货值,供应套数指标表
image.png
任务:构建以房间为粒度的,日为周期的最新签约总价,签约建筑面积,签约套数指标表

口径:
t.zhuangtai = ‘激活’ — 口径的关键体现 只取激活状态的最新数据 and t.shifou_shenhe = ‘y’ — 口径的关键体现 只有审核以后的才算

image.png

这一部分是for_dws最具有代表性作用的体现,指标口径的统一。

DWS层构建

dws构建主要体验按不同的粒度、周期进行汇总。

任务:构建项目粒度、年周期签约总价、签约套数销售表
image.png

任务:构建项目粒度、月周期签约总价、签约套数销售表
image.png

任务:构建项目粒度、月周期供应金额、供应面积供应表
image.png

ADS层构建

任务:构建项目粒度、月周期供销拉通的供应金额、签约金额指标供销宽表
image.png

总结

通过模拟数据构建,掌握:

  1. 表如何命名;
  2. 视图如何命名——本训练集模拟的是用视图代替物理表,所以没有加视图前缀;
  3. 字段如何命名;
  4. dim构建的规范;
  5. 理解dwd的作用——清洗、关联、业务还原;
  6. 理解for_dws的作用——进行指标统一;
  7. 理解dws的作用,按域进行指标汇总——提高数据访问效率;
  8. 理解ads的作用,针对使用对象进行封装,拉通,收取;