Kettle源码分析_(详包)
pentaho-kettle编译

Pentaho-Kettle是一款开源的ETL工具,它可以帮助用户实现各种数据集成、数据转换和数据加载的任务。
本文将对Pentaho-Kettle的编译过程进行详细介绍,以便读者能够更好地理解并使用这一工具。
一、Pentaho-Kettle编译概述1. Pentaho-Kettle的源代码是使用Java语言编写的,因此要进行编译,首先需要安装JDK(Java Development Kit)。
2. 在JDK安装完成后,需要下载Pentaho-Kettle的源代码,并解压到本地的开发环境中。
3. Pentaho-Kettle的源代码采用Ant构建系统进行编译,因此还需要安装Ant工具。
4. 接下来,就可以使用Ant工具进行编译Pentaho-Kettle的源代码了。
二、安装JDK1. 在冠方全球信息站(xxx)上下载最新版本的JDK安装包。
2. 安装JDK时,需要按照冠方指南进行操作,确保安装成功。
三、下载Pentaho-Kettle源代码1. 从Pentaho冠方全球信息站(xxx Integration/)上下载最新版本的Pentaho-Kettle源代码压缩包。
2. 将下载的压缩包解压到本地的开发环境目录中。
四、安装Ant工具1. 在冠方全球信息站(xxx)上下载最新版本的Ant安装包。
2. 安装Ant时,需要按照冠方指南进行操作,确保安装成功。
五、编译Pentaho-Kettle源代码1. 打开命令行工具,进入到Pentaho-Kettle源代码的根目录。
2. 执行命令“ant clean all”,等待编译过程完成。
3. 编译成功后,会在Pentaho-Kettle源代码的根目录生成相应的可执行文件和库文件。
六、常见问题及解决方法1. 编译过程中可能会遇到缺少依赖库的情况,这时需要根据错误提示下载并安装相应的依赖库。
2. 在安装JDK和Ant工具时,需要确保环境变量已正确配置,否则无法成功编译Pentaho-Kettle源代码。
kettle资源库表结构说明

kettle资源库表结构说明Kettle资源库表结构说明Kettle是一种开源的ETL(Extract, Transform, Load)工具,用于数据集成和数据转换。
在Kettle中,资源库(Repository)是一个数据库,用于存储和管理Kettle的各种元数据信息。
资源库表结构是资源库中存储这些元数据信息的表的结构,本文将对Kettle资源库表结构进行详细说明。
1. R_DATABASE表R_DATABASE表用于存储Kettle中的数据库连接信息。
该表包含以下字段:- ID:数据库连接的唯一标识符。
- NAME:数据库连接的名称。
- TYPE:数据库类型,如MySQL、Oracle等。
- ACCESS:数据库访问类型,如JNDI、ODBC等。
- HOST_NAME:数据库服务器的主机名。
- DATABASE_NAME:数据库名称。
- PORT:数据库服务器的端口号。
- USERNAME:数据库的用户名。
- PASSWORD:数据库的密码。
2. R_REPOSITORY表R_REPOSITORY表用于存储资源库的信息。
该表包含以下字段:- ID_REPOSITORY:资源库的唯一标识符。
- NAME:资源库的名称。
- DESCRIPTION:资源库的描述信息。
- BASE_DIRECTORY:资源库的基础目录。
3. R_TRANSFORMATION表R_TRANSFORMATION表用于存储转换(Transformation)的信息。
转换是Kettle中的基本单位,用于定义数据的抽取、转换和加载过程。
该表包含以下字段:- ID_TRANSFORMATION:转换的唯一标识符。
- NAME:转换的名称。
- DESCRIPTION:转换的描述信息。
- EXTENDED_DESCRIPTION:转换的扩展描述信息。
- TRANS_VERSION:转换的版本号。
- TRANS_STATUS:转换的状态。
基于kettle自动完成API数据解析入库

基于kettle自动完成API数据解析入库一、需求分析为从学生信息系统中获取学生数据信息,并实时存入数据中台近源层,为后续开展相关分析准备好数据。
从源端学生信息系统获悉,源端学生信息数据统一通过数据服务API 接口开放访问,因此,数据中台侧需自行解析API获取学生信息数据。
二、学生信息API接口说明源端提供学生信息API接口信息详情如下表所示:获取apiToken方式如下:(1)资源URL:http://192.168.102.230:8080/user/ api_authentication(2)HTTP协议:post(3)Content-Type:application/json;charset=UTF-8(4)POST Body JSON 参数:(5)返回成功示例:三、kettle设计3.1 转换设计根据转换需求,设计流程如下:(1)生成记录主要设置ETL 转换中用到的一些变量及其值,如下:配置截图如下:(2)REST client主要配置访问Restful 接口,配置截图如下:(3)JSON input主要配置对Json 格式的数据源进行解析,配置截图如下:(4)表输出主要配置向数据库的表中写入数据,目标表需提前创建。
配置截图如下:3.2 作业设计根据作业运行需求,设计作业运行流程如下:(1)Start作业起点,配置作业运行周期为2分钟,每2分钟自动执行一次作业,实现API数据的解析和入库。
(2)SQL通过SQL脚本,在每次作业运行前,先对目标表进行清空数据,脚本如下:(3)转换调用3.1章节已设计好的转换,配置截图如下:(4)发送邮件对上一步转换运行结果,及时通过发送邮件告知作业运行状态,分为运行成功和运行失败2种情况。
运行成功时,组件配置如下:运行失败时,组件配置如下:四、验证启动作业,运行结果如下:到目录库查看数据表,如下图显示,确认作业运行成功,数据如期写入目标表中,同时收到作业运行成功的邮件通知。
Kettle产品详细介绍

晴天云目录Kettle产品详细介绍简介简单地说,Kettle 就是国外一个开源的ETL工具。
其主要功能就是对源数据进行抽取、转换、装入和加载数据。
也就是将源数据整合为目标数据。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Spoon 是一个图形用户界面,它允许运行转换或者任务,其中转换是用pan工具来运行,任务是用Kitchen来运行。
Pan 是一个数据转换引擎,它可以执行很多功能。
例如从不同的数据源读取、操作和写入数据。
Kitchen 是一个可以运行利用xml或数据资源库描述的任务,通常任务是在规定的时间间隔内用批处理的模式自动运行。
Kettle主要包括以下三大块:一、Spoon——转换/工作(transform/job)设计工具(GUI方式);二、Kitchen——工作(job)执行器(命令行方式) ;三、Span——转换(trasform)执行器(命令行方式)。
的安装首先,必须先安装Sun 公司的JAVA 运行环境以上的版本(包括),并配置好环境变量;然后,将下载的Kettle软件解压到目标目录,就可以看到Kettle的启动文件或;最后,运行启动文件。
Windows 平台的启动:双击。
Linux 平台的启动:双击。
的详细介绍资源库管理登陆时可以选择”没有资源库”即可进入Kettle,此时所定义的转换和工作将只能存储在本地磁盘上,以.ktr文件和.kjb文件的方式。
若使用资源库登录,则所有定义的转换和工作将会存储到资源库里。
实际上,资源库就是一个数据库,比如SQL SERVER数据库,里面存储了Kettle定义的元素的相关元数据,简单而言,就是元数据库。
如果资源库创建完毕,则资源库的相关信息将存储在文件“”中,它位于你的缺省home 目录的隐藏目录“.kettle”中。
如果是windows 系统,这个路径就是c:\Documents andSettings\<username>\.kettle。
课题_kettle 程序调用执行ktr转换示例代码

kettle 程序调用执行ktr转换示例代码package com.***.dci;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.logicalcobwebs.proxool.admin.servlet.AdminServlet;import org.pentaho.di.core.exception.KettleException;import org.pentaho.di.core.util.EnvUtil;import org.pentaho.di.trans.StepLoader;import org.pentaho.di.trans.Trans;import org.pentaho.di.trans.TransMeta;import org.pentaho.di.trans.performance.StepPerformanceSnapShot;public class Test {/*** @param args* @throws IOException*/public static void main(String[] args) throws IOException {// 解释runTransformation("c:/ss.ktr");}public static void runTransformation(String filename) throws IOException {try {//初始化任务StepLoader.init();EnvUtil.environmentInit();TransMeta transMeta = new TransMeta(filename);transMeta.setCapturingStepPerformanceSnapShots(true);Trans trans = new Trans(transMeta);trans.setMonitored(true);trans.setInitializing(true);trans.setPreparing(true);trans.setRunning(true);trans.setSafeModeEnabled(true);trans.execute(null); // You can pass arguments instead of null.//放入一个MAP存储结果HashMap map = new HashMap();trans.setStepPerformanceSnapShots(map);while (!trans.isFinished()) {if (trans.getStepPerformanceSnapShots() != null&& trans.getStepPerformanceSnapShots().size() > 0) {//得到所有步骤Map<String, List<StepPerformanceSnapShot>> SnapShots = trans.getStepPerformanceSnapShots();//输出动态监控情况Iterator it = SnapShots.entrySet().iterator();String oneTimeOneStepInfo = "";String ontTimeAllStepInfo = "";while(it.hasNext()){Entry en = (Entry)it.next();//步骤当前情况ArrayList SnapShotList = (ArrayList) en.getV alue();if (SnapShotList != null && SnapShotList.size() > 0) {StepPerformanceSnapShot SnapShot = (StepPerformanceSnapShot) SnapShotList.get(SnapShotList.size() - 1);oneTimeOneStepInfo = ( "StepName:"+SnapShot.getStepName()+";"+"Errors: " + SnapShot.getErrors() + ";"+ "InputBufferSize: "+ SnapShot.getInputBufferSize()+ ";"+ "LinesInput: " + SnapShot.getLinesInput()+ ";"+ "LinesOutput: "+ SnapShot.getLinesOutput() + ";"+ "LinesRead: "+ SnapShot.getLinesRead()+ ";"+ "LinesRejected: "+ SnapShot.getLinesRejected()+ ";"+ "LinesUpdated: "+ SnapShot.getLinesUpdated()+ ";"+ "LinesWritten: "+ SnapShot.getLinesWritten()+ ";"+ "OutputBufferSize: "+ SnapShot.getOutputBufferSize()+ ";"+ "StepCopy: " + SnapShot.getStepCopy()+ ";"+ "TimeDifference: "+ SnapShot.getTimeDifference()+ ";"+ "TotalErrors: "+ SnapShot.getTotalErrors()+ ";"+ "TotalLinesInput: "+ SnapShot.getTotalLinesInput()+ ";"+ "TotalLinesOutput: "+ SnapShot.getTotalLinesOutput()+ ";"+ "TotalLinesRead: "+ SnapShot.getTotalLinesRead()+ ";"+ "TotalLinesRejected: "+ SnapShot.getTotalLinesRejected()+ ";"+ "TotalLinesUpdated: "+ SnapShot.getTotalLinesUpdated()+ ";"+ "TotalLinesWritten: "+ SnapShot.getTotalLinesWritten()+ ";"+ "Date:"+ SnapShot.getDate() + "\n");ontTimeAllStepInfo+=oneTimeOneStepInfo;}System.out.println(ontTimeAllStepInfo+"\n\n\n\n");}}}System.out.println("end............");} catch (KettleException e) {// TODO Put your exception-handling code here.System.out.println(e);}}}。
Kettle体系结构与源码分析(详细全面)

Kettle程序分析1.简介ETL是数据抽取(Extract)、转换(Transform)、装载(Load)的过程。
Kettle是一款国外开源的ETL工具,有两种脚本文件transformation和job,transformation 完成针对数据的基础转换,job则完成整个工作流的控制。
2.相关概念Job:一个作业,由不同逻辑功能的entry组件构成,数据从一个entry组件传递到另一个entry组件,并在entry组件中进行相应的处理。
Transformation:完成针对数据的基础转换,即一个数据转换过程。
Entry:实体,即job型组件。
用来完成特定功能应用,是job的组成单元、执行单元。
Step:步骤,是Transformation的功能单元,用来完成整个转换过程的一个特定步骤。
Hop:工作流或转换过程的流向指示,从一个组件指向另一个组件,在kettle源工程中有三种hop,无条件流向、判断为真时流向、判断为假时流向。
3.体系结构kettle平台是整个系统的基础,包括元数据管理引擎、数据集成引擎、UI和插件管理模块。
(1)元数据管理引擎元数据管理引擎管理ktr、kjb或者元数据库,插件通过该引擎获取基本信息,主要包括TransMeta、JobMeta和StepMeta三个类。
TransMeta类,定义了一个转换(对应一个.ktr文件),提供了保存和加载该文件的方法;JobMeta类,同样对应于一个工作(对应一个.kjb文件),提供保存和加载方法;StepMeta类,保存的是Step的一些公共信息的类,每个类的具体的元数据将保存在显示了StepMetaInterface的类里面。
(2)数据集成引擎数据集成引擎包括Step引擎、Job引擎和数据库访问引擎三大部分,主要负责调用插件,并返回相应信息。
(3)UIUI显示Spoon这个核心组件的界面,通过xul实现菜单栏、工具栏的定制化,显示插件界面接口元素,其中的TransGraph类和JobGraph类是用于显示转换和Job的类。
kettle 分层解析

kettle 分层解析摘要:1.Kettle 分层解析简介2.Kettle 分层解析的步骤3.Kettle 分层解析的优点4.Kettle 分层解析的局限性5.Kettle 分层解析的应用示例正文:1.Kettle 分层解析简介Kettle 分层解析是一种数据处理技术,主要用于将大量数据分解为多个较小的子集,以便更容易管理和分析。
这种技术可以帮助用户更有效地从数据中提取信息,从而实现对数据的快速处理和解析。
2.Kettle 分层解析的步骤Kettle 分层解析主要包括以下几个步骤:(1)数据抽取:从原始数据源中抽取所需数据。
(2)数据转换:将抽取的数据进行清洗、转换和集成,使其符合分析要求。
(3)数据存储:将转换后的数据存储到临时数据库或其他存储介质中,以便后续分析。
(4)数据分析:对存储的数据进行分析,以提取所需的信息和知识。
(5)结果呈现:将分析结果以图表、报告等形式呈现给用户。
3.Kettle 分层解析的优点Kettle 分层解析具有以下优点:(1)易于管理和维护:将大量数据分解为多个较小的子集,有助于提高数据处理的效率,降低维护成本。
(2)灵活性:Kettle 分层解析可以根据实际需求对数据进行定制,以满足不同场景的分析需求。
(3)可扩展性:Kettle 分层解析可以很容易地与其他数据处理工具和系统集成,以实现更高效的数据处理。
4.Kettle 分层解析的局限性尽管Kettle 分层解析具有很多优点,但仍存在以下局限性:(1)对硬件资源要求较高:由于需要处理大量数据,Kettle 分层解析对硬件资源有一定要求,可能导致成本上升。
(2)数据安全风险:Kettle 分层解析可能导致数据泄露,因此在使用过程中需要注意数据安全问题。
5.Kettle 分层解析的应用示例Kettle 分层解析在很多领域都有广泛应用,例如:(1)市场调查:通过对大量市场数据进行分层解析,可以提取出有关市场趋势、消费者需求等方面的信息,为企业制定市场策略提供依据。
2024版年度搞定Kettle详细教程

降低工作强度。
12
03
数据抽取、转换与加载实战演练
2024/2/3
13
数据源连接配置方法论述
确定数据源类型
根据实际需求选择合适的数据源类型,如关系 型数据库、文件、API等。
2024/2/3
配置数据源连接参数
根据所选数据源类型,配置相应的连接参数,如数据 库地址、端口、用户名、密码等。
测试数据源连接
可视化展示
通过图表等方式直观展示监控指标和报警信息,提高问题发现和处理 效率。
2024/2/3
21
Hale Waihona Puke 日志查看和问题排查方法根据日志信息快速定位问题所在,如 数据源连接失败、数据转换错误等。
对问题排查和解决过程进行总结和归 纳,形成经验库,为后续类似问题提 供参考和借鉴。
日志查看
问题定位
问题解决
经验总结
提供详细的日志查看功能,包括任务 执行日志、系统日志等,以便追踪任 务执行过程和排查问题。
2024/2/3
针对定位到的问题,提供相应的解决 方案和修复措施,确保任务能够恢复 正常执行。
22
05
高级功能拓展与应用场景探讨
2024/2/3
23
自定义函数编写技巧分享
掌握Kettle内置函数
了解并熟悉Kettle提供的内置函数,包括字符串处理、日期转换、 数学计算等,为编写自定义函数打下基础。
2024/2/3
3
Kettle简介及应用场景
1
Kettle是一款开源的ETL工具,全称为Pentaho Data Integration,主要用于数据抽取、转换和 加载。
2
Kettle可以应用于数据迁移、数据整合、数据处 理等多种场景,支持多种数据源和数据格式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PDI(Kettle)源码分析说明书版本:Kettle v3.2************************有限公司企业技术中心2010-1-29源码结构src\目录下代码结构org.pentaho.di.cluster模块序号模块名称备注说明1 ClusterSchema 群集模式结合了从服务器列表,让他们完全可以设置。
它(可以)包含高性能的优化选项这一组。
例如关于期权与节点本身来过滤的主节点通信。
2 Messages 集群设置相关国际化消息读取get()set()方法.3 SlaveServer 从服务器的配置调用。
org.pentaho.di.core模块序号模块名称备注说明1 AddUndoPositionInterface接口。
内含addUndoPosition()2 Condition 这个类描述了一般意义的条件3 EngineMetaInterface 接口4 LastUsedFile 上次使用的文件5 NotePadMeta 描述一份转换,作业,架构,或报告。
org.pentaho.di.core.annotationsorg.pentaho.di.core.changedorg.pentaho.di.core.configorg.pentaho.di.core.guiorg.pentaho.di.core.listenersorg.pentaho.di.core.playlistorg.pentaho.di.core.pluginsorg.pentaho.di.core.reflectionorg.pentaho.di.core.undoorg.pentaho.di.joborg.pentaho.di.job.entriesorg.pentaho.di.job.entries.abortorg.pentaho.di.job.entries.addresultfilenamesorg.pentaho.di.job.entries.columnsexistorg.pentaho.di.job.entries.connectedtorepositoryorg.pentaho.di.job.entries.copyfilesorg.pentaho.di.job.entries.copymoveresultfilenamesorg.pentaho.di.job.entries.createfileorg.pentaho.di.job.entries.createfolderorg.pentaho.di.job.entries.delayorg.pentaho.di.job.entries.deletefileorg.pentaho.di.job.entries.deletefilesorg.pentaho.di.job.entries.deletefoldersorg.pentaho.di.job.entries.deleteresultfilenamesorg.pentaho.di.job.entries.dtdvalidatororg.pentaho.di.job.entries.emptyorg.pentaho.di.job.entries.evalorg.pentaho.di.job.entries.evaluatetablecontentorg.pentaho.di.job.entries.exportrepositoryorg.pentaho.di.job.entries.filecompareorg.pentaho.di.job.entries.fileexistsorg.pentaho.di.job.entries.filesexistorg.pentaho.di.job.entries.folderisemptyorg.pentaho.di.job.entries.folderscompareorg.pentaho.di.job.entries.ftporg.pentaho.di.job.entries.ftpdeleteorg.pentaho.di.job.entries.ftpputorg.pentaho.di.job.entries.getpoporg.pentaho.di.job.entries.httporg.pentaho.di.job.entries.joborg.pentaho.di.job.entries.mailorg.pentaho.di.job.entries.mailvalidatororg.pentaho.di.job.entries.movefilesorg.pentaho.di.job.entries.msaccessbulkloadorg.pentaho.di.job.entries.msgboxinfoorg.pentaho.di.job.entries.mssqlbulkloadorg.pentaho.di.job.entries.mysqlbulkfileorg.pentaho.di.job.entries.mysqlbulkloadorg.pentaho.di.job.entries.pingorg.pentaho.di.job.entries.setvariablesorg.pentaho.di.job.entries.sftporg.pentaho.di.job.entries.sftpputorg.pentaho.di.job.entries.shellorg.pentaho.di.job.entries.simpleevalorg.pentaho.di.job.entries.snmptraporg.pentaho.di.job.entries.specialorg.pentaho.di.job.entries.sqlorg.pentaho.di.job.entries.ssh2getorg.pentaho.di.job.entries.ssh2putorg.pentaho.di.job.entries.successorg.pentaho.di.job.entries.tableexistsorg.pentaho.di.job.entries.transorg.pentaho.di.job.entries.truncatetablesorg.pentaho.di.job.entries.unziporg.pentaho.di.job.entries.waitforfileorg.pentaho.di.job.entries.waitforsqlorg.pentaho.di.job.entries.writetologorg.pentaho.di.job.entries.xmlwellformedorg.pentaho.di.job.entries.xsdvalidatororg.pentaho.di.job.entries.xsltorg.pentaho.di.job.entries.zipfileorg.pentaho.di.job.entryorg.pentaho.di.job.entry.validatororg.pentaho.di.kitchenorg.pentaho.di.lineageorg.pentaho.di.panorg.pentaho.di.partitionorg.pentaho.di.pkgorg.pentaho.di.repositoryorg.pentaho.di.resourceorg.pentaho.di.sharedorg.pentaho.di.transorg.pentaho.di.trans.clusterorg.pentaho.di.trans.debugorg.pentaho.di.trans.performanceorg.pentaho.di.trans.steporg.pentaho.di.trans.step.errorhandlingorg.pentaho.di.trans.steps org.pentaho.di.trans.steps.abortorg.pentaho.di.trans.steps.accessinputorg.pentaho.di.trans.steps.accessoutputorg.pentaho.di.trans.steps.addsequenceorg.pentaho.di.trans.steps.addxmlorg.pentaho.di.trans.steps.aggregaterowsorg.pentaho.di.trans.steps.analyticqueryorg.pentaho.di.trans.steps.appendorg.pentaho.di.trans.steps.blockingsteporg.pentaho.di.trans.steps.calculatororg.pentaho.di.trans.steps.checksumorg.pentaho.di.trans.steps.cloneroworg.pentaho.di.trans.steps.closureorg.pentaho.di.trans.steps.columnexistsbinationlookuporg.pentaho.di.trans.steps.constantorg.pentaho.di.trans.steps.creditcardvalidatororg.pentaho.di.trans.steps.csvinputorg.pentaho.di.trans.steps.cubeinputorg.pentaho.di.trans.steps.cubeoutputorg.pentaho.di.trans.steps.databasejoinorg.pentaho.di.trans.steps.databaselookuporg.pentaho.di.trans.steps.dbprocorg.pentaho.di.trans.steps.delayorg.pentaho.di.trans.steps.deleteorg.pentaho.di.trans.steps.denormaliserorg.pentaho.di.trans.steps.detectemptystreamorg.pentaho.di.trans.steps.detectlastroworg.pentaho.di.trans.steps.dimensionlookuporg.pentaho.di.trans.steps.dummytransorg.pentaho.di.trans.steps.dynamicsqlroworg.pentaho.di.trans.steps.excelinputorg.pentaho.di.trans.steps.exceloutputorg.pentaho.di.trans.steps.execprocessorg.pentaho.di.trans.steps.execsqlroworg.pentaho.di.trans.steps.fieldsplitterorg.pentaho.di.trans.steps.fileexistsorg.pentaho.di.trans.steps.filesfromresultorg.pentaho.di.trans.steps.filestoresultorg.pentaho.di.trans.steps.filterrowsorg.pentaho.di.trans.steps.fixedinputorg.pentaho.di.trans.steps.flattenerorg.pentaho.di.trans.steps.formulaorg.pentaho.di.trans.steps.getfilenamesorg.pentaho.di.trans.steps.getfilesrowscountorg.pentaho.di.trans.steps.getpreviousrowfieldorg.pentaho.di.trans.steps.getsubfoldersorg.pentaho.di.trans.steps.getvariableorg.pentaho.di.trans.steps.getxmldataorg.pentaho.di.trans.steps.gpbulkloaderorg.pentaho.di.trans.steps.groupbyorg.pentaho.di.trans.steps.httporg.pentaho.di.trans.steps.httppostorg.pentaho.di.trans.steps.ifnullbrightoutputorg.pentaho.di.trans.steps.injectororg.pentaho.di.trans.steps.insertupdateorg.pentaho.di.trans.steps.janinoorg.pentaho.di.trans.steps.joinrowsorg.pentaho.di.trans.steps.ldapinputorg.pentaho.di.trans.steps.ldifinputorg.pentaho.di.trans.steps.luciddbbulkloaderorg.pentaho.di.trans.steps.mailorg.pentaho.di.trans.steps.mailvalidatororg.pentaho.di.trans.steps.mappingorg.pentaho.di.trans.steps.mappinginputorg.pentaho.di.trans.steps.mappingoutputorg.pentaho.di.trans.steps.mergejoinorg.pentaho.di.trans.steps.mergerowsorg.pentaho.di.trans.steps.mondrianinputorg.pentaho.di.trans.steps.monetdbbulkloaderorg.pentaho.di.trans.steps.mysqlbulkloaderorg.pentaho.di.trans.steps.normaliserorg.pentaho.di.trans.steps.nulliforg.pentaho.di.trans.steps.numberrangeorg.pentaho.di.trans.steps.orabulkloaderorg.pentaho.di.trans.steps.parallelgzipcsvorg.pentaho.di.trans.steps.pgbulkloaderorg.pentaho.di.trans.steps.processfilesorg.pentaho.di.trans.steps.propertyinputorg.pentaho.di.trans.steps.propertyoutputorg.pentaho.di.trans.steps.randomvalueorg.pentaho.di.trans.steps.regexevalorg.pentaho.di.trans.steps.replacestringorg.pentaho.di.trans.steps.reservoirsamplingorg.pentaho.di.trans.steps.rowgeneratororg.pentaho.di.trans.steps.rowsfromresultorg.pentaho.di.trans.steps.rowstoresultorg.pentaho.di.trans.steps.rssinputorg.pentaho.di.trans.steps.rssoutputorg.pentaho.di.trans.steps.samplerowsorg.pentaho.di.trans.steps.scriptvalues_modorg.pentaho.di.trans.steps.selectvaluesorg.pentaho.di.trans.steps.setvaluefieldorg.pentaho.di.trans.steps.setvariableorg.pentaho.di.trans.steps.socketreaderorg.pentaho.di.trans.steps.socketwriterorg.pentaho.di.trans.steps.sortorg.pentaho.di.trans.steps.sortedmergeorg.pentaho.di.trans.steps.splitfieldtorowsorg.pentaho.di.trans.steps.sqlorg.pentaho.di.trans.steps.sqlfileoutputorg.pentaho.di.trans.steps.stepmetaorg.pentaho.di.trans.steps.streamlookuporg.pentaho.di.trans.steps.stringcutorg.pentaho.di.trans.steps.switchcaseorg.pentaho.di.trans.steps.synchronizeaftermergeorg.pentaho.di.trans.steps.systemdataorg.pentaho.di.trans.steps.tableexistsorg.pentaho.di.trans.steps.tableinputorg.pentaho.di.trans.steps.tableoutputorg.pentaho.di.trans.steps.textfileinputorg.pentaho.di.trans.steps.textfileoutputorg.pentaho.di.trans.steps.uniquerowsorg.pentaho.di.trans.steps.uniquerowsbyhashsetorg.pentaho.di.trans.steps.univariatestatsorg.pentaho.di.trans.steps.updateorg.pentaho.di.trans.steps.validator。