数仓概述

1、什么是数据仓库(数仓定义)

数据仓库 Data Warehouse,是为企业所决策制定过程,提供所有支持类型的数据集合。用于分析性报告和决策支持。数仓是一个面向主题、集成的、相对稳定、反映历史变化的数据集合,随着大数据技术的发展,其作用不再局限于决策分析、还可以为业务应用、审计、追踪溯源等多方面提供数据支撑,帮助企业完成数字化转型。

2、数据仓库特点

面向主题

普通的操作型数据库主要面向事务性处理,而数据仓库中的所有数据一般按照主题进行划分。主题是对业务数据的抽象,是从较高层次上对信息系统中的数据进行归纳和整理。

面向主题的数据可以划分成两部分

  1. 根据原系统业务数据的特点进行主题的抽取。

  2. 确定每个主题所包含的数据内容。例如客户主题、产品主题、财务主题等;而客户主题包括客户基本信息、客户信用信息、客户资源信息等内容。

分析数据仓库主题的时候,一般方法是先确定几个基本的主题,然后再将范围扩大,最后再逐步求精

集成性

面向操作型的数据库通常是异构的、并且相互独立,所以无法对信息进行概括和反映信息的本质。而数据仓库中的数据是经过数据的抽取、清洗、切换、加载得到的,所以为了保证数据不存在二义性,必须对数据进行编码统一和汇总,以保证数仓内的数据一致性,消除冗余数据。

稳定性

数据仓库中的数据反映的都是一段历史时期的数据内容,它的主要操作是查询、分析而不进行一般意义上的更新(操作型数据库主要完成数据的增加、修改、删除、查询),一旦某个数据进入到数据仓库后,一般情况下数据会被长期保留,超过规定的期限才会被删除。通常数据仓库需要做的工作就是加载、查询和分析,一般不进行修改操作。

反映历史变化

数据仓库不断从操作型数据库或其他数据源获取变化的数据,从而分析和预测需要的历史数据,所以一般数据仓库中数据表的维度与事实表中都含有时间键,以表明数据的历史时期信息,然后不断增加新的数据内容。通过这些历史信息可以对企业的发展历程和趋势做出分析和预测。数据仓库的建设需要大量的业务数据作为积累,并将这些宝贵的历史信息经过加工、整理,最后提供给决策分析人员,这是数据仓库建设的根本目的。

3、数据库和数据仓库的区别

数据库用于OLTP,主要用于操作型处理 数据库是面向事物处理的,数据是由日常的业务产生的,常更新;数据库一般用来存储当前事务性数据,如交易数据、业务数据;数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入;

数据仓库用于OLAP,支持管理决策。数据仓库是面向主题的,数据来源多样,经过一定的规则转换得到,用来分析。数据仓库一般存储历史数据。数据仓库的设计一般不符合三范式,并且反规划范,有利于查询。

4、数仓构建流程

1) 数据调研、划分主题域

通过与业务部门的交流,了解建立数仓要解决的问题,确定数据分析或前端展现的主题和各个主题下的查询分析要求。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系。

2) 明确统计指标

确定主题后,需要考虑分析的各种指标。它们一般为数据值型数据,量度是要统计的指标,必须事先选择恰当,基于不同的度量可以进行复杂关键性指标(KPI)的设计和计算。

3) 构建总线矩阵

明确业务过程和维度所属主题域、明确维度与业务过程的关系,最后形成一个总线矩阵图表。

4) 构建明细模型

DIM公共维度层 (DIM)公共维度层由维度表构成,基于维度建模理念,建立整个企业的一致性维度。维度是逻辑概念,是衡量和观察业务的角度。在划分数据域、构建总线矩阵时,需要结合对业务过程的分析定义维度。

构建明细事实表DWD,将原始数据表和各个维度表进行关联,生成事实表。

5) 构建汇总模型

根据衍生指标和派生指标构建DWS

6) ETL以及代码实现

数据清洗转换和传输。业务系统中的数据加载到数据仓库之前,必须进行数据的清洗和转换,保证数据仓库中数据的一致性。

7) 数仓应用、结果验证

开发数据仓库的分析应用。满足业务部门对数据进行分析的需求。

8) 数仓管理

元数据治理、数据质量监控、数据血缘管理

5、数仓分层概述

ods:operation data store原始数据层, 数据保持原貌不做处理,ODS层是数据仓库准备区,为DWD层提供基础原始数据,可减少对业务系统的影响

dmi:公共维度层 公共维度层由维度表构成,基于维度建模理念,建立整个企业的一致性维度。

dwd:data warehouse detail明细数据层 结构和粒度与原始表保持一致,通过维表与ods层数据进行清洗关联得到(去除空值,脏数据) 是业务层与数据仓库的隔离层

dws:data warehouse service数据服务层 数据轻度汇总。基于dwd上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表

ads:application data store 数据应用层 为各种统计报表提供数据 该层主要是提供数据产品和数据分析使用的数据,一般会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。例如:我们经常说的报表数据,或者说那种大宽表,一般就放在这里。

6、数仓为什么要分层

把复杂问题简单化

将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。

清晰数据结构:

每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

空间换时间、减少重复开发。

通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。通过开发一些通用的中间层数据,能够减少极大的重复计算。

数据之间解耦合:

分层后不必改一次业务就重新接入数据。

而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

7、维度建模选择:星型、雪花、星座

星型模型

一张事实表,根据主键关联多张一级维度表

星型架构是一种非规范化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余。很多统计查询不需要做外部的连接,通过冗余换取运行效率。

雪花模型

雪花模式是星型模式的扩展,其中某些维表被规范化,进一步分解到附加维度表中。

优点是:通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。

星座模型

星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。常用于数据关系更复杂的场景。也称事实星座模型。

比较

1、雪花模型在维度表、事实表之间的连接很多,因此性能方面会比星型模型低。

2、雪花模型使用的是规范化数据,数据冗余来减少数据量。其维度层级和维度信息都存储在数据模型之中。星形模型是反规范化数据,数据存在冗余,维度直接关联事实表,维度层级清晰明了。

3、雪花模型在设计上更加复杂,由于附属维度的限制,ETL复杂且不能并行化。星形模型加载维度表,不需要添加附属维度层级,ETL相对简单,可以实现高度的并行化。

4、雪花模型使得维度分析更加容易,比如“针对特定的广告主,有哪些客户或者公司是在线的?”。星形模型用来做指标分析更适合,比如“给定的一个客户他们的收入是多少?”

对比维度 维度表 事实表
本质 业务维度的描述性信息 业务事件的量化度量值
数据量 较小(数千到百万行) 较大(百万到十亿行)
更新频率 低(定期更新) 高(实时或高频更新)
字段类型 文本、枚举值为主 数值型度量值为主
查询作用 提供筛选、分组条件 提供可聚合的指标
设计核心 一致性、层次化 粒度、维度关联

8、数仓上层应用有哪些

用户画像,运营平台,精准营销,推荐系统等

9、维度建模和范式建模

范式建模法主要用于关系型数据库的数据存储,主要用于业务系统,分为实体表与关系表,可以解决数据冗余,插入,修改,删除异常的问题。围绕实体表与关系表。目前OLTP业务系统中大多采用的是三范式建模法。特点:设计思路自上而下,适合上游基础数据存储,同一份数据只存储一份,没有数据冗余,方便解耦,易维护,缺点是开发周期一般比较长,维护成本高。

维度建模主要包括雪花模型、星型模型、星座模型,围绕事实表和维度表进行,利用维度建模方法建设一致维度的数据集市。通过一致性维度可以将数据集市联系在一起,由所有的数据集市组成数据仓库。特点:构建迅速,最快的看到投资回报率,敏捷灵活;

数仓的意义在于:

减少重复开发,在数据开发的过程中可以产生中间层,将公共逻辑下沉,减少重复计算;清晰数据结构,每个分层分工明确,方便开发人员理解;方便定位问题,通过分层了解数据血缘关系,在出问题的时候通过回溯定位问题;简单化复杂问题,和分治法思想类似,分而治之,将复杂的问题简单化,还能解耦。

10、怎么理解元数据?

  1. 业务元数据 描述 "数据"背后的业务含义。主题定义:每段 ETL、表背后的归属业务主题。业务描述:每段代码实现的具体业务逻辑。标准指标:类似于 BI 中的语义层、数仓中的一致性事实;将分析中的指标进行规范化。标准维度:同标准指标,对分析的各维度定义实现规范化、标准化。不断的进行维护且与业务方进行沟通确认。

  2. 技术元数据 数据源元数据:例如:数据源的 IP、端口、数据库类型;数据获取的方式;数据存储的结构;原数据各列的定义及 key 指对应的值。

  3. ETL 元数据:根据 ETL 目的的不同,可以分为两类:数据清洗元数据;数据处理元数据。数据清洗,主要目的是为了解决掉脏数据及规范数据格式;因此此处元数据主要为:各表各列的"正确"数据规则;默认数据类型的"正确"规则。数据处理,例如常见的表输入表输出;非结构化数据结构化;特殊字段的拆分等。源数据到数仓、数据集市层的各类规则。比如内容、清理、数据刷新规则。

  4. 数据仓库元数据:数据仓库结构的描述,包括仓库模式、视图、维、层次结构及数据集市的位置和内容;业务系统、数据仓库和数据集市的体系结构和模式等。

  5. BI 元数据:汇总用的算法、包括各类度量和维度定义算法。数据粒度、主题领域、聚集、汇总、预定义的查询与报告。

  6. 管理元数据 管理领域相关,包括管理流程、人员组织、角色职责等。

数据架构

img

img编辑

数据层的存储一般如下:

Data Source:数据源一般是业务库和埋点,当然也会有第三方购买数据等多种数据来源方式。业务库的存储一般是Mysql 和 PostgreSql。

ODS 层:ODS 的数据量一般非常大,所以大多数公司会选择存在HDFS上,即Hive或者Hbase,Hive居多。

DW 层:一般和 ODS 的存储一致,但是为了满足更多的需求,也会有存放在 PG 和 ES 中的情况。

ADS 层:应用层的数据,一般都要求比较快的响应速度,因此一般是放在 Mysql、PG、Redis中。

按业务分类汇总数据源,ODS层不同来源的日志文件汇总成一张表,保存到DWD层;从DWD层中选取业务关注的核心维度来做聚合操作,比如只保留人、商品、设备和页面区域维度,以此类推生成很多个DWM的中间表;从DWM层抽取数据,将一个人在整个网站中的行为数据放到一张表中,到DWS层,这就是我们的宽表了,可以快速满足大部分的通用型业务需求;

最后,在APP应用层,根据需求从DWS层的一张或者多张表取出数据拼接成一张应用表即可。

从能力范围来讲,**我们希望80%需求由20%的表来支持。直接点讲,就是大部分(80%以上)的需求,都用DWS的表来支持就行,DWS支持不了的,就用DWM和DWD的表来支持,这些都支持不了的极少一部分数据需要从原始日志中捞取。结合第一点来讲的话就是:80%的需求,我们都希望以对应用很友好的方式来支持,而不是直接暴露给应用方原始日志。**

🍋一、ODS(Operational Data Store)——操作数据存储

ODS概述

ODS作为数据仓库的起点,承载着连接源系统与数据仓库其他层次的重要任务。它不仅是原始数据的存储地,也是数据清洗、整合的出发点。通过合理设计和管理ODS层,企业可以确保数据的完整性、实时性和可用性,从而为后续的分析和决策提供坚实的基础。

ODS是什么?

ODS(操作数据存储)是数据仓库架构中的第一层,主要用于存储从多个业务系统中采集的原始数据。这些数据可能来自ERP、CRM、日志系统、传感器数据或第三方平台等多种来源。ODS类似于一个“原材料仓库”,为数据仓库提供未经加工的数据。

ODS的核心特点
  • 实时性强:ODS中的数据通常与业务系统保持高度同步,能够近实时地获取最新数据。

  • 未加工状态:ODS中的数据基本是“原生态”的,未经任何清洗或加工,可能包含重复、不一致甚至错误的信息。

  • 多样性和复杂性:数据格式多样,包括结构化、半结构化或非结构化数据。

  • 生命周期短:ODS不是数据的长期存储地,数据会随着时间被迁移到其他层或被清理。

ODS的作用
  • 统一数据入口:作为数据仓库的“统一入口”,从不同来源系统获取的数据会首先进入ODS进行存储。

  • 提供原始数据:后续的清洗、分析、建模等操作都需要基于原始数据,ODS的完整性对整个数据链条的可靠性至关重要。

  • 支持轻量级查询:在某些场景下,ODS也可用于轻量级的实时查询或分析。

  • 数据备份和恢复:作为业务系统数据的备份点,为应对突发情况提供支持。

ODS的典型场景
  • 实时订单流处理:在电商平台中,用户下单行为会立即记录到ODS中。

  • 跨系统数据整合:将CRM系统中的客户信息和ERP系统中的订单信息整合到ODS中。

  • 日志存储和初步分析:网站用户的访问日志首先进入ODS,随后进行清洗和行为分析。

  • 设备数据采集:工业场景下,来自传感器或机器设备的数据会直接写入ODS。

ODS的常见问题与应对策略
  • 数据量过大,存储成本高:使用高效的压缩技术和分区存储策略。

  • 数据质量问题:设计基础的校验机制,如主键重复检查或字段完整性校验。

  • 多源数据格式不一致:建立标准化的字段映射规则。

ODS与其他层的关系

ODS为DWD层提供最基础的数据来源。数据从ODS进入DWD时,需要进行清洗和规范化处理。ODS需要满足高频数据写入和快速读取的要求,而DWD更注重清洗后的数据质量。

ODS技术实现的关键点
  • ETL工具:借助流行的ETL工具实现多源数据的采集、导入与基本清洗。

  • 存储技术:选择合适的存储技术来支撑高频的数据写入需求。

  • 数据监控:建立数据质量监控系统,实时检测ODS中的数据异常情况。

ODS的发展趋势
  • 实时化趋势:引入流式计算框架实现高频数据流的实时写入和处理。

  • 云原生化:借助云服务降低本地存储的成本,提高弹性和可扩展性。

  • 智能化数据管理:利用AI技术对ODS中的数据质量进行智能化监控和优化。

  • img

  • img

🍋二、DWD(Data Warehouse Detail)——数据仓库明细层

DWD概述

DWD是数据仓库架构中的第二层,主要负责接收ODS或其他来源的数据,并进行初步的清洗、转换和整合。这一层的数据通常是按天或按小时细粒度的,并且保留了原始数据的大部分细节。DWD的目的是为后续的数据处理和分析提供一个干净、一致的数据基础。

DWD的核心特点
  • 细粒度数据:DWD中的数据通常是按天或按小时细粒度的。

  • 数据清洗和整合:对ODS中的数据进行清洗、去重、填补缺失值等操作,并整合不同来源的数据。

  • 数据规范化:将不同格式的数据规范化为统一的标准格式。

DWD的作用
  • 提供干净、一致的数据基础:为后续的数据处理和分析提供可靠的数据源。

  • 支持复杂查询和分析:经过清洗和整合后的数据更适合进行复杂的查询和分析。

DWD的典型场景
  • 订单明细数据处理:将ODS中的订单数据清洗后存储到DWD中,以便后续分析。

  • 客户信息整合:将来自不同系统的客户信息整合到DWD中,形成统一的客户视图。

DWD的常见问题与应对策略
  • 数据清洗复杂度高:设计合理的清洗规则和流程,利用自动化工具提高效率。

  • 数据整合难度大:建立统一的数据模型和字段映射规则,确保数据的一致性和准确性。

DWD与其他层的关系

DWD接收来自ODS的数据,并进行清洗和整合后,为DWS层提供数据支持。同时,DWD也可以作为某些查询和分析的直接数据源。

DWD技术实现的关键点
  • 数据清洗工具:利用数据清洗工具(如Apache Spark、Pandas等)进行数据的清洗和转换。

  • 数据整合技术:使用数据整合技术(如ETL工具、SQL等)将不同来源的数据整合到一起。

  • 数据存储技术:选择合适的存储技术(如Hadoop HDFS、分布式数据库等)来存储DWD层的数据。

🍋三、DWS(Data Warehouse Summary)——数据仓库汇总层

DWS概述

DWS是数据仓库架构中的第三层,它基于DWD层的数据进行进一步的汇总和聚合。这一层的数据通常是按天、周、月等更粗的粒度进行汇总的,目的是为了支持更高级的分析和报告需求。DWS层的数据通常更加简洁和高效,适合进行快速查询和分析。

DWS的核心特点
  • 数据汇总和聚合:对DWD层的数据进行进一步的汇总和聚合。

  • 粗粒度数据:DWS中的数据通常是按天、周、月等更粗的粒度进行汇总的。

  • 高效查询:经过汇总和聚合后的数据更适合进行高效的查询和分析。

DWS的作用
  • 支持高级分析和报告:为管理层和业务人员提供汇总后的数据,支持决策和分析。

  • 提高查询效率:汇总后的数据减少了数据量,提高了查询效率。

DWS的典型场景
  • 销售数据分析:将DWD中的销售数据按月度汇总,形成销售报表。

  • 客户行为分析:将DWD中的客户行为数据按周汇总,分析客户行为趋势。

DWS的常见问题与应对策略
  • 数据汇总规则复杂:设计合理的汇总规则,确保数据的准确性和一致性。

  • 查询性能问题:优化查询语句和索引,提高查询效率。

DWS与其他层的关系

DWS基于DWD层的数据进行汇总和聚合,为ADS层提供数据支持。同时,DWS也可以作为某些高级分析和报告的直接数据源。

DWS技术实现的关键点
  • 数据汇总技术:使用数据汇总技术(如SQL、Apache Spark等)对DWD层的数据进行汇总和聚合。

  • 数据存储技术:选择合适的存储技术(如分布式数据库、列式存储等)来存储DWS层的数据。

  • 查询优化技术:利用查询优化技术(如索引、分区等)提高查询效率。

🍋四、ADS(Application Data Store)——应用数据存储

ADS概述

ADS是数据仓库架构中的最后一层,它通常包含从DWD或DWS层中抽取、转换和加载(ETL)的数据,以满足特定应用或服务的性能、可扩展性和安全性要求。ADS层的数据可能更加定制化,以支持特定的业务逻辑和查询模式。

ADS的核心特点
  • 定制化数据:ADS中的数据是根据特定应用或服务的需求进行定制化的。

  • 高性能:ADS层的数据存储和查询性能需要满足特定应用或服务的要求。

  • 安全性:ADS层的数据需要保证安全性和隐私性,防止数据泄露和滥用。

ADS的作用
  • 支持特定应用或服务:为特定应用或服务提供定制化的数据存储和查询支持。

  • 提高数据可用性:通过优化数据存储和查询性能,提高数据的可用性。

ADS的典型场景
  • 在线分析处理(OLAP):为数据分析人员提供在线分析处理支持,快速响应查询请求。

  • 实时数据分析:为实时数据分析应用提供数据存储和查询支持。

ADS的常见问题与应对策略
  • 数据定制化需求复杂:根据应用或服务的需求设计合理的定制化方案。

  • 性能瓶颈:优化数据存储和查询性能,避免性能瓶颈。

  • 安全问题:加强数据安全措施,确保数据的机密性和完整性。

ADS与其他层的关系

ADS基于DWD或DWS层的数据进行定制化处理和存储,为特定应用或服务提供支持。同时,ADS也可以作为某些实时分析或查询的直接数据源。

ADS技术实现的关键点
  • 数据定制化技术:使用数据定制化技术(如ETL工具、SQL等)根据需求进行数据处理。

  • 高性能存储技术:选择合适的存储技术(如内存数据库、分布式数据库等)来满足高性能需求。

  • 安全技术:采用数据加密、访问控制等安全技术来保护数据的机密性和完整性。

img

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐