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='' where physical_key not in (select max(physical_key) from bi_tableA group by logical_key having count(physical_key) > 1 and nowstate='' )
ETL增量处理总结的更多相关文章
- ETL增量单表同步简述_根据timestamp增量
ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ...
- ETL增量单表同步简述_根据dateTime增量
ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ...
- 【转】ETL增量抽取——通过时间戳方式实现
这个实验主要思想是在创建数据库表的时候, 通过增加一个额外的字段,也就是时间戳字段, 例如在同步表 tt1 和表 tt2 的时候, 通过检查那个表是最新更新的,那个表就作为新表,而另外的表最为旧表被新 ...
- ETL之增量抽取方式
1.触发器方式 触发器方式是普遍采取的一种增量抽取机制.该方式是根据抽取要求,在要被抽取的源表上建立插入.修改.删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表 ...
- ETL中的数据增量抽取机制
ETL中的数据增量抽取机制 ( 增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取.转换和装载)实施过程中需要重点考虑的问 题.在ETL过 ...
- 数据仓库系列之ETL中常见的增量抽取方式
为了实现数据仓库中的更加高效的数据处理,今天和小黎子一起来探讨ETL系统中的增量抽取方式.增量抽取是数据仓库ETL(数据的抽取(extraction).转换(transformation)和装载(lo ...
- ETL数据采集方法
1.触发器方式 触发器方式是普遍采取的一种增量抽取机制.该方式是根据抽取要求,在要被抽取的源表上建立插入.修改.删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表 ...
- 数据库开发之ETL概念
原文链接:https://blog.csdn.net/jianzhang11/article/details/104240047/ ETL基础概念 - 背景随着企业的发展,各业务线.产品线.部门都会承 ...
- 《BI项目笔记》增量ETL数据抽取的策略及方法
增量抽取 增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据.在ETL使用过程中.增量抽取较全量抽取应用更广.如何捕获变化的数据是增量抽取的关键.对捕获方法一般有两点要求:准确性,能够将 ...
随机推荐
- 哈密顿绕行世界问题---hdu2181(全排列问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181 题意很容易理解,dfs就可以了 #include <iostream> #inclu ...
- Python数据分析(一):工具的简单使用
1.Numpy 安装:pip install numpy [root@kvm work]# cat numpy_test.py #!/usr/bin/env python #coding:utf-8 ...
- Python作用域-->闭包函数-->装饰器
1.作用域: 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我要理解两点:a.在全局不能访问到局部 ...
- CentOS 6下OpenCV的安装与配置
自己按照网上的教程一步一步来的 http://www.jb51.net/os/RedHat/280309.html 虚拟机环境 CentOS 6.5 内核版本:4.1.14 64位 gcc,gcc 4 ...
- matplotlib中的legend()—显示图例
源自 matplotlib中的legend()——用于显示图例 -- 博客园 http://www.cnblogs.com/yinheyi/p/6792120.html legend()的一个用法: ...
- 数据库之ADO
ADO是一种跨多种语言的数据库访问技术. 在MFC里面微软公司将这些函数封装为以下几个类. 在VS2013版本的MFC中,这些类是如下定义的. CDaoDatabase Class:https://m ...
- 在Windows上安装Elasticsearch 5.x
在Windows上安装Elasticsearch 5.x 自己想学习Elasticsearch,但是又不懂Linux,按照同事给的Linux安装教程,也是搞不明白,于是想先在Windows上安装一下入 ...
- SQL Server outer apply 和 cross apply
先说点题外话,因为后面我会用到这个函数. 前两天自定义了一个 sql 的字符串分割函数(Split),不过后来发现有点问题,例如: select * from Split(default,'123,4 ...
- XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem D. Great Again
题目: Problem D. Great AgainInput file: standard inputOutput file: standard outputTime limit: 2 second ...
- Android系统init进程启动及init.rc全解析
转:https://blog.csdn.net/zhonglunshun/article/details/78615980 服务启动机制system/core/init/init.c文件main函数中 ...