数仓建模简明教程

数仓建模

1.相关概念

维度

维度是观察问题的角度,比如销售种类,销售时间,商家名。

事实

事实是对事务的度量,比如消费金额,消费次数。

OLAP

线上联机分析。比如处理一些分析

OLTP

线上联机交易,比如转账等业务操作。

2.开发流程

收集业务需求,建模研讨,维度设计。

处理需求,了解业务数据内容。使用方式,(在线查询, 表,接口,搜索)性能需求。

盘点是否有现有 表和接口可以实现需求。

代码实现,选择合适的存储引擎和查询引擎。配置线上监控。

3.数据模型

星形模式

最简单的维度模型,由事实表和维度表构成。中心是事实表,发散的是维度表。星形可以有一个或多个事实表。

优点:

  • 简化查询,简化业务逻辑。获得查询性能,快速聚合,便于提供ROLAP数据源

    缺点:

    • 不能保证数据完整性
    • 对数据分析来说不灵活

雪花模型

结构类似与星※模型,但是在周围的维度表上进行细分。比如时间维度还可以拆成某个月,某个季节的。

事实表

事务事实表,快照事实表,累计事实表。

维度表

时间维度表,地理维度表,产品维度表,人员维度表,范围维度表。

全量表

没有分区。每次都会覆盖之前的数据。是截至目前最新的数据。

快照表

有时间分区,每个区里的数据对应前一天所有的全量数据,比如当前表有三个分区,9,10,11.其中9 分区有历史数据到8 的所有数据。

t+1,比如说11 表对应实际时间是12 。

增量表

比如10 到11 新增的数据会存在11里。

拉链表

4.1全量同步

每天备份完整的数据作为一个分区。

4.2增量同步

同步增加的数据作为一个分区。

4.3拉链表

今日新增和今日发生变化的数据。

4.4特殊表

比如涉及性别,地区可以不必遵循。

  • 没变化的客观世界维度,比如年龄,可以存一份固定值。
  • 日期。可以一次性导入若干年的数据。

5.三范式

第一范式

属性不可再分,比如数据都是原子数据。不可再次分割.

第二范式

不能存在部分函数依赖,比如课和学 可以推出姓名,但是也可以直接学 推出姓名。所以姓名部分依赖于学 和课名。

第三范式

比如学 ,课程可以推出老师,但是老师推不出学 。

一般来说建表满足三范式即可。

1.一致性原则

不同物理表中字段,数据类型,数据内容必须一致。

2.维度组合与拆分

相关性强的需要放在一起。比如有些指标经常一起出现。

6.场景与性能优化

  • 尽可能设计高效,满足业务的ADS表
  • 多维分析时减少join操作,提升性能,尽量用大宽表的设计。
  • 特定指标一般用kv的形式
  • 搜索场景一般用搜索引擎。

7.数据同步

7.1直连同步

select全部数据存储,再load到数仓中。数据量小时可以使用,数据量大时不可。sqoop等软件。

但是时间长了或者业务数据增多之后,同步时间会越来越长。同时这种同步会直接操作数据库,对数据库负荷也很大。

7.2实时增量同步(日志解析)

直接读取数据库的操作日志,然后再进行复现。这是再系统层面的操作,不会影响数据库。

可以达到实时同步,延迟控制在毫秒级别。但是在批量补数据时,日志解析会很慢。

ODS层

从web前端获取埋点数据或者从mysql中提取业务数据 。Operation Data Store。这是最接近数据源的一层,也叫贴源层。

一般会用lzo或者snappy和parque压缩,减少磁盘占用。原始数据10G大概压缩到1G.

创建分区表。

DWD层

DataWarehouseDetail明细粒度事务层。结合业特点搭建的层。适当做一些冗余。主要处理事实表。

数据清理整合规范化,处理脏数据规范不一致的状态定义不一致的。命名不规范的数据都会处理。

此时交付的是一个基础明细表。会有一些分析的大宽表。

DIM层

DIM层是一个辅助性的层,可以贯穿几个层。

DWS

宽表聚合是对各个事实的聚合值,本层服务与一些轻业务。

基于DWD层数据,整合汇总分析某一个主题的服务数据。

DWT层

DataWarehouseTopic。这一层是为了应用产品的指标需求。构建主题的全量宽表。

ADS层

给数据产品和数据分析所使用的数据。会放在ES,redis等系统供线上系统使用。

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成31368 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月22日
下一篇 2022年7月22日

相关推荐