ETL拉链算法汇总大全
拉链算法总结大全:
一、0610算法(追加)
1、删除仓库表的载入日期是本次载入日期的数据,以支持重跑
delete from xxx where start_dt >=$tx_date;
2、创建暂时表,用于存放从源表中提取的数据
create multiset volatile table xxx;
3、向暂时表中插入数据。依照一定规则加工
insert into xxx select ... from xxx;
4、对于暂时表的数据打上时间戳直接插入仓库表中
insert into xxx select ... from xxx;
二、0611算法(全删全插)
1、将仓库表中主键处于源表的字段记录删除
delete from xxx where (id) in (select id from xxx);
2、将源表的全部数据直接插入到仓库表中
insert into xxx select ... from xxx;
三、0612算法(历史拉链算法)
1、删除仓库表的载入日期是本次载入日期的数据,用于支持重跑
delete from xxx where start_dt >= $tx_date;
2、改动仓库表的结束日期字段。作用是把结束日期大于载入日期而且不是最大日期的数据的结束日期置为最大日期。使其有效
update set end_dt=$max_dt where end_dt >= $tx_date and end_dt <> max_dt;
3、创建暂时表用于存放从源表中提取的数据
create multiset volatile table new;
4、创建暂时增量表用于存放增量数据
create multiset volatile table inc;
5、依据一定的规则向暂时表中载入源表数据,依据需求而定
insert into new select ... from xxx where ...;
6、用暂时表的数据与仓库表数据作对照,将新增和更改的数据存入增量表中
insert into inc select ... from new where .. not in ..;
7、对全部在增量表的而且是有效的数据进行关链处理
update xxx set end_dt=$tx_date where ...;
8、对全部处于增量表中的数据进行拉新链处理
insert into xxx select ... from inc;
四、0614(带删除的历史拉链算法)
1、删除仓库表的载入日期是本次载入日期的数据,用于支持重跑
delete from xxx where start_dt >= $tx_date;
2、改动仓库表的结束日期字段。作用是把结束日期大于载入日期而且不是最大日期的数据的结束日期置为最大日期。使其有效
update set end_dt=$max_dt where end_dt >= $tx_date and end_dt <> max_dt;
3、创建暂时表用于存放从源表中提取的数据
create multiset volatile table new;
4、创建暂时增量表用于存放增量数据,这里会存放源系统物理删除的数据并使用min_date进行标识
create multiset volatile table inc;
5、依据一定的规则向暂时表中载入源表数据,依据需求而定
insert into new select ... from xxx where ...;
6、用暂时表的数据与仓库表数据作对照。将新增和更改的数据存入增量表中
insert into inc select ... from new where .. not in ..;
7、用仓库表的有效数据主键跟暂时表数据主键作对照 in 仓库表 not in 暂时表的即为源系统物理删除的字段。将其end_dt用min_date标识存入增量表(这条数据来源于仓库)
insert into .. select ... from where end_dt=$max_date and etl_job_num=920 and (agt_num,agt_modif_num) not in (select agt_num,agt_modif_num from new)
8、对全部在增量表的而且是有效的数据进行关链处理
update xxx set end_dt=$tx_date where ...;
9、对全部处于增量表中的而且end_dt标识不是min_date的数据进行拉新链处理
insert into xxx select ... from inc where end_dt <> $min_date;
五、0616(经济型历史拉链算法)
1、设置事无级别为RU优先于其它事务
set session characteristics as transaction isolation level ru
2、创建暂时表用于存放从源表中提取的数据
create multiset volatile table new
3、创建增量表用于存放增量数据 这里仅仅会存放新增个更改的数据
create multiset volatile table inc
4、创建删除表用于存放逻辑删除数据 带有特殊标识的逻辑删除数据
create multiset volatile table del
5、向暂时表中插入数据依照一定的载入规则
insert into new
6、用暂时表的数据与仓库表数据作对照将新增的更改的数据存入增量表中
insert into inc select ... from new
7、将源表数据中有特殊标识的(一般为end_dt=min_date)存入删除表中
insert into del select .. from new where end_dt=min_date
8、对全部在增量表和删除表中数据进行关链处理
update xxx set end_dt=$tx_date where ...
9、对全部在增量表中的数据拉新链除了指定项
insert into xxx select ... from inc where seq_num <>''
六、0613(逻辑删除的历史拉链算法)
0613和0616差点儿一样,除了最后一步
9、对全部在增量表中的数据拉新链
ETL拉链算法汇总大全的更多相关文章
- 排序算法汇总(C/C++实现)
前言: 本人自接触算法近2年以来,在不断学习中越多地发觉各种算法中的美妙.之所以在这方面过多的投入,主要还是基于自身对高级程序设计的热爱,对数学的沉迷.回想一下,先后也曾参加过ACM大大小小的 ...
- Github上PHP资源汇总大全,php学习的好资料
Github上PHP资源汇总大全,php学习的好资料 国外程序员ziadoz 在Github上收集整理了PHP的各种资源,内容包括模板.框架.数据库.安全等方面的库和工具.汇总了各种PHP资源,供各位 ...
- 边缘检测matlab算法汇总
边缘检测matlab算法汇总 1. 基于一阶微分算子检测边缘图像 一阶微分边缘算子又称梯度边缘算子,它是利用图像在边缘处的阶跃性,及图像梯度在边缘去得极大值得特征性进行边缘检测. Sobel ...
- JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)
1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...
- Python: PS 图层混合算法汇总
本文用 Python 实现了PS 中的图层混合算法,把很多常见的图层混合算法都汇总到了一起,比起以前写的算法,就是用矩阵运算代替了很耗时的for 循环,运行效率有所提升.具体的代码如下: import ...
- OI省选算法汇总
copy from hzwer @http://hzwer.com/1234.html 侵删 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 ...
- Java常用的7大排序算法汇总
1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过 ...
- javascript算法汇总(持续更新中)
1. 线性查找 <!doctype html> <html lang="en"> <head> <meta charset="U ...
- 七内部排序算法汇总(插入排序、Shell排序、冒泡排序、请选择类别、、高速分拣合并排序、堆排序)
写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的随意序列,又一次排列成一个按keyword有序的序列.因此排序掌握各种排序算法很重要. 对以下介绍的各个排序,我们假定全部排 ...
随机推荐
- webService的wsdl和restful的wadl的区别
WebService之WADL和WSDL区别 两者都是基于自然语言描述的Web Application接口 . WADL主要用于Rest基础. Java开发WebService最重要的两个规范: JS ...
- iOS-Cocoapods更新不及时
一.问题 使用cocoapods搜索某些库时,搜索到的版本低于Github上面的版本,这样会导致一些问题.例如我在使用一个LTNavigationBar这个库时,在我升级到iOS10的时候,会导致导航 ...
- Java面试题之如何防止重复下单问题?
在电商环境下,如何防止重复下单这种问题,很常见,并且解决方案有很多种,我经过百度,并且加入我的理解唠嗑几句: 流程: ①当进入商品详情页时,去生成一个全局唯一ID(可用雪花算法): ②将这个全局唯一I ...
- css iframe边框去掉
[IE6以下] iframe边框通过css设定在FF下正常在ie下却还存在边框,通过在iframe标签内部设置属性 frameborder="no" border="0& ...
- 【05】react 之 组件state
1.1. 状态理解 React的数据流:由父节点传递到子节点(由外到内传递),如果顶层组件某个prop改变了,React会向下传递,重新渲染所有使用过该属性的组件.除此之外React 组件内部还具有 ...
- 【04】react 之 复合组件
1.1. 什么是组件? 前端开发中组件也称为UI组件,组件即将一段或几段完成各自功能的代码段封装为一个或几个独立的部分.UI组件包含了这样一个或几个具有各自功能的代码段,最终完成了用户界面的表示.R ...
- idea下载多个插件项目启动不了解决方案
今天下载mybatis plugin插件的时候 有好多个版本的plugin,然后呢,看第二个比较热门,就下载了第二个,然后重启idea发现这个插件貌似得花钱,那算了吧,咱用第一个免费的吧,就又下载了第 ...
- php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数
最近不忙,同事在忙一个app项目.当听到领导安排让他做一个判断苹果还是安卓手机,如果是安卓手机下载安卓app.如果是苹果手机下载苹果app;然后我就上网搜了一下学习学习: php通过$_SERVER[ ...
- Nginx修改版本信息或隐藏版本号
一,隐藏版本号.首先说明,这个是某一方面隐藏,不是彻底隐藏.未隐藏之前查看nginx信息: 隐藏方法: 修改nginx.conf配置文件,在http { } 标签里边加入字段: server_toke ...
- 代码Rework中的反思
以前编码只是关注能写出来,并让程序运行就完事,这是非常错误的想法. 让我们重新思考软件设计中的一些问题吧! 软件设计就像设计房屋,设计器具,是一个道理.软件的复杂度和bug完全是自己造成的,要设计好的 ...