当前位置: 首页 > article >正文

数据仓库与数据挖掘记录 三

数据仓库的数据存储和处理

数据的ETL过程

数据 ETL 是用来实现异构数据源的数据集成,即完成数据的抓取/抽取、清洗、转换 .加载与索引等数据调和工作,如图 2. 2 所示。
在这里插入图片描述

1)数据提取(Extract)
从多个数据源中获取原始数据(如数据库、日志文件、API、云存储等)。
数据源可能是结构化(如 MySQL)、半结构化(如 JSON)、非结构化(如文本)。
关键技术:SQL 查询、Web 爬虫、日志采集工具(如 Flume)。

2)数据转换(Transform)
对数据进行清洗、规范化、聚合、去重等处理,以满足数据仓库的需求
典型转换操作:
数据清洗:去除重复值、填充缺失值、数据格式转换。
数据标准化:将数据转换为统一格式(如日期格式统一为 YYYY-MM-DD)。
数据聚合:按时间、类别等维度汇总(如计算日均销售额)。
数据去重:删除重复记录。
关键技术:Python Pandas、SQL 处理、Spark 数据流处理。

3)数据加载(Load)
将转换后的数据存入数据仓库或数据湖,供 BI 分析或机器学习使用
加载方式:
全量加载:一次性导入所有数据,适用于初始化。
增量加载:只导入新增或变更的数据,适用于日常更新。
关键技术:批量插入(Batch Insert)、流式数据处理(Kafka + Spark Streaming)。

ETL 的目标

抽取、转换、加载过程的目的是为决策支持应用提供一个单一的、权威的数据源。因此,要求 ETL 过程产生的数据(即调和数据层)是详细的、历史的、`规范化的.可理解的.即时的和质量可控制的。

(1) 详细的。数据是详细的(不是概括的) ,为不同用户构造数据提供最大灵活性,以满足他们的需要。

(2) 历史的。数据是周期性的,用来提供历史记载。

(3) 规范化的。数据是完全规范化的(如第三范式或更高级的范式)。规范化的数据比非规范化的数据能提供更完整 ,更灵活的使用。反向规范化对于改进调和数据层的性能;常不是必需的,因为调和数据通常使用批处理定期访问。然而,导出层的数据往往是非规范化的,一些流行的数据仓库或数据集市的核心数据结构是非规范化的。

(4) 可理解的。要求站在企业整体的角度设计调和数据层数据,它的设计要同企业数据模型一致

(5) 即时的。除了实时数据仓库体系结构之外,数据不需要是实时的。然而,数据必须是足够当前的,以使决策制订能够及时做出反应。

(6) 质量可控制的。调和数据必须有公认的质量和完整性,因为它们将被聚集进数据集市且用于决策制订。

ETL 过程描述

数据的 ETL 过程如图 2. 3 所示 ,由 4个步骤组成,即抽取 清洗 .转换.加载与索引。事实上,这些步骤可以进行不同的组合,如可以将数据抽取与清洗组合为一个过程 ,或者将清洗和转换组合在一起。通常,在清洗过程中发现的拒绝数据信息会送回到源操作型业务系统中,然后将数据在源系统中加以处理,以便在以后重新抽取。
在这里插入图片描述

数据抽取

从源文件和源数据库中获取相关数据用于填充数据仓库,称为抽取。 并非所有包含在不同操作型业务系统中的数据都需要抽取,通常只需要其中的一个子集。
抽取数据的一个子集是基于对源系统和目标系统的扩展分析 ,一般会由终端用户和数据仓库专家共同决定。

数据抽取的两个常见类型是静态抽取(static extract) 和增量抽取(incremental extract)
静态抽取用于最初填充数据仓库,是一种在某一时间点获取所需源数据快照的方法 ,源数据的视图独立于它被创建的时间。
增量抽取用于进行数据仓库的维护,仅仅获取那些从上一次获取之后源数据中所发生的变化; 最普遍的方法是日志获取,数据库日志包括数据库记录中最近变化的后像。

抽取数据进入集结区域的一个关键是源系统中的数据质量。特别是

  1. 数据命名的透明度。 以使数据仓库设计者确切地知道什么数据存放于哪个源系统中。

  2. 由一个源系统实施的业务规则的完整性和准确性。这将直接影响到数据的精度,而且源系统中的业务规则应该同数据仓库中使用的规则相匹配。

  3. 数据格式。路数据源的统一格式有助于匹配相关的数据。

数据清洗

为什么需要数据清洗
通常接受的事实是,ETL 过程的作用是为了识别错误数据,而不是处理它们。应该在适当的源系统中进行处理错误数据,以使由于系统过程错误所造成的错误数据不再重新出现。丢弃错误数据且在下一个从相关源系统的反馈中重新处理。
但由于许多常见的原因 ,操作型业务系统中的数据质量很差,这些原因包括雇员和客户的数据登录错误、源系统的变化.损坏的元数据系统错误或抽取过程中对数据的破坏。因此,当源系统工作非常好的时候(例如,源系统使用默认的,但是不准确的值) ,也不能假定数据就是干净的。其中的一些错误和典型的数据不一致性如下。

(1) 错误拼写的名字和地址。
(2) 不可能的或错误的出生日期。
(3) 没有使用目的的字段。
(4) 不匹配的地址和电话区号。
(5) 缺失的数据。
(6) 重复的数据。
(7) 跨源的不一致性(例如不同的地址等。

下面是一些错误数据的例子。

客户名字常常用作主码或者客户资料的搜索条件。然而,这些名字常被错误拼写 ,或以几种方式来拼写。

另一种数据污染发生在当一个字段用于某目的时,但实际并不想用这个字段。例如 ,在一个银行中,一个记录字段被设计成保存一个电话号码。然而,不需要使用这个字段的某分支机构负责人就决定用该字段来存储利率。你可能想知道为什么这样的错误在操作型业务数据中如此普遍。

操作型数据的质量在很大程度上决定了由它们所属的企事业组织单位聚集这些数据的价值。因为这些数据的准确程度对下游的数据仓库应用程序是很重要的。
假定错误经常发生,对一个企业或其他组织来说,最坏的事就是把操作型数据简单地复制到数据仓库中。事实上 ,可以通过一种称为数据清洗的技术来改善源数据的质量。

数据清洗(data scrubbing)是一种使用模式识别和其他技术 ,在将原始数据转换和移到数据仓库之前来升级原始数据质量的技术。怎样清洗随着属性变化的每条数据,在每个ETL 清洗的步骤中值得考虑分析。每次对源数据做出改变时 ,数据清洗技术必须被重新评价。当数据很明显是坏数据时 ,一些清洗就会完全地拒绝这些数据,而且发送一个消息给源系统,让它修正错误数据,同时为下一次抽取做准备。在完全拒绝数据之前,其他清洗结果可能为更详细的手工分析标记数据(例如 ,为什么一个销售员售出比其他销售员多出好几倍的货物) 。

成功的数据仓库 需要实现一个全面质量管理(total quality management,TQM)的正式程序。TQM 侧重于缺陷的预防,而不是缺陷的纠正虽然数据清洗可以帮助提高数据质量,但并不是一个长期的解决数据质量问题的方法。

数据转换

数据转换在数据的 ETL 过程中处于中心位置,它把数据从源操作型业务系统的格式转换到企业数据仓库的数据格式。数据转换从数据抽取阶段接收数据(如果需要数据清洗,则在数据清洗之后) ,将数据映射到调和数据层(EDW 或 ODS)的格式,然后传递到加载和索引阶段。

数据转换可能只是简单的数据格式等表示方式的变化,也可能是高度复杂的数据组合的变化。
有时 ,数据清洗功能和数据转换功能混合在一起。通常情况下 ,数据清洗的目的是纠正源数据中数据值的错误 ,而数据转换的目的是把源系统中的数据格式转化成目标系统的数据格式。数据转换前进行清洗是非常必要的,因为如果数据在转换之前有错误,错误在转换之后仍会保留。

数据转换包括许多功能,这些功能可以分为两大类: 记录级功能和字段级功能。在大多数数据仓库应用中,需要一些甚至所有这些功能。

  1. 记录级功能

对一组记录,例如一个文件或一个表进行操作,是最重要的记录级功能,包括选择 、连接、规范化和聚集。因为选择 .连接.聚集常可用 SQL 语句完成,所以记录级转换通常在操作型数据存储或企业数据仓库中进行。

选择也称为子集化,是一个根据预先定义的规则分割数据的过程。对于数据仓库应用,选择功能用于从源系统中抽取相关数据,源系统将用来填充数据仓库。因此,选择可以说是抽取功能的一部分。当源数据是关系表时,SELECT 语句可以用于选择功能。

连接将来自不同源的数据合并到一个单一的表和视图中。连接数据是数据仓库应用中的一个重要功能,因为从不同的源中合并数据常常是必需的。例如 ,一个保险公司的客户数据可能分布在不同的文件和数据库上。当源数据是关系表时,SELECT 语句可用于执行连接操作 。

  1. 字段级功能

字段级功能把数据从源记录中给定的格式转变到目标记录中不同的格式。字有段级功能有两种类型: 单字段和多字段。

单字段转换是把数据从单源字段转换到单目标字段。单字段转换的一个例子是把度量单位从本地标准(如斤)转换到公制(千克)。单字段转换有两种基本方法: 算法和表查找。算法转换是使用公式或多辑表达式来执行转换,如使用公式从华氏温度到摄氏温度的转换。当一个简单算法不能实施转换时,可以考虑使用一个查找表(如编码与名称映射表等)来解决。

多字段转换是把数据从一个或多个源字段转换到一个或多个目标字段。这种类型的转换在数据仓库应用中是非当普遍的。
在图 2.4 中给出了两个源字段转换成一个目标字段的例子,两个源字段被映射到一个目标字段中。在源记录表中,商品单价和销售数量是更明细的数据; 但在目标记录表中 ,该组合被映射成了销售金额 ,以便于数据的汇总,这里可以通过算法(金额王单价X数量)来完成转换。但一些复杂转换可能需要创建一个查找表来实现。
在这里插入图片描述

数据加载和索引

加载和索引,即是把数据加载到数据仓库或数据集市的过程。填充企业数据仓库的最后一步是加载所选择的数据到目标数据仓库中,并且创建所需的索引。加载数据到目标EDW 中的两个基本方式是刷新方式和更新方式。

刷新方式(refresh mode)是一种填充数据仓库的方法,采用在定期的间隔对目标数据进行批量重写的技术。也就是说,目标数据起初被写进数据仓库,然后每隔一定的时间,数据仓库被重写 ,替换以前的内容。现在这种加载方式越来越不流行了。

更新方式(update mode)是一种只将源数据中的数据改变写进数据仓库的方法。为了支持数据仓库的周期性,便于历史分析,新记录通常被写进数据仓库中,但不覆盖或删除以前的记录,而是通过时间截来分辩它们。

刷新方式通常用于数据仓库首次被创建时填充数据仓库。更新方式通常用于目标数据仓库的维护。刷新方式通常与静态数据获取相结合 ,而更新方式常与增量数据获取相结合。

在刷新或更新数据后,有必要创建或维护数据仓库的索引。位图索引和连接索引当被用于数据仓库环境。

因为数据仓库保存了从不同的源系统中集成而来的历史数据,对数据仓库的用户来说,知道数据从何而来非常重要。元数据可以提供关于特定属性的信息,但是元数据也必须表示历史(例如源可能随时间而变)。如果有更多的源或知道哪一个特定的抽取或加载文件把数据放在了数据仓库中 ,或者哪个转换程序创建了数据,更详细的过程可能是必需的(这对于提示数据仓库中所发现的错误源可能是必需的) 。因此 ,跟踪数据仓库数据来源也是有其复杂性的。


http://www.kler.cn/a/544628.html

相关文章:

  • DeepSeek:优化学习路径生成,为教育领域带来智能化解决方案
  • 机器学习所需要的数学知识【01】
  • 企语企业管理系iFair(F23.2_a0)在Debian操作系统中的安装
  • O1、R1和V3模型
  • 二次封装axios解决异步通信痛点
  • 本地生活案例列表案例
  • MATLAB算法实战应用案例精讲-【数模应用】灰度图像增强(附MATLAB、C++和python代码实现)
  • 【数据可视化-16】珍爱网上海注册者情况分析
  • Linux 内核架构入门:从基础概念到面试指南*
  • leetcode-495.提莫攻击
  • 蓝桥杯单片机大模板(西风)
  • 6.appender
  • Python(下)
  • sqlilabs--小实验
  • 深度学习框架探秘|TensorFlow vs PyTorch:AI 框架的巅峰对决
  • 2025年02月10日Github流行趋势
  • C语言——排序(冒泡,选择,插入)
  • 【Elasticsearch】内置分析器概述
  • Air724 DTU数据上报json到v1/gateway/telemetry
  • 2D小游戏-创新设计——《弹射挑战》