[数仓笔记]数据建模
[数仓笔记]数据建模
- 1. 为什么需要数据建模
- 2. 典型的数仓建模方法论
- 2.1 关系建模
- 2.2 维度建模
- 3. 数据整合及管理体系
- 3.1 体系架构
- 3.2 指标体系
- 3.2.1 定义
- 3.2.2 命名规范
- 3.3 分层建模
- 3.3.1 分层方法
- a)操作数据层(ods)
- b)dw基础模型层
- c)主题宽表
- d)应用数据层
- 3.3.2 分层模型设计原则
- 3.4 主题域
- 3.5 建模实施
- 3.5.1 指导方针
- 3.5.2 实施工作流
- Reference
1. 为什么需要数据建模
随着DT时代的发展,数据出现了爆发式的增长,需要对数据进行有序,有结构的分类组织和存储,以方便应用。
合适的数据建模,能带来以下几点好处:
- 性能:良好的数据模型你帮助我们快速查询所需要的数据,减少数据的IO吞吐
- 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。
- 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
- 质量:良好的数据模型能改善数据统计口径的不一致性,减少计算错误的可能下。
2. 典型的数仓建模方法论
2.1 关系建模
关系模型严格遵循第三范式(3NF),较松散零碎,物理表数量多,数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。
数仓中的关系建模与OLTP系统的区别在于,他是站在企业角度面向主体的抽象,而不是针对某个具体的业务流程的对象关系抽象。特点如下:
- 需要全面了解企业业务和数据。
- 实施周期非常长。
- 对建模人员的能力要求非常高。
2.2 维度建模
维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快的完成需求分析,同时具有较好的大规模复杂查询的相应性能。
其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。
3. 数据整合及管理体系
只有建设高效的数据模型和体系,对数据进行有序和有结构的分类和组织,才能避免重复建设和数据不一致等问题,保证数据的规范性,进而让数据源源不断的产生价值。
3.1 体系架构
数据域:指面向业务分析,将业务过程或者维度进行抽象的集合。其中,业务过程可以概括为一个个不可拆分的行为事件,在业务过程下,可以定义指标。维度是指度量的环境,如买家下单事件,买家是维度。
业务过程:指企业的业务活动事件,如下单,支付,退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件。
装饰类型:是对装饰词的一种抽象划分。修饰类型从属于某个业务域,如日志域的访问终端类型涵盖无线端,pc端等。
装饰词:指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在日志域的访问终端类型下,有修饰词如无线端,pc端等。
原子指标/度量:原则指标和度量含义相同。如支付金额。
3.2 指标体系
3.2.1 定义
原子指标:基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额
派生指标:派生指标=一个原子指标+若干修饰词+时间周期。如最近1天海外买家支付金额
派生指标可以分为三类:
- 事务型指标:是指对业务活动进行衡量的指标。如新发商品数,重发商品数。
- 存量型指标:是指对实体对象(商品,会员等)某些状态的统计。例如商品总数,注册会员总数
- 复合型指标:是在事务型指标和存量型指标基础上复合而成。如UV-下单买家转换率。
3.2.2 命名规范
- 英文标识的命名, 尽量使用英文简写, 其次是英文, 当指标英文名太长时, 可考虑用汉语拼音首字母命名.
- 中文名的命名: 业务描述/动作+度量, 指标为一个名词度量, 如"在线门店数",“酒店客单价”,“竞价成功数”, 而不是一个动作,
如"点击", "支付"等. - 带时间周期修饰词的指标, 一般在英文标识的结尾带上时间修饰后缀, 如"chat_amt_7d"(在线咨询点击金额7日),
有以下常用的时间周期修饰词
中文名 | 英文名 | 中文名 | 英文名 |
---|---|---|---|
昨日 | - | 自然周 | _cw |
最近7日 | _7d | 自然季度 | _cq |
最近90日 | _3m | 最近180日 | _6m |
最近3日 | _3d | 自然月 | _cm |
最近60日 | _2m | 最近1小时 | _1h |
最近30日 | _1m | 零点截至当前 | _tt |
最近14日 | _14d | 年初截至昨日 | _sd |
ps:非时间修饰词,阿里的方案是在最后增加修饰词序号,如chat_amt_7d_0001
3.3 分层建模
3.3.1 分层方法
a)操作数据层(ods)
把系统数据无处理的存放在数据仓库中。
存储数据仓库的源接入数据,分为两类,一类是关系型数据(比如mysql)到hive的存储,一类是非关系型数据(比如网站访问日志、广告日志log)在hive的存储,此外还有一类数据也可归入ods层,使用到的其他事业部的数据表。
b)dw基础模型层
细分两层,基础明细层和基础汇总层
基础明细表(日志表),dw层明细数据存储层,存储数据仓库的最底层明细数据,该层数据与ods源数据粒度相同,是对ods做过过滤、清洗、转化后统一的规整的数据存储。
基础汇总数据表,dw层汇总数据存储层,该层存储对明细数据的维度汇总数据,这里的维度包括(日期维度,业务维度等)。
c)主题宽表
主题宽表 ,大宽表集市,存储两类数据,一类是主题归并的宽表,一类是主题内基于dw数据的高级分析表。
d)应用数据层
应用数据表:存储面向应用的数据,包括(数据应用系统模型、报表模型等)
3.3.2 分层模型设计原则
(1) 高内聚和低耦合,业务相近或相关,粒度相同的数据设计为一个逻辑或者无力模型。将高概率同时访问的数据放在一起。
(2) 核心模型与扩展模型分离,核心模型包含常用核心业务的字段,扩展模型包括一些特定的或者少量使用的应用字段。
(3) 公共处理逻辑下沉及单一,越是公共数据越要在数据底层封装,避免暴露其处理逻辑,公共逻辑不要多出存在。
(4) 成本和性能平衡,适当的数据冗余,但不能多。
(5) 一致性,具有相同含义的字段在不同表中命名一致,如果是历史因素造成不一致,在亚当进行相应管理。
(6) 命名清晰,可理解。
3.4 主题域
主题(Subject)是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。典型的主题领域包括顾客、产品、订单和财务或是其他某项事务或活动。
主题域是对某个主题进行分析后确定的主题的边界。
3.5 建模实施
3.5.1 指导方针
- 首先是充分的业务调研和需求分析;
- 进行数据总体架构设计,根据主题域对数据进行划分,按照维度建模理论,抽象出业务过程和维度。
- 抽象整理出相关指标体系
- 使用相关工具或按照相关规范完成指标规范定义和模型设计
- 最后是代码开发和运维。
3.5.2 实施工作流
Reference
大数据之路–阿里巴巴大数据实践
https://zhuanlan.zhihu.com/p/147894316
https://www.zhihu.com/question/26926206
[数仓笔记]数据建模相关推荐
- 谈笑间学会数仓—大数据建模过程
谈笑间学会数仓-大数据建模过程 首先我们先来了解一下,大数据建模都需要遵循哪些原则呢?先来列举一下 建模原则 高内聚和低辑合 将业务相近或者相关.粒度相同的数据设计为一个逻辑或者物理模型:将高概率同 ...
- 尚硅谷-离线数仓-笔记
尚硅谷-离线数仓-笔记 一.数仓建模理论 第一章 数仓概述 1.1 数仓概念 数据仓库是一个为数据分析而设计的企业级数据管理系统.数据仓库可集中.整合多个信息源的大量数据,借助数据仓库的分析能力,企业 ...
- 从数仓到数据中台,谈技术选型最优解
本文根据颜博老师在[Deeplus直播第218期]线上分享演讲内容整理而成. 颜博 马蜂窝数仓研发总监 现任马蜂窝数据仓库团队负责人,曾供职于京东.IBM.亚信等公司. 数据行业老兵一名,历经传统数据 ...
- 浅尝辄止:数据库--数仓大数据平台--数据中台
很久没有更新博客了,今天主要是想谈一谈自己工作几年总结的心得. 1.浅尝辄止 数据库:基于mysql,oracle来实现数据库分析(存储在数据库,使用数据库语言直接分析,最后成报表形式). 数仓&am ...
- 大数据演进简史:从数仓到数据中台,谈技术选型最优解
大家好,今天分享的议题主要包括几大内容: 带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程: 我个人认为数据中台的核心组成,以及一些技术选型参考: 数据研发是数据中台很重要的一环, ...
- 看这篇就明白大数据实时数仓、离线数仓、数据湖之间的关系
数仓架构演变 20世纪70年代,MIT(麻省理工)的研究员致力于研究一种优化的技术架构,该架构试图将业务处理系统和分析系统分开,即将业务处理和分析处理分为不同层次,针对各自的特点采取不同的架构设计原则 ...
- 数仓实时数据同步 debezium
数仓实时数据同步 debezium 背景 debezium 简介 架构 基本概念 例子 Router 目前遇到的问题 背景 数据湖将源库的数据同步到hive数仓ods层,或直接在kafka中用于后面计 ...
- 数仓和数据中台长期霸权,数据湖最稳
随着信息化进程的加快,传统数仓越来越无法适应海量数据存储和分析的需求,天下苦数据仓库久矣! 只能存储结构化数据,无法采集存储非机构化数据: 无法存储原始数据,所有数据须经过ETL清洗过滤: 离线数仓的 ...
- 数仓、数据湖、湖仓一体、数据网格的探索与研究
整理不易,转发请注明出处,请勿直接剽窃! 点赞.关注.不迷路! 摘要:了解每一代数据存储的定义.数据类型.功能.总结. 第一代:数据仓库 定义 为解决数据库面对数据分析的不足,孕育出新一类产品数据仓库 ...
最新文章
- sqlce wp from查询语句详解
- C语言中的选择法排序怎么,请问高手们 C语言中选择法排序和冒泡法排序的思想,两种方法有何不同,搞不懂,请举例详细说明一下.谢谢。...
- jquery easy drag
- eureka服务的注册、续约、下线
- Java编程的逻辑 (34) - 随机
- 网吧操作系统制作与优化
- PoloMeeting(视频会议系统)免费版 v6.30
- c语言换行用分号代替,go语言换行的地方可以用分号替代吗?
- Mysql 省市区字典(带层级,带经纬度,带拼音)字典版
- 用C语言将中文文本和英文文本合并为一段中文一段英文(翻译排版)
- python中什么是不等长编码_2021学堂云计算机科学和Python编程导论(自主模式)期末答案...
- 一文让你学会PC软件升级,学不会过来打我
- explicit含义
- 【原创】机器学习一般流程总结
- idog copy from,
- 数据预处理第6讲:正态变换
- 软件测试真的干到35岁就干不动了吗?
- linux搭建h5学习日记
- Android加载GIF图片的两种方式
- 企业内部培训和外部培训的区分