数仓分层

分层的意义

清晰数据结构体系

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

数据血缘追踪

由于最终给业务呈现的是一个能直接使用的业务表,但是表的数据来源有很多,如果有一张来源表出问题了,我们希望能够快速准确的定位到问题,并清楚它的影响范围,从而及时给到业务方反馈,从而将损失降到最低

减少重复开发和资源浪费

  • 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
  • 清晰明了的结构使得开发、维护的成本降低;
  • 减少重复计算和存储的资源浪费;

复杂问题简单化

将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

统一数据口径

通过数据分层提供统一的数据出口,统一对外输出的数据口径,这往往就是我们说的数据应用层。

典型数据仓库分层

数据分层

ODS层

ODS层通常包含多个数据源,包括企业内部的各种业务系统、外部的数据供应商、第三方数据服务等。这些数据源通常具有不同的数据格式、结构、语义和质量,因此需要进行一系列的数据处理和转换,以使其能够被有效地集成到数据仓库中。

ODS层的数据处理主要包括以下几个方面:

  • 数据抽取:从各个数据源中抽取数据,包括全量抽取和增量抽取等方式。

  • 数据清洗:对抽取到的数据进行清洗和去重,确保数据的一致性和准确性。

  • 数据集成:将清洗后的数据进行整合和集成,以生成一个一致的、可信的、实时的数据集。

  • 数据同步:将ODS层的数据同步到下一层,即DWD层,以供后续的数据处理和分析。

ODS层的数据模型通常是基于源系统中的数据模型进行设计,其主要目的是将不同的数据源中的数据整合到一个统一的数据集中,并尽量保证数据的质量和可用性。ODS层的数据通常是面向业务过程和业务事件的,包含大量的原始业务数据和事件流数据,可以为企业提供实时的数据集成和分析能力。

ODS层是数据仓库架构中的第一层,主要负责数据集成和整合,将多个数据源中的数据进行清洗、整合和同步,为后续的数据仓库处理提供原始数据。ODS层的数据模型通常是基于源系统中的数据模型进行设计,其主要目的是将不同的数据源中的数据整合到一个统一的数据集中,并尽量保证数据的质量和可用性。

DWD层

数据仓库的DWD层(Data Warehouse Detail Layer)是整个数据仓库架构中的核心层次,也是数据仓库的基础层,它主要用于存储处理过的数据。

DWD层是对原始数据进行清洗、整合、标准化和去重等处理,将数据转化为面向主题的数据集。在DWD层,数据会被按照主题进行建模,即按照不同的业务领域或业务流程进行分类和组织。这种建模方法被称为主题建模,它是数据仓库架构的核心特点之一。

DWD层的主要任务是将原始数据转换成具有较高质量和较高复用性的数据集,使得数据在后续的处理和分析过程中更加容易理解和使用。DWD层的数据一般不包括计算和汇总的结果,而是以最原始的形式存储,这样可以保证数据的完整性和准确性,并支持更灵活的分析和查询操作。

DWD层的数据模型通常以星型模型或雪花模型为主,其中,星型模型包括一个中心的事实表和多个维度表,每个维度表代表一个业务维度,包含相关的属性和描述信息,事实表则包含与这些业务维度相关的度量值;而雪花模型则是在星型模型的基础上,对一些维度表进行进一步的规范化,使得数据更加清晰和精细。

DWD层的数据来源包括多个数据源,例如传感器、设备、应用程序、数据采集系统等等。在ETL过程中,数据会经过多次转换和清洗操作,以保证数据的质量和完整性,例如数据清洗、数据标准化、数据合并、数据分割、数据重构等等。

DWD层是数据仓库架构中最重要的层次之一,它将原始数据转化为具有高质量和高复用性的数据集,为数据分析、查询和应用提供了强有力的支持。

DWS层

数据仓库的DWS层(Data Warehouse Service Layer)是数据仓库架构中的一层,它是在DWD层的基础上进一步处理数据,提供更加灵活、高效、可扩展的数据查询和分析服务。

DWS层的主要任务是对DWD层的数据进行加工、聚合、计算和汇总,以满足各种业务需求和分析场景。在DWS层,数据模型以业务应用为中心,根据业务流程和业务需求进行建模,以支持各种复杂的查询和分析操作。

与DWD层相比,DWS层的数据模型更加灵活和多样化,可以采用星型模型、雪花模型、多维模型、标签模型等多种建模方式,以满足各种业务需求和分析场景。此外,DWS层的数据通常是预处理后的聚合数据,包括各种汇总指标、计算结果、模型输出等等,以支持更快速、高效的查询和分析操作。

DWS层的数据处理主要包括以下几个方面:

  1. 数据加工和清洗:对DWD层的数据进行进一步加工和清洗,包括数据清洗、数据转换、数据格式化、数据归一化等,以确保数据质量和准确性。

  2. 数据聚合和计算:对DWD层的数据进行聚合和计算,生成各种汇总指标、计算结果和模型输出,以支持各种业务分析和决策需求。

  3. 数据存储和管理:将处理后的数据存储到DWS层的数据库中,并进行管理和维护,以确保数据的安全性、可靠性和可用性。

  4. 数据访问和服务:提供各种数据查询和分析服务,包括OLAP分析、数据挖掘、报表生成、可视化等,以支持各种业务需求和决策场景。

DWS层是数据仓库架构中重要的一层,它为业务分析和决策提供了强有力的支持,能够提供高效、灵活、可扩展的数据查询和分析服务,为企业的业务决策提供有力的支撑。

ADS层

ADS层(Application Data Service Layer)是数据仓库中的最上层,它是基于DWS层数据进行二次加工和业务应用开发的层级。ADS层通常是面向特定的业务场景和业务需求进行建模和开发,提供各种业务分析、报表、可视化和决策支持等服务。

ADS层的主要任务是将DWS层的数据进行业务化加工和转换,以生成各种针对具体业务需求的洞察和分析结果。此外,ADS层还负责提供各种业务应用和服务,包括数据可视化、报表生成、数据挖掘、预测建模、决策支持等,以支持企业的各种业务需求和决策场景。

与DWS层相比,ADS层的数据模型更加业务化和定制化,通常是基于具体的业务场景和业务需求进行建模和开发,以支持各种复杂的分析和决策操作。在ADS层,数据通常是以应用为中心进行组织和管理,以支持各种复杂的业务场景和分析需求。

ADS层的数据处理主要包括以下几个方面:

  1. 数据加工和转换:将DWS层的数据进行业务化加工和转换,包括数据清洗、数据抽取、数据加工、数据集成、数据转换等,以满足具体的业务需求和场景。

  2. 数据建模和开发:基于具体业务需求进行数据建模和开发,包括模型设计、数据架构、应用开发、服务开发等,以支持各种业务分析和决策需求。

  3. 数据存储和管理:将处理后的数据存储到ADS层的数据库中,并进行管理和维护,以确保数据的安全性、可靠性和可用性。

  4. 数据分析和服务:提供各种数据分析和服务,包括OLAP分析、数据挖掘、报表生成、可视化等,以支持各种业务需求和决策场景。

ADS层是数据仓库架构中最上层的一层,它是数据仓库的最终输出,能够提供针对具体业务场景和业务需求的各种分析和决策支持。ADS层通过二次加工和业务应用开发,将数据转化为有价值的信息和智能洞察,为企业的业务决策提供有力的支持。

DIM层

在数据仓库中,DIM(Dimension) 层通常用于存储业务维度信息。维度是指一组具有共同特征的属性,用于描述事实数据。例如,在销售业务中,产品、客户、时间等都可以作为维度来描述销售情况。

在数据仓库中,DIM层通常包含一系列维度表,每个维度表包含了该维度的详细信息。维度表通常包含两种类型的字段:描述性字段和层次字段。描述性字段包含了该维度的详细信息,如名称、描述、编码等;层次字段则用于描述该维度的层次结构,例如时间维度可以按照年、月、日等不同的层次进行划分,产品维度可以按照品类、品牌、型号等不同的层次进行划分。

维度表通常采用基于主题建模的模型,如星型模型或雪花模型。在星型模型中,维度表位于中心的星型结构中,与事实表通过外键关联;在雪花模型中,维度表与星型模型类似,但是维度表中的层次字段通常被拆分成多个表,形成类似于雪花的结构。

在数据仓库中,维度表的设计需要考虑以下几个方面:

  1. 数据的准确性:维度表中的数据应该准确、完整、一致。通常可以通过数据清洗、校验等方式来确保数据的质量。

  2. 数据的可扩展性:维度表应该具有可扩展性,能够支持快速地添加新的维度和层次。

  3. 数据的性能:维度表应该具有良好的查询性能,通常可以采用列式存储、分区、索引等方式来优化查询性能。

  4. 数据的易用性:维度表中的字段应该易于使用和理解,通常可以通过命名规范、字段注释等方式来提高数据的易用性。

DIM层在数据仓库中扮演着非常重要的角色,是实现数据分析和BI报表的关键。通过合理的维度设计和维度表建模,可以为数据分析提供更加准确、全面、可靠的基础数据。