本系列将持续更新数仓建模相关知识,将学习到的理论知识和工作实践结合起来,总结沉淀下来,积跬步成千里。

作者:吴珍

基本概念

数据仓库概念由世界公认的数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)中提出:

A data warehouse is a subject-oriented, integrated, nonvolatile, and time-variant collection of data in support of management’s decisions.

中文翻译为:

数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。

数据建模是将数据进行有序、有结构地分类组织和存储的方法。其思路是从企业分析决策等需求出发,建设一个数据易用、产出稳定、质量可信、指标丰富、能够提供标准化数据服务的大数据体系。该体系同时具有高扩展、强复用、低成本的特性,能够避免数据重复建设和指标冗余建设,保障数据的规范性、指标的一致性,能够有效地管理和控制日益增长的存储和计算消耗。

目前工业界流行的建模方法主要是维度建模,维度模型是由数仓领域大师Ralph Kimball所倡导的,大师著作的《The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling》是数仓工程领域最流行的维度建模经典。

数仓建设体系

有句话说得好,一个好的架构已经成功了80%。同样一个好的建模体系能释放计算消耗、存储消耗、人力资源、时间成本等。同时好的架构还有助于提供标准化的、高效的、优质的、稳定的数据服务。所以,在我们具体建模之前,不要着急动手,要先规划好我们的数据体系架构,划定边界,搭建统一规范的体系架构。

1)确定建模技术平台

建设数仓首先是需要一个好用的数据平台,网易内部用的是网易数帆旗下的网易易数,一个提供数据开发、数据治理、数据分析及可视化、数据服务、数据应用的一站式全链路数据生产力平台,有易研发、易治理、易服务、易应用的特点。

所谓好用的工具事半功倍。网易提倡“人人用数据、天天用数据”,依托于体系化的数据中台产品,搭建标准化的数仓体系。

2)定好模型层次

数据从产出原生数据到最后生成指标的过程,就像建房子要明确地基、一楼、二楼的作用一样,数据模型同样需要定义好模型层次,规划好每个层次该做什么事情,包括:明细层、轻度汇总层、主题层、应用层等。

目前应用广泛的是如下三层数据模型:

1)操作数据层(ODS)全称Operation Data Store,我们不是数据的生成者,我们是数据的搬运工,ODS层存储的就是最原始的数据,是我们即将搬运清洗的数据。

2)公共模型层,包含:

  • DWD(data warehouse detail)这层存放的是明细数据,面向业务过程建模。一方面对ODS层的数据清洗、规范化,保证数据的一致性。比如空值处理、时间格式统一、异常值处理、枚举值统一、脱敏、编码转换等。另一方面,DWD层允许退化一些常用维度在里面,减小和维表的关联次数,提升明细数据表的易用性。
  • DWS(data warehouse service)  公共汇总数据层,面向分析主题建模,为上层数据产品、分析、应用和服务等提供公共计算指标。
  • DIMdimension):公共维度表,用于建立一致性维度数据,规范化维度属性,降低数据计算口径和算法不一致风险。

3)应用数据层ADS全称Application Data Store,面向应用汇总数据,存放的是基于应用组装的数据或者产品个性化标签数据,面向实际需求,如报表等。

划分模型层次的目的是定一个标准,就像大型商场去4楼吃饭去5楼看电影,想看明细数据就去DWD层,想看维度就去DIM层。

3)梳理业务过程和维度

先来理解下业务过程、度量、维度、维度属性的含义。

  • 业务过程:指企业活动中的具体的、不可拆分的行为事件,如播放、下载、分享等都是业务过程。业务过程一般体现在DWD层模型中
  • 度量:对某一业务过程行为的度量,也称原子指标,不能继续拆分。如播放业务过程中,播放次数、播放人数等
  • 维度:维度是实体对象,描述的是度量的环境,是我们观察业务的角度。反应业务的一类属性,这类属性集合构成一个维度,比如,播放过程,度量是播放次数,维度是用户、歌曲、设备、地理、时间等。一个维度落地就是一张维表。
  • 维度属性:一个维度里面的具体属性,如用户维度的用户昵称、年龄、性别等。通俗讲就是维表的列。

搭建一个稳定的数据体系,我们需要了解数据,知道库里有什么,就需要对我们的产品功能和业务进行全盘摸底,用建模的术语就是要梳理清楚全产品所有或者重点核心业务过程及其涉及到的所有可能维度,对部门数据进行全盘了解。输出的形式是业务过程×维度矩阵,如:

业务过程

一致性维度

歌曲

用户

设备

时间

地理

播放歌曲

流量点击

×

4)划分数据域

1)数据域概念

数据仓库是面向主题的应用。主题是一个抽象概念,是在较高层次上将企业数据进行综合、归类和分析利用的一个抽象,比如用户主题、营收主题、社交主题等。主题细分的话可以分成业务主题和分析主题,业务主题面向业务过程,分析主题面向汇总层

建模除了需要横向的分层外,通常也需要根据业务特点纵向的划分数据域。数据域是指面向业务分析的,是联系较为紧密的数据主题的集合,是对业务对象高度概括的抽象归类,数据域有时候也可以称为主题域。

2)数据域层级

数据域也是有层级的,简单业务只要一层数据域,复杂业务需要两层,如果业务板块比较多的话,可能需要三层。

以网易云音乐用户为例,用户身份有:普通用户、音乐人、艺人、创作者、主播等,用户包含业务板块有:主端云音乐、直播、k歌等。那数据域可以划分三级:参与者-用户身份-具体业务板块。

3)数据域划分方法

数据域的划分可以先梳理业务过程、维度或者产品功能模块,了解现有的需求,如分析报表等,然后抽象到业务主题、分析主题,最后再整合、归类、划分、反复推敲、确认。

4)数据域注意事项

① 数据域不能轻易变动,所以我们在划分数据域的过程中,需要反复推敲和确认。

② 数据域是需要长期维护的,既要确保能涵盖当前所有业务范围,新业务出现时,要么能融合进原有的数据域,要么可以有边界地新增数据域。

③ 数据域边界不能模糊不清,一定要有明确的边界。

④ 一个维度或业务过程只能隶属于某一个数据域,某个数据域可以包含多个维度或业务过程。

按照数据域划分方法划分好数据域后,每个业务过程都有唯一的数据域。那么,业务过程×维度矩阵可以进一步扩展,构建面向业务过程的数据域×业务过程×维度的总线矩阵。

数据域

业务过程

一致性维度

歌曲

用户

设备

时间

地理

互动域

播放歌曲

日志域

流量点击

×

5)定好数据规范和开发规范

数仓是团队建设的工作,所谓一千个读者有一千个哈姆雷特,那么最好建立统一标准的数据规范和开发规范,保持指标、表、流、存储等的一致性。

这里的规范涉及到数仓建模所有过程的规范,包括不限于:

  • 模型层次调用规范
  • 数据域命名规范
  • 建表规范
  • 临时表、正式表命名规范
  • 原子指标、派生指标命名规范
  • 数据格式规范
  • 数据存储规范
  • 作业流规范
  • 枚举值规范
  • 维度规范
  • 词根规范
  • 公共字段规范
  • 计算指标来源规范
  • 指标一致性建设规范
  • 交付标准规范
  • ...

下一篇将着重介绍数仓建模的各种规范。

参考

1. Building the Data Warehouse

2. The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling

3.《大数据之路:阿里巴巴大数据实践》

作者:吴珍,网易杭州研究院数据科学中心工程师

数仓建模系列-数据体系搭建篇相关推荐

  1. 老司机带带我:数仓建模架构|维度建模剖析与案例演示

           作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群.持续系统化给大家分享一下关于数据仓库建设的经验总结.本系列既有数据仓库的形而上学理论体系,也有结合公司 ...

  2. 大数据数仓建模 - 维度建模 实战及思路过程 (两年数仓建模经验 纯干货)

    数仓维度建模 维度建模方法论: 维度建模 是以业务过程为驱动 先确定某些业务过程 围绕业务过程去建立模型 通常采用自底向上的方法 从明确关键业务过程开始 再到明确粒度 再到明确维度  最后明确事实 在 ...

  3. 数仓建模 项目_音乐数据项目火力全开,技能双倍提升!

    ↑ 点击上方"尚学堂"关注我们 音乐数据中心数仓综合项目 1项目介绍 音乐数据中心项目是大型企业级综合数仓项目,此项目针对音乐数据进行分析,构建数据仓库,建立用户.机器.内容等主题 ...

  4. 大数据数仓建模(3)

    大数据数仓建模(3) 2.2.6 人员配置参考 1.旁敲侧击的问你到底做过没有 2.你们大概规模,数据量 1整体架构 属于研发部/技术部/数据部/基础平台部,我们属于大数据组,其他还有后端项目组,前端 ...

  5. 数仓建模—数据领域常见概念与职位划分

    数据领域常见概念 随着大数据时代的普及以及国家战略层面上的数字化转型,越来越多的客户意识到了"数据"的重要性,无论是走在前面的互联网企业.银行,还是传统有一定数据积累的零售.医药行 ...

  6. 数仓建模—数据同步方案设计

    数据同步方案设计 通过前面的学习数据仓库的特性之一是集成,关于一点你可以参考我们前面的文章 数仓建模-数仓初识 数仓建模-数据集成 数据集成狭义上来说就是把未经过加工处理的.不同来源的.不同形式的的原 ...

  7. 大数据开发之数仓建模

    目录 简介 1.什么是数据模型? 2.为什么需要数据模型? 3.如何建设数据模型? 简介 每个行业都有自己的模型,但不难发现,在数据建模的方法上,它们都有着共通的基本特点. 文章主要分以下几个方面来简 ...

  8. 大数据架构详解_【数据如何驱动增长】(3)大数据背景下的数仓建设 amp; 数据分层架构设计...

    背景 了解数据仓库.数据流架构的搭建原理对于合格的数据分析师或者数据科学家来说是一项必不可少的能力.它不仅能够帮助分析人员更高效的开展分析任务,帮助公司或者业务线搭建一套高效的数据处理架构,更是能够从 ...

  9. 数仓建模—数仓架构发展史(02)

    发展史 时代的变迁,生死的轮回,历史长河滔滔,没有什么是永恒的,只有变化才是不变的,技术亦是如此,当你选择互联网的那一刻,你就相当于乘坐了一个滚滚向前的时代列车,开往未知的方向,不论什么样的技术架构只 ...

  10. 数仓建模本质到底是什么?为什么维度建能模脱颖而出?

    作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群.持续系统化给大家分享一下关于数据仓库建设的经验总结.本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践,既 ...

最新文章

  1. 提高云计算中的软件质量
  2. 全国计算机等级考试题库二级C操作题100套(第21套)
  3. JavaScript 设计模式核⼼原理与应⽤实践 之 开篇:前端工程师的成长论
  4. SqlMap自动化SQL注入测试工具简绍
  5. ROS学习笔记三:创建ROS软件包
  6. javascript函数参数的传递问题
  7. 三星折叠屏手机出事!才用两天就“挂了”
  8. java Array 需要包_我编写的程序提示没有Arrays类,导入不了java.util.Arrays包,附程序。...
  9. C# FileStream
  10. spring AOP概念及xml配置
  11. linux 安装萍方字体,苹方字体大全-苹果苹方字体全套打包下载【windows完整免费版】-西西软件下载...
  12. R从网页抓取到文本分析全教程:影评的获取与分析
  13. 【.Net】asp.net 把图片从CMYK印刷模式转换为RGB原色模式
  14. 专利代理人的真实工作状况
  15. chrome设置socket5代理
  16. Java笔记 - 黑马程序员_06(Stream,字节流,字符流,对象流(序列化流),属性集(Properties))
  17. 18 个 JavaScript 入门技巧
  18. 2021年最后一天,学点Selenium玩点新鲜~新的一年,让分布式测试有更多玩法
  19. PS制作 LOGO图片
  20. JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...

热门文章

  1. 这么卷,非逼我用RTX 3090?(深度学习GPU平台种草
  2. HTML5的出现是否会让Flash和Silverlight无用武之地?
  3. xxx.xxx传说中的全球域名最高境界
  4. C++内存管理,非常好的一篇文章
  5. 软件开发模型(Softwarenbsp;Devel…
  6. 解决“学生管理系统”项目打不开问题
  7. Subprime Fibonacci Sequence(埃氏筛 模拟)
  8. mgre作业(未完成)
  9. 2023软件设计师真题解析(上半年-上午题)
  10. idea Springboot 校园助学贷款系统VS开发mysql数据库web结构java编程计算机网页源码maven项目