数据增量更新定义_数据仓库

背景:结合公司的数仓体系,和工作经历,谈一谈数据仓库体系。

首先在编写这边文章之前,需要知道什么是数据仓库。

数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。

数据仓库搭建的整理流程

96319f2e038943fcb4a719aa66fec05c.png
数据仓库搭建体系

怎么评判搭建数仓的好坏呢

83a39b0592902d999474e54cab6179c7.png
评判标准

个人认为主要从五个指标考量:稳定、可信、丰富、透明、安全

  • 稳定:数据产出需要稳定,这就需要任务调度平台、任务异常信息报警平台
  • 可信:数据产出是能够令人信服的,这里面涉及到数据质量管理、数据指标管理
  • 丰富:数据产出是丰富的,包含公司的整体数据集
  • 透明:数据有迹可查,包含了数据地图、数据血缘管理
  • 安全:数据是安全的,涉及到数据权限管理

数据治理说白了就是怎么能知道有哪些数据,存哪了,谁在用,怎么用,啥时候用,给谁提供服务了。

文绉绉一点,就是“数据管理”,“数据血缘”,“数据开发”,“数据分析”,“运维监控”,“数据服务”,等这一系列的能力。

传统的数据模型是E-R模型,数仓建模以维度建模为主。

维度建模

维度建模主要从4个维度去考量:选择业务过程->声明粒度->确认维度->确认事实;

1、选择业务过程

业务过程是由组织完成的微观活动,通常描述一段业务过程,如获得订单、学生注册、接收付款。业务过程包含以下公共特征

  • 业务过程通常用行动动词表示
  • 业务过程通常由某个操作系统支持,例如,账单或购买系统。
  • 业务过程建立或获取关键性能度量
  • 业务过程通常由输入激活,产生输出度量。一系列过程产生一系列的事实表。

2、声明粒度

  • 声明粒度意味着精确定义某个事实表的每一行表示什么。
  • 粒度传递的是与事实表度量有关的细节级别

粒度的声明尤为重要,如果不能清楚的定义粒度,整个设计就像建立在流沙之上。

3、确定维度

  • 描述来自业务过程度量事件的数据。
  • 应当使用健硕的维度集合装饰事实表

4、确定事实

  • 不同粒度的事实必须放在不同的事实表
  • 典型的事实是可加性的数值
  • 需要综合考虑业务用户需求和数据来源的实际情况
  • 事实表与维度表通过外键关联

d655fff361a79001ca1a05e2c112351d.png

比如说有个零售业务50元买10只笔。按照维度建模的思路

业务过程粒度维度事实
销售订单的创建店铺、商品、日期维度、出纳维度、促销维度零售销售事实

e554a6114ebd2db2cd3535bcb1f2fa1c.png
零售模式中的可度量事实

目前常见的维度模型:

  • 星型模型:每一个维表都与都与事实表相关联。数据冗余量较大
  • 雪花模型:有些维表可能不与事实表直接关联,而是通过其他维表关联到事实表。数据冗余量较小
  • 星座模型:由多个事实表相组合,维表是公共的。企业中一般都是星座模型

雪花模型和星型模型的主要区别就在于维度表有没有外键

目前来说业界采用的比较多的是星型模型。我认为主要原因是现在存储资源是廉价的。计算资源比较稀缺、比较贵。当采用了雪花模型,虽然存储资源减少了,但是会存在多表的join导致可能会浪费计算资源。

建设数据仓库之前需要定义一系列的标准,从数据层级规划、主题划分、业务线划分、表类型划分、表库命名规则、字段命名规范

数仓建设体系

(一)层级规范

9b31f3870ba1b35fc30decf4fa840bac.png

(二)主题划分

主题域英文简写说明
营销campaigncpn指企业发现或发掘客户需求,让客户了解该产品进而购买该产品的过程,例如双十一大促,618促销活动等。
商品goodsgds可市场化的产品、产品包和服务
事件eventevt事件是当事人发起的行为活动,它记录了详细的活动数据。
............

(三)业务线划分

...

(四)表类型划分

3d3e838cd879ed41aa379c7ce294be5e.png

(五)表、视图、数据库命名
(1)ODS层表命名:

ods_[数据库名称/http/flume/spider]_[实例简写]_[业务系统表/生成程序名]_[更新周期(y/q/m/d/h)&更新策略(有分区增量s/有分区全量d/无分区全量a)]

  • 例:ods_finance_counter_pro_ipaa_t_car_info_dd

(2)DL层表命名:

dl_[数据库名称/http/flume/spider]_[实例简写]_[业务系统表/生成程序名]_[更新周期(y/q/m/d/h)&更新策略(有分区增量s/有分区全量d/无分区全量a)]

  • 例:dl_finance_counter_pro_ipaa_t_car_info_dd

(3)DWD层表命名:

dwd_[数据库名称/http/flume/spider]_[实例简写]_[业务系统表/生成程序名]_[更新周期(y/q/m/d/h)&更新策略(有分区增量s/有分区全量d/无分区全量a)]

  • 例:dwd_finance_counter_pro_ipaa_t_car_info_dd

(4)DWB层表命名:

dwb_[主题]_[子主题]_[业务线/子业务线]&表类型(/f/d/l)]_[实际含义*]_[更新周期(y/q/m/d/h)&更新策略(有分区增量s/有分区全量d/无分区全量a)]

  • 例:dwb_evt_trd_insd_car_info_dd

(5)DWS层表命名:

dws_[主题]_[子主题]_[业务线/子业务线]&表类型(/f/d/l)]_[实际含义*]_[更新周期(y/q/m/d/h)&更新策略(有分区增量s/有分区全量d/无分区全量a)]

  • 例:dws_evt_trd_insd_car_info_dd

(6)DM层表命名:

dm/ws_[主题]_[子主题]_[业务线/子业务线]&表类型(/f/d/l)]_[实际含义*]_[更新周期(y/q/m/d/h)&更新策略(有分区增量s/有分区全量d/无分区全量a)]

  • 例:dm_evt_trd_insd_car_info_dd

(六)字段命名规范

882f25329e33f8800743a4df9cbc2a7b.png

...

数据分层有什么好处呢

  • 1、清晰的数据结构。每一层都有对应的作用域,使用表的时候更能够方便的理解和定位
  • 2、数据血缘追踪。简单来说,就是当使用一张业务表依赖了多张数据表。出现问题时能够快速准确地定位到问题,并清楚它的危害范围
  • 3、减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
  • 4、把复杂问题简单化。每一层都具有独立的属性。每一层都处理单一的步骤
  • 5、屏蔽业务的影响。不必改一次业务就需要重新接入数据。

其实数据仓库包含的东西还蛮多的,元数据管理、血缘管理、指标管理等,每一种都包含很多东西。就先简单的描述下数仓。后续有时间在更新吧。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值