odi增量更新策略
增量更新策略:通过一个“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增量更新策略的更多相关文章
- 一个简单的数据增量更新策略(Android / MongoDB / Django)
我在做个人APP - CayKANJI - 的时候遇到一个问题: 如何增量式地把日语汉字数据地从server更新到APP端,即每次用户运行更新操作时,仅仅获取版本号高于本地缓存的内容. 数据格式 为了 ...
- Unity手游之路<十二>手游资源热更新策略探讨
http://blog.csdn.net/janeky/article/details/17666409 上一次我们学习了如何将资源进行打包.这次就可以用上场了,我们来探讨一下手游资源的增量更新策略. ...
- [unity3d]手游资源热更新策略探讨
原地址:http://blog.csdn.net/dingxiaowei2013/article/details/20079683 我们学习了如何将资源进行打包.这次就可以用上场了,我们来探讨一下手游 ...
- [转]Unity手游之路<十二>手游资源热更新策略探讨
最近梳理了下游戏流程.恩,本来想写下,但是,还是看前辈的吧 版权声明: https://blog.csdn.net/janeky/article/details/17666409 上一次我们学习了如何 ...
- 【学习】Unity手游之路<十二>手游资源热更新策略探讨
http://blog.csdn.net/janeky/article/details/17666409 =============================================== ...
- **app后端设计(10)--数据增量更新(省流量)
在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...
- require 增量更新与版本管理
使用require.js 加载JS文件时,当JS文件有更新,可以通过更改全局版本号( urlArgs : 'v=1'),告诉浏览器加载新的文件. 但该方法虽然使用方便,但美中不足的是有些不需要更新的文 ...
- app后端设计(10)--数据增量更新
在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...
- 自动增量更新war包的shell脚本
我们项目是打包成war部署在jboss中的,但在上线或者运行时,经常要修改某些类然后再增量更新到war(因为生产环境只有发布的同时有,不能每个人都打包),所以都是手动做的,耗时耗力. 我花了点时间写了 ...
随机推荐
- global变量
在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用, $global $a; $a=123; function f() { echo $a; //错 ...
- openstack外篇之认识mysql授权及一些操作
openstack外篇之认识mysql授权及一些操作 http://www.aboutyun.com/thread-11405-1-1.html
- [Linked List]Rotate List
Total Accepted: 55428 Total Submissions: 250727 Difficulty: Medium Given a list, rotate the list to ...
- ApiDemos示例学习(1)——ApiDemos示例的导入
---恢复内容开始--- 今天准备开始写这个ApiDemos示例的学习日记了,放在网上以监督自己! 首先是导入该示例.如果我们在配置Android开发环境是,利用Android SDK 安装包中的SD ...
- WPF(MultiTrigger)
原文 http://blog.csdn.net/haifengzhilian/article/details/8822098 <Window x:Class="TestResource ...
- 学习Emacs系列教程
emacs最简单入门,只要10分钟 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...
- POJ 3104 Drying(二分答案)
[题目链接] http://poj.org/problem?id=3104 [题目大意] 给出n件需要干燥的衣服,烘干机能够每秒干燥k水分, 不在烘干的衣服本身每秒能干燥1水分 求出最少需要干燥的时间 ...
- centos6.5 eclipse C/C++开发环境
- 【Spring MVC系列】--(4)返回JSON
[Spring MVC系列]--(4)返回JSON 摘要:本文主要介绍如何在控制器中将数据生成JSON格式并返回 1.导入包 (1)spring mvc 3.0不需要任何其他配置,添加一个jackso ...
- wormhole提升hivereader读取速度方案
背景: 最近dw用户反馈wormhole传输速度很慢,有些作业甚至需要3-4个小时才能完成,会影响每天线上报表的及时推送.我看了下,基本都是从Hive到其他数据目的地,也就是使用的是hivereade ...