2. 数据仓库基本概念

数据仓库基本概念

数据仓库与数据集市

一、数据仓库的定义和特点
数据仓库(Data Warehouse, DWH)是一种面向主题的、集成的、不可变的数据集合,用于支持管理决策。数据仓库的核心特征包括:

  • 面向主题:数据仓库关注的是企业中的特定主题,如销售、财务和客户服务。这有助于以业务为中心进行数据分析。
  • 集成性:数据仓库将来自多个来源的数据进行整合,统一格式和命名规则,消除了数据的异构性。
  • 不可变性:数据仓库中的数据一旦加载后通常不会被修改,保证了数据的历史性和完整性。
  • 时变性:数据仓库保存了数据的历史版本,使得用户可以进行时间序列分析,了解数据的变化趋势。

数据仓库的架构通常包括数据源层、数据提取转换加载(ETL)层、数据存储层和数据访问层。数据源层包含来自各种系统的数据,如ERP、CRM和外部数据源。ETL层负责数据的抽取、转换和加载,将数据从源系统转移到数据仓库中。数据存储层是实际存放数据的地方,通常采用关系型数据库或专用的列存储数据库。数据访问层则提供数据查询和报告功能,支持用户进行数据分析。

二、数据集市的定义和特点
数据集市(Data Mart)是一种针对特定业务领域或部门的、独立的数据存储解决方案。数据集市的核心特征包括:

  • 面向特定用户群体:数据集市通常为特定部门或业务单元设计,如营销、销售或财务部门。
  • 快速实现:由于数据集市的范围较小,开发和部署速度相对较快,能够迅速满足特定用户的需求。
  • 灵活性:数据集市的数据模型和结构可以根据特定需求进行调整,具有较高的灵活性。
  • 低成本:数据集市的实现成本相对较低,因为其数据量和复杂度较数据仓库低。
    数据集市可以独立存在,也可以作为数据仓库的一个子集。从数据仓库中提取特定主题的数据,形成数据集市,可以进一步提高数据的使用效率和分析的针对性。

三、数据仓库与数据集市的区别

尽管数据仓库和数据集市都有助于数据存储和分析,但二者在多个方面存在差异:

  • 范围和规模:数据仓库覆盖整个企业的数据,而数据集市则专注于特定业务领域或部门的数据。数据仓库通常包含大量历史数据,数据集市则相对较小。
  • 数据集成:数据仓库强调数据的集成性,确保来自不同源系统的数据一致性;数据集市则可能只关注特定的数据集成需求。
  • 实现时间和成本:数据仓库的实现周期较长,成本较高;数据集市的实现周期较短,成本较低。
  • 数据更新频率:数据仓库的数据更新频率较低,通常是批量更新;数据集市的数据更新频率较高,可能需要实时更新。

数仓架构的原则

  1. 底层业务的数据驱动为导向同时结合业务需求驱动
  2. 便于数据分析,屏蔽底层复杂业务,简单、完整、集成的将数据暴露给分析层
  3. 底层业务变动与上层需求变动对模型冲击最小化,业务系统变化影响削弱在基础数据层(资金订单改造),结合自上而下的建设方法削弱需求变动对模型的影响,数据水平层次清晰化
  4. 高内聚松耦合,主题之内或各个完整意义的系统内数据的高内聚,主题之间或各个完整意义的系统间数据的松耦合
  5. 构建仓库基础数据层,使得底层业务数据整合工作与上层应用开发工作相隔离,为仓库大规模开发奠定基础,仓库层次更加清晰,对外暴露数据更加统一

维度、指标

一、维度

维度是度量的环境,用来反映业务的一类属性 , 这类属性的集合构成一个维度 , 也可以称为实体对象。 维度属于一个数据域,如地理维度(其中包括国家、地区、 省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实” , 将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如, 在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。

维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。

二、维度特点
1、维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”。
2、维度是用于分析事实所需要的多样环境。例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。
3、维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。

三、指标
定义: 指标是在大数据分析过程中用来衡量和评估数据价值的量化标准。 它可以是各种数据的度量,如数据量、数据质量、数据速度、数据价值等。
作用: 通过对大数据指标的分析,企业可以更好地了解数据的特征、趋势和规律,进而为业务决策提供依据。
指标有助于企业更深入地了解数据,并从中获取商业价值。

四、指标分类
指标分类:指标有原子指标,派生指标,衍生指标三种类型。

1、原子指标基于某一业务过程的度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。可以得出结论,原子指标包含三要素,分别是业务过程、度量值和聚合逻辑。

  • 例如订单总额就是一个典型的原子指标,其中的业务过程为用户下单、度量值为订单金额,聚合逻辑为sum()求和。

2、派生指标基于原子指标,在原子指标的基础上加了各种限定。与原子指标不同,派生指标通常会对应实际的统计需求。

  • 如:每天,每年的订单金额,销售金额 都是属于派生指标。

3、衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成的。

  • 例如比率、比例等类型的指标。衍生指标也会对应实际的统计需求。

五、维度和指标的区别
指标是一个量化的衡量标准,通常用于衡量公司业务运营情况的好坏,例如利润率、留存率、覆盖率等。它是对结果的描述,通过关键的几个指标可以反映公司的运营状态和业务效果。

指标可以分为绝对数指标和相对数指标,绝对数指标如人口、GDP、收入,而相对数指标则如利润率、留存率和覆盖率等。指标需要通过加和、平均等汇总方式来获得,并且需要在一定的前提条件下进行汇总统计计算。

维度则是用来描述事物的特征或属性,例如时间、地区、性别等。维度是分析数据的角度,可以帮助人们从多个方面观察和理解数据。

维度可以分为定性维度和定量维度,它们可以帮助我们更深入地理解数据的内在关系和规律。在数据分析中,根据整体情况进行分析和汇总,或者进行多个维度的统计,如环比和占比,都离不开维度的应用。

  • 数据类型为字符型(文本型)数据,就是定性维度,如地区、性别都是定性维度;
  • 数据类型为数值型数据的,就为定量维度,如收入、年龄、消费等。

因此,指标和维度的主要区别在于:指标是用来衡量和描述结果的,而维度则是用来描述和分析这些结果的角度或特征。在数据分析中,我们需要综合运用指标和维度,以便更全面、深入地理解数据的内涵和规律。

数仓建模

数仓建模指的规定如何在hive中构建表,数仓建模中主要提供两种理论来进行数仓建模:(ER模型)三范式建模和维度建模。

一、三范式建模

三范式建模是一种数据库设计理论,它规定了数据库设计的三个规则,以避免数据冗余和更新异常。三范式建模主要包括以下三个规则:

  1. 第一范式(1NF):要求表中的每个字段都是不可分割的基本数据项,即每个字段都是原子性的,不能进一步拆分。
  2. 第二范式(2NF):在满足第一范式的基础上,要求表中的所有非主属性完全依赖于主键,即每个字段都必须依赖于主键。
  3. 第三范式(3NF):在满足第二范式的基础上,要求表中的所有非主属性不依赖于其他非主属性,即每个字段都必须直接依赖于主键,而不能通过其他字段间接依赖于主键。

三范式建模的优点是简单易懂,容易理解和实现,可以避免数据冗余和更新异常。但是,三范式建模也有一些缺点,例如可能会导致数据表的数量增加,查询性能下降等问题。因此,在实际应用中,需要根据具体情况进行选择和调整。

二、维度建模

维度建模是一种数据仓库建模方法,它将数据按照业务过程进行组织,以方便分析和查询。维度建模主要包括以下三个部分:

  1. 维度:维度是用于描述业务过程的环境,例如时间、地区、产品等。维度可以用于对数据进行分组和筛选。
  2. 事实:事实是业务过程中的度量值,例如销售额、订单数量等。事实可以用于对数据进行汇总和计算。
  3. 星型模型:星型模型是一种常见的维度建模方法,它将事实表和维度表按照业务过程进行组织,形成一个星型结构。星型模型易于理解和实现,可以方便地进行查询和分析。

维度建模的优点:

  • 易理解和使用:维度模型以业务过程和需求为中心组织数据,使用户能够直观地理解和操作数据。
  • 性能优化:星型模式通常比较扁平化,查询性能较好,适合OLAP(联机分析处理)应用。
  • 灵活性:维度模型可以根据业务需求进行扩展和调整,支持新的分析维度和度量的添加。

维度建模的缺点:

  • 维度建模之前需要进行大量的数据预处理,因此会导致大量的数据处理工作(ETL)。
  • 当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些与处理过程中,往往会导致大量的数据冗余。
  • 如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。

维度建模-事实表、维度表

一、事实表

数据仓库系统中的事实表只不过是包含所有事实或业务信息的表,可以在需要时进行分析和报告活动。这些表包含表示直接事实的字段,以及用于将事实表与数据仓库系统中的其他维度表连接起来的外部字段。一个数据仓库系统可以有一个或多个事实表,这取决于用于设计数据仓库的模型类型。

事实表的特征:

  • 键: 它有一个键或一个主键,它是与其链接的所有维度表的所有主键的累积。该键称为串联键,有助于唯一标识该行。
  • 事实表粒度: 表的粒度描述了该表中包含的信息的详细程度或深度。级别越高,表的效率越高。
  • 添加度量: 此中存在的属性可以是完全添加、非添加或半添加。将完全可加或可加的度量添加到所有维度。半加性是添加到某些维度而非所有维度的那些度量,非加性度量是存储业务流程的基本度量单位。
  • 稀疏数据: 有些记录的属性包含空值或度量。他们不提供任何信息。
  • 收缩汇总维度: 收缩汇总维度是基础维度的细分。

事实表的类型:

  • 事务事实表: 事务事实表包含有关业务事务的详细信息。它包含有关业务事务的详细信息,例如销售订单、销售发票、销售退货等。
  • 周期快照事实表: 周期快照事实表通常以有规律可预见的时间来记录事实(一天)、来记录存量型(商品库存、账户余额)事实。
  • 累积快照事实表: 累积快照事实表包含有关业务过程的累积度量,以及有关业务过程的快照度量。累积快照大多具有多个数据戳,代表生命周期中发生的可预测阶段或事件。有时会有一个额外的列包含显示该行上次更新时间的日期。

事实表的优点:

  • 包含用于分析的定量信息。
  • 包含的性能指标通常是标准化的。
  • 可以包含不同的度量,如加性、半加性和非加性。

二、维度表

维度表存在于星型或雪花模型中。维度表有助于描述维度,即维度值、属性和键。它的尺寸通常很小。大小可以从几行到几千行不等。它描述了事实表中存在的对象。维度表是指与任何可测量事件相关的信息的集合或组。它们构成了维度建模的核心。它包含一个可以被视为主键列的列,有助于唯一标识每个维度行或记录。它通过这个键与事实表连接。创建时,系统生成的称为代理键的键用于唯一标识维度中的行。

为什么要使用维度表?

  • 有助于存储历史信息或维度信息。
  • 比规范化表更容易理解。
  • 可以向表中添加更多列,而不会影响使用这些列的现有应用程序。

维度表类型:

  • SCD(缓慢变化维):倾向于随时间缓慢变化而不是在固定时间间隔内变化的维度属性称为缓慢变化维度。例如地址和电话号码更改但不定期更改。
  • 一致维度:该维度在多个主题领域或数据集市之间共享。同样可以在不同的项目中使用,而无需在同一项目中进行任何修改。这用于保持一致性。一致维度是那些完全相同或任何其他维度的适当子集的维度。
  • 垃圾维度:垃圾维度是一组低基数的属性。它包含与任何其他属性无关的不同或各种属性。这些可用于实现 RCD(快速变化的维度),例如标志、权重等。
  • 退化维度:它存储在事实表本身中而不是作为单独的维度表存储的属性,这些属性称为退化维度。例如票号、发票号、交易号等。
  • 角色扮演维度:与事实表的多重关系称为角色扮演维度。换句话说,当同一个维度键及其所有相关属性与事实表中的许多外键连接时。它可以在同一个现有数据库中实现多种用途。

维度表分类:

  • 高基数维度表:指的表中数据量是比较庞大的,而且数据也是经常变化的,例如用户表、商品表等。
  • 低基数维度表:指的表中数据量是比较小的,而且数据也是比较稳定的,例如地区表、日期表、配置表等。

维度表的好处:

  • 它具有简单的结构。
  • 很容易分析和理解。
  • 非规范化数据。
  • 有助于维护任何维度的历史信息。
  • 很容易从中检索数据。
  • 快速创建和实施。
  • 它提供了任何业务流程的上下文。

事实表和维表之间的主要区别:

  • 事实表包含维度表的属性的值或度量。
  • 事实表包含更少的属性和更多的记录,而维度表包含更少的记录和更多的属性。
  • 事实表垂直增长,而维度表水平增长。
  • 事实表包含一个连接键,而维度表包含一个主键。
  • 必须在创建事实表之前创建维度表。
  • 任何模式都包含更多的维度表和更少的事实表。

三、上卷、下钻、切片、切块

  • 上卷:上卷是数据仓库中的一种操作,它将数据从较低级别的汇总数据汇总到较高级别的汇总数据。例如,将每日销售数据汇总到每月销售数据,将每月销售数据汇总到每年销售数据。
  • 下钻:下钻是数据仓库中的一种操作,它将数据从较高级别的汇总数据分解到较低级别的汇总数据。例如,将每年销售数据分解到每月销售数据,将每月销售数据分解到每日销售数据。
  • 切片:切片是数据仓库中的一种操作,它将数据从多维数据集中提取出一部分数据。例如,从销售数据中提取出某个地区的数据,或者从销售数据中提取出某个产品类别的数据。
  • 切块:切块是数据仓库中的一种操作,它将数据从多维数据集中提取出一部分数据,并且按照某种规则进行分组。例如,从销售数据中提取出某个地区的数据,并且按照产品类别进行分组。