转至:
http://dsbjoe.iteye.com/blog/1151058
Input fields
Java代码
1.RowMetaInterface inputRowMeta = getInputRowMeta();
inputRowMeta对象包含了输入行的元数据,包括域、数据类型、长度、名字、格式等等。例如,查找名字为"customer"的域,可以采用如下方式:
Java代码
1.ValueMetaInterface customer = inputRowMeta.searchValueMeta("customer");
在一个transformation里查找域的名字是很慢的,以为每一条都要查找。建议在第一条记录的时候预先查好:
Java代码
1.if (first) {
2. yearIndex = getInputRowMeta().indexOfValue(getParameter("YEAR"));
3. if (yearIndex<0) {
4. throw new KettleException("Year field not found in the input row, check parameter 'YEAR'\!");
5.}
6.}
例如:处理年份这个整形的时候可以这样:
Java代码
1.Object[] r = getRow();
2....
3.Long year = inputRowMeta().getInteger(r, yearIndex);
或者,用下面这种简单的方式
Java代码
1.Long year = get(Fields.In, "year").getInteger(r);
Output fields
可以在“Fields”选项里添加你想要的新域,这样会自动在data.outputRowMeta里增加输出的metadata。
Java代码
1.Object[] outputRowData = RowDataUtil.resizeArray(r, data.outputRowMeta.size());
或者更便于记忆的方式:
Java代码
1.Object[] outputRowData = createOutputRow(r, data.outputRowMeta.size());
操作输出:
Java代码
1.outputRowData[getInputRowMeta().size()] = easterDate(year.intValue());
或者简易的方式:
Java代码
1.get(Fields.Out, "easter").setValue(r, easterDate(year.intValue());
2.IMPORTANT:
以下例子是pentaho官方给出的UDJC例子,但是例子貌似出现了错误,本来是讲firstname拼上lastname,合出一个name字段输出,但是demo里最后一段是
Java代码
1.putRow(data.outputRowMeta, r);
而正确的输出应该是
Java代码
1.putRow(data.outputRowMeta, outputRow);
完整例子如下 :
Java代码
1.String firstnameField;
2.String lastnameField;
3.String nameField;
4.public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
5.{
6.// 获取输入
7.//
8.Object[] r = getRow();
9.// 输入为空,直接false
10.//
11.if (r == null) {
12.setOutputDone();
13.return false;
14.}
15.// 处于性能考虑,parameter只查一次
16.//
17.if (first) {
18.firstnameField = getParameter("FIRSTNAME_FIELD");
19.lastnameField = getParameter("LASTNAME_FIELD");
20.nameField = getParameter("NAME_FIELD");
21.first=false;
22.}
23.// 用 createOutputRow() 来保证output的数组够大,能够装下任何新的域
24.//
25.Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
26.String firstname = get(Fields.In, firstnameField).getString(r);
27.String lastname = get(Fields.In, lastnameField).getString(r);
28.// Set the value in the output field
29.//
30.String name = firstname+" "+lastname;
31.get(Fields.Out, nameField).setValue(outputRow, name);
32.// putRow will send the row on to the default output hop.
33.//
34.putRow(data.outputRowMeta, outputRow);
35.return true;
36.}
分享到:
相关推荐
《详解kettle之User Defined Java Class步骤》示例代码,是最详细的udjc步骤说明文档,有示例理解更容易,更全面。
首先,Kettle支持两种方式来调用Java类:使用“Java Class”步骤和使用“Execute Java Script”步骤。"Java Class"步骤允许直接执行一个预编译的Java类,而"Execute Java Script"步骤则用于运行Java Script...
Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...
在这个场景中,我们讨论的是如何利用Java代码生成并运行Kettle作业。 首先,让我们详细了解Kettle作业。Kettle作业是一系列步骤的集合,这些步骤按照特定顺序执行,通常用于执行一系列ETL任务。它们可以包含数据...
【Kettle与Java集成详解】 Kettle,又称为Pentaho Data Integration(PDI),是一款强大的ETL(Extract, Transform, Load)工具,用于数据整合和数据清洗。它提供了图形化的界面来设计数据处理流程,同时也支持通过...
Kettle API 是一个强大的工具,允许开发者通过Java代码与Pentaho Data Integration (Kettle) 进行交互,实现数据提取、转换和加载(ETL)过程的自动化。在给定的示例中,主要展示了如何使用Kettle API 创建、保存和...
Java调用Kettle(Pentaho Data Integration,也称为Kettle或PDI)是一个常见的需求,特别是在集成数据处理和ETL(提取、转换、加载)流程中。Kettle是一款强大的开源数据集成工具,它提供了丰富的数据操作和转换功能...
Java调用Kettle是一种常见的数据集成方案,Kettle(也称为Pentaho Data Integration或PDI)是一款强大的ETL(Extract, Transform, Load)工具,它允许用户通过图形化界面设计数据转换流程,并能被其他应用程序如Java...
Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成的过程,Kettle是一款强大的数据转换和ETL(提取、转换、加载)工具。在Java环境中,我们可以通过API来启动和控制Kettle的工作流或转换。这个压缩包...
它提供了一套全面的Java API,允许开发人员在Java应用程序中直接集成和操作Kettle的功能。这篇详细的知识点解释将深入探讨Kettle Java API的核心概念、使用场景和主要功能。 1. **Kettle Engine API**: Kettle...
kettle通过java脚本获取数据库的值..................................................................
本话题主要探讨如何利用Kettle的自定义Java代码来实现对SQL Server数据库的表复制。 首先,我们需要理解Kettle的工作原理。Kettle通过一系列的步骤(Steps)和转换(Transformations)进行数据操作,这些步骤可以是...
然而,在处理大量数据时,Kettle可能会遇到内存管理问题,导致Java堆空间溢出错误。这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java...
Java调用Kettle代码主要涉及两个关键点:Java编程与Kettle(Pentaho Data Integration,简称PDI)工具的集成。Kettle是一款强大的ETL(Extract, Transform, Load)工具,用于数据抽取、转换和加载。Java作为广泛应用...
Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成,以便利用Kettle的强大ETL(提取、转换、加载)能力。Kettle是一款开源的数据集成工具,它允许开发者通过编写XML脚本来执行数据处理任务。在Java...
这个是Kettle一个转换的脚本,可以通过这个demo结合java代码来进行数据清洗。
Java集成Kettle是一个常见的数据处理任务,Kettle是一款强大的ETL(Extract, Transform, Load)工具,也称为Pentaho Data Integration(PDI)。在Java项目中使用Kettle时,通常需要将Kettle的相关库(jar包)引入到...
Java调用Kettle API实现数据抽取DEMO是一个典型的ETL(提取、转换、加载)过程,其中Kettle(又称Pentaho Data Integration或KDI)是一个强大的数据集成工具,允许开发者通过图形化界面或者编程方式处理数据迁移和...
Java远程调用Kettle说明与代码 Java远程调用Kettle是一种基于Java的ETL(Extract、Transform、Load)工具,能够对数据进行提取、转换、加载,以满足不同业务需求。Kettle提供了名为Carte的Web Server程序,也被称为...