ETL增量处理总结

1 LOG表

1.1 思路

用log表记录业务库某表yw_tableA发生变化数据的主键。数据进入BI库目标表bi_tableA前,先根据log表记录的主键进行delete。

1.2 设计

1.2.1 log表结构
CREATE TABLE  LOG
(
  key_1 VARCHAR(20),  --主键1
  key_2 VARCHAR(20),  --主键2
  tName VARCHAR(20),  --来源表
  updateDate DATE,  --更新日期
  loadDate DATE  --加载日期
);
1.2.2 etl流程
  • yw_tableA中发生变化的数据,主键存入log,所有列存入BI库临时表tmp_bi_tableA(图1);
  • 根据log表,删除BI库bi_tableA中已存在数据(图2);
  • tmp_bi_tableA数据进入bi_tableA(图2)。

图1 业务数据进入日志和临时表

图2 目标表初始化以及临时表数据进入目标

1.2.3 附部分sql
--目标表初始化
delete from bi_tableA tg where exists (select 1 from tmp_bi_tableA tmp where tg.key1 = tmp.key1)

2 左关联(键比对、全表比对)

2.1 思路

业务库某表yw_tableA左关联BI库bi_tableA,可以关联上的舍弃;关联不上的进入目标表bi_tableA,然后对同一个业务主键多条进行处理(打上标记或delete)。比较适合小维表更新。

2.2 设计

2.2.1 目标表结构
create tabel bi_tableA
(
  physical_key int identity,  --物理键,自增
  logical_key varchar(20),   --业务键
  col1 varchar(20),  --其他列
  nowstate char(1),  --状态
  loadDate DATE  --加载日期
)
2.2.2 etl流程
  • yw_tableA与bi_tableA主键或多列比对,得出需要进入目标表的记录,进入目标表bi_tableA;
  • 目标表bi_tableA数据处理,删除或状态位。

图3 关联设计

2.2.3 附部分sql
--目标表状态更新(同一业务键记录保留最新)
update bi_tableA set nowstate=‘0‘ where physical_key not in (select max(physical_key) from bi_tableA group by logical_key having count(physical_key) > 1 and nowstate=‘1‘ )
时间: 2024-08-05 21:22:39

ETL增量处理总结的相关文章

ETL增量单表同步简述_根据timestamp增量

ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如下图: 2.根据要同步的表名,更新同步配置表synConfig的endTime. 3.根据beginTime和endTime获取同步时间段. 4..根据比较原表和目标表数据的差异性,进行删除目标表的数据. 6.更新提取的开始时间,将上次提取的结束时间更新到开始时间. 3. 必备条件 1.目标数据库的

ETL增量单表同步简述_根据dateTime增量

ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如下图: 2.根据要同步的表名,更新同步配置表synConfig的endTime. 3.获取同步时间段并将beginTime和endTime设置到变量中. 4.获取beginTime>= and <endTime,根据比较原表和目标表数据的差异性,进行更新/插入数据到目标表. 5.根据比较原表和目标

ETL之增量抽取方式

1.触发器方式 触发器方式是普遍采取的一种增量抽取机制.该方式是根据抽取要求,在要被抽取的源表上建立插入.修改.删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除.为了简单起见,增量日志表一般不存储增量数据的所有字段信息,而只是存储源表名称.更新的关键字值和更新操作类型(KNSEN.UPDATE或DELETE),ETL增量抽取进程首先根据源表名称和更

ETL中的数据增量抽取机制

ETL中的数据增量抽取机制 (     增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取.转换和装载)实施过程中需要重点考虑的问 题.在ETL过程中,增量更新的效率和可行性是决定ETL实施成败的关键问题之一,ETL中的增量更新机制比较复杂,采用何种机制往往取决于源数据系统的 类型以及对增量更新性能的要求. 1 ETL概述 ETL包括数据的抽取.转换.加载.①数据抽取:从源数据源系统抽取目的数据源系统需要的数据:②数据转换:将从源数据源获取的

ORACLE_CDC

1.     CDC简介 1.1.        CDC是一种数据增量处理技术 在构建数据仓库系统的ETL过程中,增量数据的抽取是一个非常关键的环节.对解决方案一般有两点要求: l  准确性,能够将业务系统中的数据按一定的频率准确的取到数据仓库中 l  性能,不能对业务系统造成太大的压力,影响现有业务 目前,最为常用的ETL增量数据处理方式有三种: l  时间戳 l  日志对比(CDC) l  全面数据对比 三种方式各有优劣,时间戳是目前应用比较普遍的方式.在Oracle=中推出了两种主要的ET

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

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

ETL工具kettle怎么进行增量数据抽取:一、通过标志位

在平时的操作过程中可能大家需要经常进行增量的数据抽取,方法有很多种,接下来几天讲给大家介绍几种我本人经常使用的几种方式:首先给大家介绍我最喜欢的一种,就是通过标志位:操纵方法如下,在源表中增加一个标识字段,比如tongbu,当然可以为它设个默认值N,然后我们再增加一个索引nvl(tongbu,'N'),增加索引是为了提高查询的速度,接下来我们来写具体的流程:我写的这个流程非常简单,有的朋友们会非常疑惑为什么我会有更新组件,先卖个关子咱们继续:在写 表输入中的sql时,我们引入了一个伪列gx,并赋

【转载】DataStage(ETL)技术总结

数据整合的核心内容是从数据源中抽取数据,然后对这些数据进行转化,最终加载的目标数据库或者数据仓库中去,这也就是我们通常所说的 ETL 过程(Extract,Transform,  Load).    IBM WebSphere DataStage(下面简称为DataStage)为整个 ETL 过程提供了一个图形化的开发环境,它是一套专门对多种操作数据源的数据抽取.转换和维护过程进行简化和自动化,并将其输入数据集或数据仓库的集成工具.    通常数据抽取工作分抽取.清洗.转换.装载几个步骤:   

数据仓库之ETL漫谈

ETL,Extraction-Transformation-Loading的缩写,中文名称为数据抽取.转换和加载. 大多数据仓库的数据架构可以概括为: 数据源-->ODS(操作型数据存储)-->DW-->DM(data mart) ETL贯穿其各个环节. ?一.数据抽取: 可以理解为是把源数据的数据抽取到ODS或者DW中. 1. 源数据类型: 关系型数据库,如Oracle,Mysql,Sqlserver等; 文本文件,如用户浏览网站产生的日志文件,业务系统以文件形式提供的数据等: 其他外