一、ODS
1.1 ods层的定义以及职责
ODS 全称为 Operational Data Store,是操作型数据存储层。它直接从源系统抽取数据,几乎不做任何加工,保留了数据的原始格式和内容。
主要职责:
-
实现业务系统数据到数据仓库的同步,为后续的数据处理和分析提供数据来源。确保数据仓库中的数据与业务系统中的数据保持同步更新。
-
保留了数据的原始状态,方便进行数据追溯和审计。当出现数据问题或需要审查数据的变更历史时,可以通过 ODS 层快速定位问题源头和数据的变化轨迹。
-
将数据抽取到 ODS 层后,可以减少业务系统的查询压力,提高业务系统的性能。业务系统可以专注于业务处理,而数据查询和分析任务则由数据仓库来承担。
1.2 数据增量同步、全量同步的选择依据?
主要根据大小来判断,对于一些不大的表,可以选择全量同步,对于大表,可以选择增量同步。
1.3 数据漂移怎么解决?
见《数据采集与同步》
1.4 数据质量怎么保障?
-
全量表必须配置唯一性字段标识;
-
对分区空数据进行监控;
-
对枚举类型字段,进行枚举值变化和分布监控;
-
ods表数据量级和记录数做环比监控;
-
ods全表都必须要有注释;
二、DWD
2.1 DWD层在数仓体系中的定位和作用
-
定位
- 承上启下:DWD 层处于数据仓库 ods-dwd-dws-ads 架构的中间位置,承接来自 ODS 层(操作数据层的原始数据,经过处理后为上层的 DWS 层(数据服务层)和 ADS 层(数据应用层)提供高质量的数据原料。
- 隔离业务与数据仓库:是业务层和数据仓库的隔离层,保持和 ODS 层一样的数据粒度,使数据仓库的后续处理与业务系统的原始数据相对隔离,减少业务系统变化对数据仓库的直接影响。
-
作用:
- 数据清洗与规范:对ODS 层数据进行清洗和规范化操作,去除空数据、脏数据、离群值等,提高数据质量。
- 数据整合统一:将来自不同源系统、格式和语义各异的数据进行整合和统一,按照业务逻辑梳理和组织,转化为以业务过程为核心的明细事实表。
- 保留业务细节:遵循明细粒度事实层的设计理念,以业务过程为驱动构建事实表,确保每一行数据代表一个不可再分的业务原子事件,能完整保留业务细节,为深入分析业务提供基础。
- 提高查询性能:依据企业的数据使用场景和分析需求,对重要的维度属性进行适当冗余形成宽表结构,减少数据关联的复杂性,提高数据查询和分析的效率,使数据分析人员能更便捷地获取所需数据。
- 支持多维分析:为 OLAP 工具、报表生成、数据挖掘、实时分析等提供基础数据支持。可以从多个维度对数据进行分析,满足不同的业务需求。
2.2 与ODS层相比,DWD层的数据有什么特点?
-
数据处理深度
- ODS 层:数据基本保持从源系统获取时的原始状态,仅可能进行简单的清洗,如去除明显的乱码等,主要是为了实现数据的快速接入和暂存。
- DWD 层:对 ODS 层数据进行了全面的抽取、清洗、转换等处理。除了清理脏数据、空值等,还会进行数据格式统一、编码转换、数据标准化等操作,并且可能根据业务规则对数据进行衍生计算。
-
数据一致性
- ODS 层:由于数据来自不同的源系统,各系统之间的数据标准和规范不同,所以数据一致性较差,可能存在同一数据在不同系统中表述不一致、数据关联关系不清晰等问题。
- DWD 层:通过数据整合和处理,会对数据进行统一的规范和约束,消除了部分数据不一致的问题,使数据在一定程度上具有更好的一致性,便于后续的分析和应用。
-
数据应用方向
- ODS 层:主要用于满足源系统数据的临时存储需求,为业务系统的实时查询和监控提供支持,一般不直接用于复杂的数据分析。
- DWD 层:为上层的数据服务层(DWS层)和数据应用层(ADS层)提供高质量的明细数据基础,是进行多维分析、报表生成、数据挖掘、机器学习等数据处理和分析操作的重要数据来源。
-
数据存储与管理
- ODS 层:通常数据存储时间较短,主要是为了满足实时或短期的业务需求,对数据的存储格式和管理要求相对较低,一般以简单的文件或原始数据库表形式存储。
- DWD 层:数据存储时间较长,通常为几个月到几年,以便为长期的数据分析和挖掘提供数据支持。在存储方面,通常会采用分布式数据仓库或关系型数据库等,并会进行数据分区、索引等优化操作,以提高数据的存储和查询效率。
-
数据模型与结构
- ODS 层:数据模型通常与源系统的数据模型保持一致,以保留源数据的完整性和原始结构,一般不会对数据模型进行大规模的调整和优化。
- DWD 层:会根据业务需求和数据分析的要求,对数据进行建模,通常采用星型模型或雪花模型等维度建模方法,将数据组织成更适合分析的结构,可能会对维度进行退化处理,将常用的维度属性冗余到事实表中,以减少查询时的表关联操作。