[数仓笔记]数据建模

  • 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. 谈笑间学会数仓—大数据建模过程

    谈笑间学会数仓-大数据建模过程 首先我们先来了解一下,大数据建模都需要遵循哪些原则呢?先来列举一下 建模原则 高内聚和低辑合 将业务相近或者相关.粒度相同的数据设计为一个逻辑或者物理模型:将高概率同 ...

  2. 尚硅谷-离线数仓-笔记

    尚硅谷-离线数仓-笔记 一.数仓建模理论 第一章 数仓概述 1.1 数仓概念 数据仓库是一个为数据分析而设计的企业级数据管理系统.数据仓库可集中.整合多个信息源的大量数据,借助数据仓库的分析能力,企业 ...

  3. 从数仓到数据中台,谈技术选型最优解

    本文根据颜博老师在[Deeplus直播第218期]线上分享演讲内容整理而成. 颜博 马蜂窝数仓研发总监 现任马蜂窝数据仓库团队负责人,曾供职于京东.IBM.亚信等公司. 数据行业老兵一名,历经传统数据 ...

  4. 浅尝辄止:数据库--数仓大数据平台--数据中台

    很久没有更新博客了,今天主要是想谈一谈自己工作几年总结的心得. 1.浅尝辄止 数据库:基于mysql,oracle来实现数据库分析(存储在数据库,使用数据库语言直接分析,最后成报表形式). 数仓&am ...

  5. 大数据演进简史:从数仓到数据中台,谈技术选型最优解

    大家好,今天分享的议题主要包括几大内容: 带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程: 我个人认为数据中台的核心组成,以及一些技术选型参考: 数据研发是数据中台很重要的一环, ...

  6. 看这篇就明白大数据实时数仓、离线数仓、数据湖之间的关系

    数仓架构演变 20世纪70年代,MIT(麻省理工)的研究员致力于研究一种优化的技术架构,该架构试图将业务处理系统和分析系统分开,即将业务处理和分析处理分为不同层次,针对各自的特点采取不同的架构设计原则 ...

  7. 数仓实时数据同步 debezium

    数仓实时数据同步 debezium 背景 debezium 简介 架构 基本概念 例子 Router 目前遇到的问题 背景 数据湖将源库的数据同步到hive数仓ods层,或直接在kafka中用于后面计 ...

  8. 数仓和数据中台长期霸权,数据湖最稳

    随着信息化进程的加快,传统数仓越来越无法适应海量数据存储和分析的需求,天下苦数据仓库久矣! 只能存储结构化数据,无法采集存储非机构化数据: 无法存储原始数据,所有数据须经过ETL清洗过滤: 离线数仓的 ...

  9. 数仓、数据湖、湖仓一体、数据网格的探索与研究

    整理不易,转发请注明出处,请勿直接剽窃! 点赞.关注.不迷路! 摘要:了解每一代数据存储的定义.数据类型.功能.总结. 第一代:数据仓库 定义 为解决数据库面对数据分析的不足,孕育出新一类产品数据仓库 ...

最新文章

  1. sqlce wp from查询语句详解
  2. C语言中的选择法排序怎么,请问高手们 C语言中选择法排序和冒泡法排序的思想,两种方法有何不同,搞不懂,请举例详细说明一下.谢谢。...
  3. jquery easy drag
  4. eureka服务的注册、续约、下线
  5. Java编程的逻辑 (34) - 随机
  6. 网吧操作系统制作与优化
  7. PoloMeeting(视频会议系统)免费版 v6.30
  8. c语言换行用分号代替,go语言换行的地方可以用分号替代吗?
  9. Mysql 省市区字典(带层级,带经纬度,带拼音)字典版
  10. 用C语言将中文文本和英文文本合并为一段中文一段英文(翻译排版)
  11. python中什么是不等长编码_2021学堂云计算机科学和Python编程导论(自主模式)期末答案...
  12. 一文让你学会PC软件升级,学不会过来打我
  13. explicit含义
  14. 【原创】机器学习一般流程总结
  15. idog copy from,
  16. 数据预处理第6讲:正态变换
  17. 软件测试真的干到35岁就干不动了吗?
  18. linux搭建h5学习日记
  19. Android加载GIF图片的两种方式
  20. 企业内部培训和外部培训的区分

热门文章

  1. NODEMCU调试心得2 - 关于LUA
  2. 多个editText监听事件
  3. 1665B Almost Ternary Matrix
  4. 超星项目经进程2023.5.15
  5. 自动化测试之ddt数据驱动
  6. 剥开O2O这个伪命题
  7. TapinRadio Pro v2.15.3 全球电台收音机中文版
  8. 基于分段式随机惯性权重和最优反馈机制的鲸鱼优化算法
  9. POJ 2068 Nim 组合游戏
  10. vga2usb linux,VGA to USB采集器