没有合适的资源?快使用搜索试试~ 我知道了~
首页开源ETL工具kettle系列之常见问题
开源ETL工具kettle系列之常见问题
需积分: 47 234 浏览量
更新于2023-03-03
评论
收藏 53KB DOC 举报
开源ETL工具kettle系列之常见问题开源ETL工具kettle系列之常见问题开源ETL工具kettle系列之常见问题
资源详情
资源评论
资源推荐

开源 ETL 工具 kettle 系列之常见问题
阅读次数: 499 次 发布时间: 2008-10-09 18:21:22 发布人: 网络转载
来源: 网络转载
摘要:本文主要介绍使用 kettle 设计一些 ETL 任务时一些常见问题,这些问题大部分都不在官方 FAQ 上,
你可以在 kettle 的论坛上找到一些问题的答案
1.Join
我得到 A 数据流(不管是基于文件或数据库),A 包含 eld1 , eld2 , eld3 字段,然后我还有一个 B
数据流,B 包含 eld4 , eld5 , eld6 , 我现在想把它们 ‘加’ 起来, 应该怎么样做.
这是新手最容易犯错的一个地方,A 数据流跟 B 数据流能够 Join,肯定是它们包含 join key ,join key 可
以是一个字段也可以是多个字段。如果两个数据流没有 join key ,那么它们就是在做笛卡尔积,一般很少
会这样。比如你现在需要列出一个员工的姓名和他所在部门的姓名,如果这是在同一个数据库,大家都知
道会在一个 sql 里面加上 where 限定条件,但是如果员工表和部门表在两个不同的数据流里面,尤其是
数据源的来源是多个数据库的情况,我们一般是要使用 Database Join 操作,然后用两个 database
table input 来表示输入流,一个输入是部门表的姓名,另一个是员工表的姓名,然后我们认为这两个表
就可以 ”Join” 了,我们需要的输出的确是这两个字段,但是这两个字段的输出并不代表只需要这两个字
段的输入,它们之间肯定是需要一个约束关系存在的。另外,无论是在做 Join , Merge , Update ,
Delete 这些常规操作的时候,都是先需要做一个 compare 操作的,这个 compare 操作都是针对
compare key 的,无论两个表结构是不是一样的,比如 employee 表和 department 表,它们比较的
依据就是 employee 的外键 department_id , 没有这个 compare key 这两个表是不可能连接的起来
的.. 对于两个表可能还有人知道是直接 sql 来做连接,如果是多个输入数据源,然后是三个表,有人就开
始迷茫了,A 表一个字段,B 表一个字段,C 表一个字段,然后就连 Join 操作都没有,直接 database
table output , 然后开始报错,报完错就到处找高手问,他们的数据库原理老师已经在吐血了。如果是三
个表连接,一个 sql 不能搞定,就需要先两个表两个表的连接,通过两次 compare key 连接之后得到你
的输出,记住,你的输出并不能代表你的输入. 下面总结一下:
1.单数据源输入,直接用 sql 做连接
2.多数据源输入,(可能是文本或是两个以上源数据库),用 database join 操作.
3.三个表以上的多字段输出.
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0