数据仓库的分层,你知道吗?

数据仓库的分层,你知道吗?

数据仓库更多代表的是一种对数据的管理和使用的方式,它是一整套包括了数据建模、ETL(数据抽取、转换、加载)以及作用调度等在内的完整的理论体系流程。

数据仓库在构建过程中通常都需要进行分层处理。业务不同,分层的技术处理手段也不同。分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控。详细来讲,主要有如下几个原因。

  • 清晰的数据结构
    每一个数据分层都有它的作用域,在使用表的时候能更方便地定位和理解。
  • 将复杂的问题简单化
    将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的问题,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的地方开始修复。
  • 减少重复开发
    规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 屏蔽原始数据的异常
    屏蔽业务的影响,不必改一次业务就需要重新接入数据。
  • 数据血缘的追踪
    最终给业务呈现的是一个能直接使用业务表,但是它的来源很多,如果有一张来源表出问题了,借助血缘最终能够快速准确地定位到问题,并清楚它的危害范围。

数仓的常见分层一般为三层,即数据操作层、数据仓库层和应用数据层(数据集市层)。当然根据研发人员经验或者业务,可以分为更多不同的层,只要能达到流程清晰、方便查数即可。

下面,通过一张图来展示数据仓库的分层情况,如图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLJXWgit-1628676838894)(assets/1610957419545.png)]

ODS(Operation Data Store 数据准备区)

数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,也称为准备区。它们是后续数据仓库层加工数据的来源。ODS层数据的主要来源是业务数据库、埋点日志、其他数据源。

  • 业务数据库:可使用DataX、Sqoop等工具来抽取,每天定时抽取一次;在实时应用中,可用Canal监听MySQL的 Binlog,实时接入变更的数据。
  • 埋点日志:线上系统会打入各种日志,这些日志一般以文件的形式保存,可以用 Flume 定时抽取。
  • 其他数据源:从第三方购买的数据、或是网络爬虫抓取的数据。
DW(Data Warehouse 数据仓库层)

该层包含DWD、DWS、DIM层,由ODS层数据加工而成,主要是完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。

  • DWD(Data Warehouse Detail 细节数据层),是业务层与数据仓库的隔离层。以业务过程作为建模驱动,基于每个具体的业务过程特点,构建细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,也即宽表化处理。
  • DWS(Data Warehouse Service 服务数据层),基于DWD的基础数据,整合汇总成分析某一个主题域的服务数据。以分析的主题为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表。
  • DIM(公共维度层 ),基于维度建模理念思想,建立一致性维度。
  • TMP层 :临时层,存放计算过程中临时产生的数据。
ADS(Application Data Store 应用数据层)

该层是基于DW层的数据,整合汇总成主题域的服务数据,用于提供后续的业务查询等。

数据仓库层次的划分不是固定不变的,可以根据实际需求进行适当裁剪或者是添加。如果业务相对简单和独立,可以将DWD、DWS进行合并。 下面,以第三方支付企业支付宝数据仓库体系结构为例进行展示,如下图所示。

在这里插入图片描述

请添加图片描述
请添加图片描述

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据仓库分层通常包括三层: 1. 操作层(Operational Data Store,ODS):用于存储源系统中的原始数据,主要是为了支持实时查询和快速响应操作需求。这一层的数据通常不会进行过多的加工处理。 2. 数据仓库层(Data Warehouse,DW):用于存储经过ETL处理后的数据,主要是为了支持决策分析和报表查询。这一层的数据会进行一定程度的加工处理,例如去重、聚合、统计等。 3. 数据集市层(Data Mart,DM):用于存储以业务为维度的数据子集,主要是为了支持特定领域或业务部门的数据分析和决策。这一层的数据会进行更加深入的加工处理,例如数据清洗、指标计算、数据建模等。 在加工方面,数据仓库需要通过ETL(Extract-Transform-Load)过程将源系统中的数据抽取、清洗、加工、转换和加载到数据仓库中。ETL的主要过程包括: 1. 抽取(Extract):从源系统中抽取需要的数据。 2. 清洗(Clean):对抽取的数据进行清洗、去重、格式化等处理,确保数据的准确性和一致性。 3. 转换(Transform):对清洗后的数据进行加工处理,例如聚合、统计、转换、合并等,生成目标数据模型。 4. 加载(Load):将转换后的数据加载到目标数据仓库或数据集市中。 为了保证数据质量,数据仓库需要进行数据清洗、去重、补全、校验等处理。具体方法包括: 1. 数据清洗:对数据进行去噪、去重、去空等处理,确保数据的准确性和一致性。 2. 数据补全:对缺失的数据进行补全,例如通过数据关联、插值等方法补全缺失数据点。 3. 数据校验:对数据进行校验,例如检查数据类型、范围、关联性等,确保数据的完整性和可靠性。 4. 数据归一化:对数据进行归一化处理,例如将不同单位的数据转换为相同的单位,确保数据的可比性和可分析性。 5. 数据建模:对数据进行建模,例如定义维度、指标、度量等,确保数据的可理解性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值