《BI项目笔记》增量ETL数据抽取的策略及方法

增量抽取 增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL使用过程中。增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;性能,不能对业务系统造成太大的压力,影响现有业务。目前增量数据抽取中常用的捕获变化数据的方法有:
a.触发器:在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有一定的影响。

b.时间戳:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的值。有的数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时,手工更新时间戳字段。同触发器方式一样,时间戳方式的性能也比较好,数据抽取相对清楚简单,但对业务系统也有很大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳的自动更新的数据库,还要求业务系统进行额外的更新时间戳操作。另外,无法捕获对时间戳以前数据的delete和update操作,在数据准确性上受到了一定的限制。

c.全表比对:典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时更新MD5校验码。MD5方式的优点是对源系统的倾入性较小(仅需要建立一个MD5临时表),但缺点也是显而易见的,与触发器和时间戳方式中的主动通知不同,MD5方式是被动的进行全表数据的比对,性能较差。当表中没有主键或唯一列且含有重复记录时,MD5方式的准确性较差。

d.日志对比:通过分析数据库自身的日志来判断变化的数据。Oracle的改变数据捕获(CDC,ChangedDataCapture)技术是这方面的代表。CDC特性是在Oracle9i数据库中引入的。CDC能够帮助你识别从上次抽取之后发生变化的数据。利用CDC,在对源表进行insert、update或delete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。CDC分为同步模式和异步模式,同步模式实时的捕获变化数据并存储到变化表中,发布者与订阅都位于同一数据库中。异步模式则是基于Oracle的流复制技术。

综上所述:本BI项目中采取时间戳方式.

时间: 2024-10-26 09:36:06

《BI项目笔记》增量ETL数据抽取的策略及方法的相关文章

《BI项目笔记》——微软BI项目笔记连载

原文:<BI项目笔记>--微软BI项目笔记连载 本系列文章主要是结合实际项目,加上自己的总结,整理出来的一系列项目笔记,涉及微软SQL Server2008中商务智能开发中的SSAS.SSIS模块:  准备工作: <BI项目笔记>基于雪花模型的维度设计 <BI项目笔记>数据源视图设置 <BI项目笔记>创建标准维度.维度自定义层次结构 <BI项目笔记>创建父子维度 <BI项目笔记>创建时间维度(1) <BI项目笔记>创建时间

《BI项目笔记》历年理化指标分析Cube的建立

原文:<BI项目笔记>历年理化指标分析Cube的建立 该系统属于数据仓库系统,与传统的管理信息系统有本质差别,是“面向主题”设计的.“面向主题”的方式,既有利于数据组织和利用,又有利于用户的理解和使用. 分析主题主要维度:烟叶级别.烟叶级别按等级信息.烟叶级别按分级标准(标准维度) 产地(父子维度) 检测时间(时间维度,以Tqc_Raw_Chemistry .CheckTime字段派生CheckDate字段) 样品维度增加按样品来源.按打叶计划层次结构 主要指标:总糖% TotalSugar还

《BI项目笔记》报到信息分析Cube

原文:<BI项目笔记>报到信息分析Cube 数据源设置:数据处理逻辑: --处理丢失外键关系数据 SELECT * FROM T_ReportLeafGrade WHERE FSubFID NOT IN ( SELECT FID FROM T_RaceLeafReport ) DELETE FROM T_ReportLeafGrade WHERE FSubFID NOT IN ( SELECT FID FROM T_RaceLeafReport ) --处理供应商关系 SELECT * FRO

《BI项目笔记》历年感官评吸质量均值变化分析Cube的建立

原文:<BI项目笔记>历年感官评吸质量均值变化分析Cube的建立 分析主题主要维度:烟叶级别.烟叶级别按等级信息.烟叶级别按分级标准(标准维度)产地(父子维度)检测时间(时间维度,以Tqc_Raw_SmokingTest .CheckTime字段派生CheckDate字段)样品维度 主要指标: 香气特征_清香_平均值香气特征_甜香_平均值香气特征_焦香_平均值烟气特征_浓度_平均值烟气特征_劲头_平均值质量特征_香气质_平均值质量特征_香气量_平均值质量特征_杂气_平均值质量特征_刺激_平均值

《BI项目笔记》数据源视图设置

原文:<BI项目笔记>数据源视图设置 目的数据源视图是物理源数据库和分析维度与多维数据集之间的逻辑数据模型.在创建数据源视图时,需要在源数据库中指定包含创建维度和多维数据集所需要的数据表格和视图.BIDS与数据库连接,读取表格和视图定义,并在数据源视图中存储元数据.元数据是“关于数据的数据”:即表格和视图的名称.列名称.数据类型.主键列和外键关系等.数据源视图允许您提供额外的元数据.如果需要转换数据,可以向表格中添加含有SQL表达式的命名计算.如果需要创建筛选.分组或从多个表中连接数据,可以创

《BI项目笔记》挑选产出分析Cube

原文:<BI项目笔记>挑选产出分析Cube 数据源设置: 数据处理逻辑: --I_GBGradeID SELECT * FROM T_NPick_PkgMov WHERE I_GBGradeID NOT IN ( SELECT I_GBGradeID FROM T_GBGradeCode ) DELETE FROM T_NPick_PkgMov WHERE I_GBGradeID NOT IN ( SELECT I_GBGradeID FROM T_GBGradeCode ) --V_Cust

《BI项目笔记》创建时间维度(1)

原文:<BI项目笔记>创建时间维度(1) SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞清楚几个问题: 你的业务涉及到的最低的细节级别是什么?比如按季度查看报表还是按月份,或者按周,或者再甚者按天.这个细节级别需要弄清楚,比如在一些销售数据统计,有的时候可能更多按季度或者按月来查看报表.但在有的监控一些机器运行数据的统计,可能会按照小时或者分

《BI项目笔记》创建多维数据集Cube(1)

原文:<BI项目笔记>创建多维数据集Cube(1) 有两个事实表,因此就有两个度量值组,并且向导将为非维度键的事实表中的每一个数值列创建一个度量值.由于我们这里不需要那么多,所以只选择部分度量值.另外要注意,度量值的名称源于事实表中的列,所有名称由可能相同.但是在多维数据集中,由于度量值的名称必须是唯一的,所以向导会在重复的度量值名称后添加所属的度量值组名称. 下一步的时候多维数据集的向导识别了度量值组即之前的事实表与之相关的维度表,因此这里全部会显示出来. 为多维数据集取一个名称并保存. 历

微软BI项目笔记连载

本系列文章主要是结合实际项目,加上自己的总结,整理出来的一系列项目笔记,涉及微软SQL Server2008中商务智能开发中的多维分析模块: <BI项目笔记>基于雪花模型的维度设计 <BI项目笔记>数据源视图设置 <BI项目笔记>创建标准维度.维度自定义层次结构 <BI项目笔记>创建父子维度 <BI项目笔记>创建时间维度(1) <BI项目笔记>创建时间维度(2) <BI项目笔记>创建多维数据集Cube