企业为什么要建立数仓?能解决什么问题?给企业带来什么好处?为了搭建数仓,我们又要具备什么能力?
本人正转型期,从技术到架构。不单需要技术能力提升,系统架构规划和业务规划能力也要随之掌握。下面先讲一下技术及系统架构规划。
企业搭建数仓的意义
随着企业信息化的推进,各种应用系统的部署:
- 企业运营管理三大基础系统
- HR
- OA
- ERP
- 营销管理系统
- SRM
- 生产制造的系统
- MES
- PLM
- APS
- WMS&WCS
业务需求和业务逻辑五花八门,重复建设问题,造成资源浪费。
例如:员工编码各系统不统一;客户编码各系统无法关联等问题。
企业做信息化扩展中也存在:
- 数据故障难以评估,修复周期长,血缘依赖不清晰
- 数据膨胀,导致计算资源紧张,不利于数据探查。
- 如果业务变动,导致数据重新接入,就会影响到数据清洗工作
如何解决以上的问题呢?我们不妨结合向对象的思想,通过分层的方式,减少数仓的运维成本
需要一套有效的数据组织和管理方法。通过分层清洗,达到解耦,再解耦的动作
- 清晰的数据结构:数据分层有对应的作用域,
- 数据血缘追踪:溯源排查问题
- 空间换时间:通过多层数据模型,避免用户直接使用操作型数据,可更高效访问数据
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少重复计算
- 复杂问题简单化:一个复杂的任务分解成多个步骤来完成。
下面讲一个通用舒畅分层方法
简称 | 说明 | 执行说明 |
DIM | 公共维度层由维度表构成,基于维度建模理念,建立整个企业的一致性维度 | 低基数维度数据:配置表,比如枚举知对应中文含义,日期维度,设备类型的配置表 高基数维度数据:用户资料、商品资料,数据量千万级别 |
ADS | 数据应用服务层,为应用系统提供数据服务。从数据颗粒度来说高度汇总的数据。 | |
DWS | 数据仓库汇总层,用于存储汇总后的数据。从数据颗粒度来说,这层的数据是轻度汇总级别的数据,已经不存在明细数据了 | |
DWD | 数据仓库明细层,用于存储经过清洗和加工的明细数据。这层数据颗粒度通常和ODS颗粒度相同,不同的是数据质量更高,字段更适合统计的需求 | 命名规则:DWD_ 数据整合、规范化:例如用户访问日志,可以PC、小程序等多个表,汇总成一个表 脏数据、垃圾数据清洗处理:去噪和去重 |
ODS | 操作数据存储层,用于存储来自业务系统的原始数据。从数据颗粒度上看,是颗粒度最细的数据层。 | 命名规则:ODS_(增量/全量) 去噪:例如年龄是200岁 去重:例如物料信息表同一ID有重复素材 但不建议过度清洗,放在DWD处理 |
=======指标体系
指标的命名规范:每个指标一个精确
离线调度任务统计表
1)dwd层完善度:
跨层引用率:ods层直接被下游层(dws/ads)引用的表数量、占所有ods层经常被访问的表的比例
2)dws/ads层完善度
汇总数查看比例:dws/ads层查询量占所有查询的量的比例
数据表的把控:
1、数据字段是否满足需求
2、表的数据结构:是否存在json数据格式
3、表的数据内容质量:
3.1 数据是否完整,是否存在空值
3.2 数据是否唯一
3.3数据是否存在异常格式,数据格式分布式什么
3.4 数据存在哪些值泛微,预期值,最大最小值,平均值等
4、数据同步策略,增量还是全量