kettle中的合并记录使用记录

注意:合并记录的使用前提是2个数据源都按比较关键字排过序,否则合并之后的数据不准确,可能会多出很多。

该步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。

需要设置的参数:

旧数据来源:旧数据来源的步骤

新数据来源。新数据来源的步骤

标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种。

1. “identical” – 旧数据和新数据一样

2. “changed” – 数据发生了变化;

3. “new” – 新数据中有而旧数据中没有的记录

4. “deleted” –旧数据中有而新数据中没有的记录

关键字段:用于定位两个数据源中的同一条记录。

比较字段:对于两个数据源中的同一条记录中,指定需要比较的字段。

合并后的数据将包括旧数据来源和新数据来源里的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用一个标示字段,来指定新旧数据的比较结果。

注意:

旧数据和新数据需要事先按照关键字段排序。

旧数据和新数据要有相同的字段名称。

例子:

旧数据:

field1, field2

1, 1

2, 2

3, 3

4, 4

新数据

field1, field2

1, 1

2, 9

5, 5

设置:标志字段是flag,关键字段是 field1, 比较字段是field2

合并后的数据

field1; field2; flag

1; 1; identical

2; 9; changed

3; 3; deleted

4; 4; deleted

5; 5; new

原文地址:https://www.cnblogs.com/warling/p/8176477.html

时间: 2024-10-14 05:18:46

kettle中的合并记录使用记录的相关文章

查询数据库中所有名称相同的记录

昨天遇到了一个问题,查询用户表中所有用户名相同的记录.这个问题乍看很简单,但是细想起来没那么容易.头脑的第一反应就是读取一个条数据之后循环查找有没有相同的,如下: select u1.* from M_User u1,M_User u2 where u1.Name = u2.Name and u1.rowid <> u2.rowid 发现,当用户名相同的记录多余两个的时候会出现问题,每条记录会被查询出两次.比如id为1.2.3条记录的Name都是user1,那么1和3.2和3.1和2会被查询出

sqlite学习笔记11:C语言中使用sqlite之删除记录

最后一节,这里记录下如何删除数据. 前面所有的代码都继承在这里了,在Ubuntu14.04和Mac10.9上亲测通过. #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db" sqlite3 *db = NULL; char* sql = NULL; char *zErrMsg = NULL; con

为什么一个object_id在dba_objects中为什么查不到记录?

SQL> drop table test purge;SQL> create table test (id int,comments CLOB); SQL> select INDEX_NAME  , INDEX_TYPE,TABLE_OWNER ,TABLE_NAME from user_indexes where table_name='TEST'; INDEX_NAME                     INDEX_TYPE             TABLE_OWNER  

mysql记录集中记录序号,MySQL中实现rownum功能类似的语句(转)

MySQL 如何实现 Oracle 的 ROWNUM mysql> SELECT * FROM frutas;+-----------+----------+| nombre    | color    |+-----------+----------+| fresa     | rojo     || platano   | amarillo || manzana   | verde    || uva       | verde    || pera      | verde    || m

导数中的最小化日志记录:背景和理论

什么是最小化日志(Minimal Logging) 当数据库的恢复模式为SIMPLE或者BULK_LOGGED时,对于最小化日志类型的操作,事务日志不记录单独每个数据行的日志,而是记录对应页和区结构的修改日志.这样显著减少了操作产生的事务日志数量.例如,向某个数据页上插入200行数据,在最小化日志记录的情况下,只会记录一条此数据页变化的日志,而不是200条Insert日志. 最小化日志类型的操作 SELECT INTO Bulk导数操作,包括 BULK INSERT和BCP INSERT INT

如何查出同一张表中字段值重复的记录

如何查出同一张表中字段值重复的记录 (2013-03-25 11:28:51) 转载▼ 比如现在有一人员表(表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2where p1.idp2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address 可以实现上述效果. 几个删除重复记录的SQL

numpy函数库中一些常用函数的记录

numpy函数库中一些常用函数的记录 最近才开始接触python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1)mat( ) numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素.虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可以得到不同的结果,其中numpy函数库中matrix与MATLAB中matrices等价. 调用mat( )函数可以将数组转

Oracle中随机抽取N条记录

一.Oracle取随机数据  1.Oracle访问数据的基本方法:  1).全表扫描(Full table Scan):执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件.Oracle顺序的读分配给该表的每一个数据块,且每个数据块Oracle只读一次.这样全表扫描能够受益于多块读. 2).采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.     注:从Ora

python实现将文件中的每一行文本记录,保存到MongoDB数据库,并防止重复插入

文本如下: #日期 流水号 被浏览页面URL 第×页 访问者IP 访问时间 是否入口 操作系统 浏览器 语言 时区 屏幕分辨率 屏幕色彩位数 省份 城市 接入商 上网场所 是否安装ALEXA 2014-7-17 11452775496 http://www.imaibo.net/space/178120 1 59.41.23.101 2014-7-17 13:38:14 0 Windows XP Chrome 21.0.82014-7-17 11452775466 http://www.imai