数仓

企业为什么要建立数仓?能解决什么问题?给企业带来什么好处?为了搭建数仓,我们又要具备什么能力?

本人正转型期,从技术到架构。不单需要技术能力提升,系统架构规划和业务规划能力也要随之掌握。下面先讲一下技术及系统架构规划。

企业搭建数仓的意义

随着企业信息化的推进,各种应用系统的部署:

  • 企业运营管理三大基础系统
    • HR
    • OA
    • ERP
  • 营销管理系统
    • SRM
  • 生产制造的系统
    • MES
    • PLM
    • APS
    • WMS&WCS

业务需求和业务逻辑五花八门,重复建设问题,造成资源浪费。

例如:员工编码各系统不统一;客户编码各系统无法关联等问题。

企业做信息化扩展中也存在:

  1. 数据故障难以评估,修复周期长,血缘依赖不清晰
  2. 数据膨胀,导致计算资源紧张,不利于数据探查。
  3. 如果业务变动,导致数据重新接入,就会影响到数据清洗工作

如何解决以上的问题呢?我们不妨结合向对象的思想,通过分层的方式,减少数仓的运维成本
需要一套有效的数据组织和管理方法。通过分层清洗,达到解耦,再解耦的动作

  • 清晰的数据结构:数据分层有对应的作用域,
  • 数据血缘追踪:溯源排查问题
  • 空间换时间:通过多层数据模型,避免用户直接使用操作型数据,可更高效访问数据
  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少重复计算
  • 复杂问题简单化:一个复杂的任务分解成多个步骤来完成。

下面讲一个通用舒畅分层方法

大数据数仓插图
简称说明执行说明
DIM公共维度层由维度表构成,基于维度建模理念,建立整个企业的一致性维度低基数维度数据:配置表,比如枚举知对应中文含义,日期维度,设备类型的配置表
高基数维度数据:用户资料、商品资料,数据量千万级别
ADS数据应用服务层,为应用系统提供数据服务。从数据颗粒度来说高度汇总的数据。
DWS数据仓库汇总层,用于存储汇总后的数据。从数据颗粒度来说,这层的数据是轻度汇总级别的数据,已经不存在明细数据了
DWD数据仓库明细层,用于存储经过清洗和加工的明细数据。这层数据颗粒度通常和ODS颗粒度相同,不同的是数据质量更高,字段更适合统计的需求命名规则:DWD_
数据整合、规范化:例如用户访问日志,可以PC、小程序等多个表,汇总成一个表
脏数据、垃圾数据清洗处理:去噪和去重
ODS操作数据存储层,用于存储来自业务系统的原始数据。从数据颗粒度上看,是颗粒度最细的数据层。命名规则:ODS_(增量/全量)
去噪:例如年龄是200岁
去重:例如物料信息表同一ID有重复素材
但不建议过度清洗,放在DWD处理
数仓分层

=======指标体系
指标的命名规范:每个指标一个精确
离线调度任务统计表

大数据数仓插图1

1)dwd层完善度:
跨层引用率:ods层直接被下游层(dws/ads)引用的表数量、占所有ods层经常被访问的表的比例
2)dws/ads层完善度
汇总数查看比例:dws/ads层查询量占所有查询的量的比例

数据表的把控:
1、数据字段是否满足需求
2、表的数据结构:是否存在json数据格式
3、表的数据内容质量:
3.1 数据是否完整,是否存在空值
3.2 数据是否唯一
3.3数据是否存在异常格式,数据格式分布式什么
3.4 数据存在哪些值泛微,预期值,最大最小值,平均值等
4、数据同步策略,增量还是全量