数据仓库之内容建设(架构、分层、主数据、指标体系、词根、血缘)
数仓主要是围绕着数据使用方与数据开发方诉求进行建设;因此在开始规划数仓建设时,需要先剖析各方需求、痛点与痒点,然后再在这些诉求设计解决方案与确定建设内容。
01 数仓建设思路
数据使用方主要诉求是能不能快速找到、找到怎么用、有哪些数据?在使用数据时,主要存在三大类问题:
找不到,不知道数据有没有、在哪里。
看不懂,有很多业务方不是技术研发团队的,看不懂数据到底什么含义、怎么关联查询、来源于哪个业务系统。
不会用,如何写 SQL 或者哪些产品里面能查询到自己想要的数据指标。
因此针对数据使用方,在数仓建设过程中需要满足:找得到、看得懂、用得对。而数据开发工程师更多是关注数据开发便利性、高效性与快速定位问题。因此数据开发方主要是以下几点诉求:
数据复用:数据需求烟囱式开发,导致了大量重复逻辑代码的研发,通过数据复用可以缩短数据需求交付,提高数据开发效率,满足业务对数据的敏捷研发要求。
问题追踪:在数据处理过程与数据质量分析过程可以快速定位问题源头。
影响分析:可以快速高效对数据规则修改或数据上下架影响进行分析。
02 数仓建设内容
明确数仓建设目标之后,主要是从以下几个方面搭建数仓能力:
分层架构:分层架构可以简化数据清洗的过程、为数据与模型可复用提供基础。
主数据管理:通过主数据打通各业务链条,统一数据语言,统一数据标准,实现数据共享。
指标体系:指标体系就是将各个指标按照特定的框架组织起来,从而统一指标名称及口径定义,理清指标间构成关系,避免重复建设
词根管理:通过词根可以用来规范表名、字段名、主题域名等等。
数据血缘:数据溯源、数据价值与质量评估。
03 数仓分层架构设计
通过数据分层管理可以更好组织、管理与维护数仓数据,简化数据开发工作,每一层的处理逻辑相对简单与容易理解,也比较容易保证每一个步骤的正确性,从而简化数据清洗的过程。分层是在利用空间换时间,通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量冗余的数据;不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。
通过数据分层为数据与模型可复用提供基础,很多数据质量问题是因为我们数据与模型无法复用导致业务口径与技术口径无法统一;新的需求,都从原始数据重新计算,从而衍生出很多数据质量问题。数仓分层一般如下:
ODS 层:加载与处理业务系统源数据的临时区。ODS 是面向系统,贴源迁移。不改变数据结构和数据粒度,但需清洗脏数据。
DWD:企业唯一的、集成的、准确的数据版本。数据按主题域组织,数据结构按实体和关系重构,数据粒度保留最细。使用 E-R 建模。
DWS:面向业务,维度建模。数据按业务过程组织,数据结构按事实表和维度表重构,数据粒业务度按需汇总。
ADS:面向应用场景使用适合的工具提升数据存储与处理的效率,从而提供数据服务。
04 数仓指标体系设计
指标是一个可以量化目标事物多少的数值,有时候也称为度量,如:DNU、留存率等都是指标。指标体系就是将各个指标按照特定的框架组织起来,从而统一指标名称及口径定义,理清指标间构成关系,避免重复建设。下图是指标体系示例。
业务过程:业务过程是企业活动中不可拆分的行为事件。
维度/属性:维度是观察和分析业务过程的角度,属性是描述维度的信息。
原子指标:原子指标是对具体业务过程的度量或对具体维度/属性的计数,具有明确的业务含义且在逻辑层面不可再拆分。
修饰词:修饰词是对原子指标进行修饰限定的词汇,对应着明确的业务场景和业务规则,用于圈定原子指标业务统计的范围。
派生指标:派生指标是原子指标与一个或多个修饰词的组合。
复合指标:原子指标和派生指标经过叠加公式所计算出来的直接结果。
05 数仓的词根管理
词根是企业最细粒度业务术语,是维度和指标管理的基础,通过词根可以用来统一表名、字段名、主题域名;建立和维护可收敛的词根库,业务域、主题域我们都可以用词根的方式枚举清楚,不断完善,粒度也是同样的,主要的是时间粒度、日、月、年、周等,使用词根定义好简称,数仓开发的字段命名也可以使用词根进行组合;划分为普通词根与专有词根
普通词根:描述事物的最小单元体,如:交易-trade。
专有词根:具备约定成俗或行业专属的描述体,如:美元-USD。
词根示例如下:
06 数仓的数据血缘管理
数据的处理过程中,从数据源头到最终的数据生成,每个环节都可能会导致我们出现数据质量的问题。比如我们数据源本身数据质量不高,在后续的处理环节中如果没有进行数据质量的检测和处理,那么这个数据信息最终流转到我们的目标表,它的数据质量也是不高的。也有可能在某个环节的数据处理中,我们对数据进行了一些不恰当的处理,导致后续环节的数据质量变得糟糕。因此,对于数据的血缘关系,我们要确保每个环节都要注意数据质量的检测和处理,那么我们后续数据才会有优良的基因,即有很高的数据质量。
数据血缘关系的作用
数据溯源:数据的血缘关系,体现了数据的来龙去脉,能帮助我们追踪数据的来源,追踪数据处理过程。
评估数据价值:数据的价值在数据交易领域非常重要,数据血缘关系,可以从数据受众、数据更新量级、数据更新频次几方面来给数据价值的评估提供依据。
数据质量评估:从数据质量评估角度来看,清晰的数据源和加工处理方法,可以明确每个节点数据质量的好坏。从数据的血缘关系图上,可以方便地看到数据清洗的标准清单。
数据归档、销毁的参考:从数据生命周期管理角度来看,数据的血缘关系有助于我们判断数据的生命周期,是数据的归档和销毁操作的参考。
数据血缘示例图如下:
推荐阅读:
世界的真实格局分析,地球人类社会底层运行原理
不是你需要中台,而是一名合格的架构师(附各大厂中台建设PPT)
企业IT技术架构规划方案
论数字化转型——转什么,如何转?
华为干部与人才发展手册(附PPT)
企业10大管理流程图,数字化转型从业者必备!
【中台实践】华为大数据中台架构分享.pdf
华为的数字化转型方法论
华为如何实施数字化转型(附PPT)
超详细280页Docker实战文档!开放下载
华为大数据解决方案(PPT)
数据仓库之内容建设(架构、分层、主数据、指标体系、词根、血缘)相关推荐
- 数据仓库架构分层设计
数据仓库架构分层设计包括STG(数据缓冲层).ODS(数据操作层).DWD(数据明细层).DWS(主题汇总层)和ADM(数据应用层). 1.STG层 主要完成业务系统结构化数据引入到数据中台,保留业务 ...
- 大数据环境下互联网行业数据仓库/数据平台的架构之漫谈
导读: 整体架构 数据采集 数据存储与分析 数据共享 数据应用 实时计算 任务调度与监控 元数据管理 总结 一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧.我一直是在互联网行业,就以互联网行业 ...
- .Net微服务实战之技术架构分层篇
一拍即合 上一篇<.Net微服务实战之技术选型篇>,从技术选型角度讲解了微服务实施的中间件的选择与协作,工欲善其事,必先利其器,中间件的选择是作为微服务的基础与开始,也希望给一直想在.Ne ...
- 如何建设教育信息化评价指标体系?
原创 CERNET 中国教育网络 2020-09-16 在教育信息化生态系统中,有三大推动力量:教育信息化评价指标体系制定.评估工作开展和评估建模分析,这三者相互依赖.相互影响. 01高校信息化建设的 ...
- 前端架构-分层而治,铁打的MV流水的C
前端架构-分层而治 为什么在web前端很少有人会提到分层架构,例如经典MVC架构,这是因为浏览器诞生之初就只是作为一个后端数据的GUI渲染器.也就是说整体来看,web1.0时代的整个web前端工程就是 ...
- GAMES104实录 | 引擎架构分层(下) part2
本期为GAMES104<现代游戏引擎:从入门到实践>视频公开课文字实录第7期.本课程由GAMES(图形学与混合现实研讨会)发起,游戏引擎技术专家王希携手游戏引擎一线开发者共同研发. 课程共 ...
- MyBatis 架构分层与模块划分-基础支持层
最后一个就是基础支持层.基础支持层主要是一些抽取出来的通用的功能(实现复用),用来支持核心处理层的功能.比如数据源.缓存.日志.xml 解析.反射.IO.事务等等这些功能. 这个就是MyBatis 的 ...
- 网银系统服务器架构设计,网上银行建设架构精选.pdf
网上银行建设架构精选 维普资讯 瞄 狮 ∥. 一 f亟 设架构 官帆 :. 目前 .世界各地有很多银行及其它企业正尝试 具体实现帐务查询和实时交易功能,总行.分行实现 引导客户使用网络 电子交易服务 ...
- asp.net core系列 71 Web架构分层指南
一.概述 本章Web架构分层指南,参考了"Microsoft应用程序体系结构指南"(该书是在2009年出版的,当时出版是为了帮助开发人员和架构师更快速,更低风险地使用Microso ...
- ThinkPHP6项目基操(9.架构分层)
架构分层 一.分层意义 二.代码架构 三.common层设计 四.实践代码 一.分层意义 意义我觉得最重要的是方便维护,如果代码没有分层,都是写在控制器里,包括了各种参数校验,各种情景判断,各种数据查 ...
最新文章
- IDEA IntelliJ 如何给web项目配置tomcat
- SAP SD 以PDF格式显示BILLING的输出格式
- const 在C++中的区别
- mybatis框架总体说明---Mybatis学习笔记(二)
- oracle 分页查询
- 菜鸟+Hologres=智能物流
- java axis2 教程_webservice的Axis2入门教程java版
- matlab中noisbloc,基于小波变换的微弱信号检测技术的研究.doc
- Golang 项目布局浅析
- 奥巴马:乔布斯改变我们每个人看世界的方式
- [基础]sizeof和strlen
- Java三大体系JavaSE、JavaEE、JavaME的区别
- 信息系统项目管理师论文范围管理范文(2021上半年范围管理论文)
- Python编程基础及应用
- 前5名:Raspberry Pi龙卷风警告系统,用于物联网开发的4个开放式开发板等
- 定制化件T恤其实很简单,您需要了解的有以下几点
- 恢复Cisco 2960交换机密码
- DD虚拟按键驱动免费下载
- [计算机数值分析]迭代法求根过程的加速
- [CF891E]Lust
热门文章
- 苹果手机微信怎么接龙_【手机】微信接龙
- Android手机摄像头作为PC摄像头开发
- Linux基础命令(2)
- 有趣的算法:捞鱼问题
- phusion passenger standalone
- 关于小米手机USB传输稍大点的文件老中断的问题解决方法!
- “天才少年” 27岁华为副总裁 百度CTO 成为阶下囚的传奇经历
- RN 入门(二)—基础知识
- 双六(挑战程序设计竞赛)
- matlab 求卡方值,谁能用spss或者sas帮我做一个统计数据分析 ,求出卡方值和P值。谢谢!急需!!!!...