增量更新策略:通过一个“update key”比较流数据记录与目标表中的记录比较进行数据整合。具有相同“update key”的记录当相关联列不同时将被更新;在目标表中不存在的记录将被插入。这种方式用来操作记录的变化不需要记录的时候。

IKM使用面向SQL编程的方法而不是通过逐行记录比较的方法来比较记录的不同。这种策略最常用的方法为把转换后的数据整合到I$表中,步骤:
①创建I$表,增加一个叫IND_UPDATE的列,用来标识这条记录是被插入还是被更新;
②把流数据插入到I$表中,所有的源数据被转换和插入到I$表中,IND_UPDATE被设置为“I”;
③如果在接口中选择“recycle errors”,则把被拒绝的记录添加进来;
④调用CKM进行数据质量检查;
⑤更新I$表的ind_update列如果与目标表中更新键相同的记录则标记为“U”;
⑥再次更新表I$中ind_update为“U”的记录,如果这些记录的列值与目标表相同则ind_update设置为“N”,接下来I$表中包含下面的记录:
  ·“I”这些记录将被插入
  ·“U”这些被更新
  ·“N”这些记录被忽略
⑦使用I$表中“U”的记录更新目标表;
⑧使用I$表中“I”的记录插入目标表。

注意:更新键必须是唯一的,在到多数情况下主键可以作为更新键。如果主键是代理键(自动更新的),在这种情况下基于源的列被用作更新键。
IKM incremental update的步骤:
①Create the flow table in the staging area
②Determine what to update (using the update key)
③Determine what shouldn’t be updated by comparing the data
④Update the target with the existing records
⑤Insert new records

odi增量更新策略的更多相关文章

  1. 一个简单的数据增量更新策略(Android / MongoDB / Django)

    我在做个人APP - CayKANJI - 的时候遇到一个问题: 如何增量式地把日语汉字数据地从server更新到APP端,即每次用户运行更新操作时,仅仅获取版本号高于本地缓存的内容. 数据格式 为了 ...

  2. Unity手游之路<十二>手游资源热更新策略探讨

    http://blog.csdn.net/janeky/article/details/17666409 上一次我们学习了如何将资源进行打包.这次就可以用上场了,我们来探讨一下手游资源的增量更新策略. ...

  3. [unity3d]手游资源热更新策略探讨

    原地址:http://blog.csdn.net/dingxiaowei2013/article/details/20079683 我们学习了如何将资源进行打包.这次就可以用上场了,我们来探讨一下手游 ...

  4. [转]Unity手游之路<十二>手游资源热更新策略探讨

    最近梳理了下游戏流程.恩,本来想写下,但是,还是看前辈的吧 版权声明: https://blog.csdn.net/janeky/article/details/17666409 上一次我们学习了如何 ...

  5. 【学习】Unity手游之路<十二>手游资源热更新策略探讨

    http://blog.csdn.net/janeky/article/details/17666409 =============================================== ...

  6. **app后端设计(10)--数据增量更新(省流量)

    在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...

  7. require 增量更新与版本管理

    使用require.js 加载JS文件时,当JS文件有更新,可以通过更改全局版本号( urlArgs : 'v=1'),告诉浏览器加载新的文件. 但该方法虽然使用方便,但美中不足的是有些不需要更新的文 ...

  8. app后端设计(10)--数据增量更新

    在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...

  9. 自动增量更新war包的shell脚本

    我们项目是打包成war部署在jboss中的,但在上线或者运行时,经常要修改某些类然后再增量更新到war(因为生产环境只有发布的同时有,不能每个人都打包),所以都是手动做的,耗时耗力. 我花了点时间写了 ...

随机推荐

  1. C#1 输入输出 常量变量

    C#  输入输出  常量变量 //输出 Console.WriteLine("这是一行文字"); 自动回车的. Console.Write("Hello world&qu ...

  2. 初学DIV+CSS要记住的

    初学DIV+CSS?有六个问题需要您关注一下!作为DIV+CSS初学者,如果在动手写代码之前对网页整体结构由一个清晰认识的话,写起来会事半功倍!但是,写的过程中总是有这样那样的问题,使得我们不得不停下 ...

  3. HDU 1039 -Easier Done Than Said?

    水水的 #include <iostream> #include <cstring> using namespace std; ]; bool flag; int vol,v2 ...

  4. A==?B(A,B超级大)

    #include <iostream>#include <string.h>#include <cstring>using namespace std;struct ...

  5. 一.oracle的SQL中group by使用的情况(与聚合函数的关系)

    SELECT r.industry_1,r.industry_2,r.agent_id,r.agent_name,COUNT(DISTINCT r.customer_name_a)数据总量,COUNT ...

  6. easyui跨iframe属性datagrid

    1.问题 如何刷新easyui父级tab页中iframe嵌套页中的datagrid? 2.解决方法 (1) parent.$("iframe[title='tabtitle']") ...

  7. CSS自学笔记(8):CSS拓展(一)

    CSS元素对齐 可以使用margin属性类进行元素的水平对齐 水平对齐块元素时,可以将块元素的margin属性定义为"auto",这里需要注意的是,应该要声明!DOCTYPE,否则 ...

  8. Android03-Activity生命周期及启动模式

    1.返回栈概念 2.生命周期 1. onCreate() 这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动 第一次被创建的时候调用.你应该在这个方法中完成活动的初始化操作,比如 ...

  9. 旧的VirtualBox News(从1.3.4开始)

    https://linuxtoy.org/archives.html https://linuxtoy.org/archives/virtualbox-134.html http://www.cnbl ...

  10. Git与SVN的比较及优点

    前天处女面被问到了你为什么要用Git而不用SVN,答的不是很理想,正好今天晚上小组内部进行了Git使用的培训,便想着总结一下Git与SVN的差异以及Git的优点. 一.Git与SVN的比较 1.git ...