术语定义:
Transformation-----转换
Step----------------步骤
Hops----------------跳接线
一个步骤是KETTLE中的最小执行单元,用于实现指定的单一逻辑任务。
一个转换是一批步骤组成的网状结构,用于实现一个相对完整的任务,转换,实际上定义了数据的流向。先看一个例子:
上图是一个转换,它从文本文件中读取数据,然后对其进行过滤,排序,最后将结果数据加载到一个关系型数据库中的一张表中。在数据过滤的过程中,当遇到错误时,数据会流向空操作。
转换,本质上是一张定向图,它描绘了数据转换逻辑的一个集合。在kettle中,转换文件的后缀是.ktr。
与转换相关的两个核心组件是步骤和跳接线:
步骤:是转换的一个构建块,比如文本文件输入输出步骤。在KETTLE中,大约有140个步骤,并基于功能进行分组,比如输入步骤,输出步骤,脚本步骤等等。转换中的每一个步骤用于执行特定的操作,比如进行输入操作,进行排序操作等等,用户可以编辑配置转换,以实现自身需求的功能。
跳接线:用于连接转换中的各个步骤,并将前一个或前多个步骤的元数据传递到下一个步骤中。在上图中,看起来每个步骤是依次执行的,其实并不是这样。跳接线在决定数据在步骤间的流向时并不依赖数据执行体(即步骤)的顺序。当启动转换时,每个步骤都会创建各个的线程并推送传递数据。
【注意】
所有步骤在启动和运行时都是并行的,因此步骤间的初始化顺序是不固定的。这也就是为什么,在前一个步骤中设置的变量不能在后续的步骤中使用。
双击步骤可对其进行编辑,按住shift+鼠标左键可以将步骤进行连接。
一个步骤可以拥有多个连接,转换中的数据流可以在其内的多个步骤间流通,在KETTLE的IDE中,跳接线由箭头表示,箭头的方向决定了数据的流向。当一个步骤的结果集被推送到多个步骤时,数据可以以复制的方式传递,也可以以分发的方式传递。复制的方式即每个后续的步骤收到的数据都是上一步骤的完整结果集,分发方式即每个后续的步骤收到的数据是上一步骤次序结果集,比如步骤A以分发的方式向步骤B和C推送数据,则B收到的数据中A结果集的1,3,5。。号记录,C收到的数据是A结果集的2,4,6。。号记录。
/******************************外星人乔丹拍板时间***************************************/
由于转换中的步骤的启动顺序不固定,且以并行的方式独立的运行在各自的线程内,所以前步骤设置的变量在后步骤中可能
获取不到,而针对每个步骤的产出,即输出结果,则可以由跳接线推送到下一个步骤中。
所以,在所有步骤启动完成之前,不能确保后续步骤拿到前一步骤的数据,而当所有步骤都处于运行状态,即都启动完成之后,
则可以由跳接线确保后续步骤可以拿到前一步骤的输出结果。