`
zhengxuezhou
  • 浏览: 151786 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

kettle User Defined Java Class

 
阅读更多
转至:
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步骤》示例代码

    《详解kettle之User Defined Java Class步骤》示例代码,是最详细的udjc步骤说明文档,有示例理解更容易,更全面。

    《kettle中调用java类》示例代码

    首先,Kettle支持两种方式来调用Java类:使用“Java Class”步骤和使用“Execute Java Script”步骤。"Java Class"步骤允许直接执行一个预编译的Java类,而"Execute Java Script"步骤则用于运行Java Script...

    java集成kettle所有jar包

    Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...

    生成kettle作业的Java代码.rar

    在这个场景中,我们讨论的是如何利用Java代码生成并运行Kettle作业。 首先,让我们详细了解Kettle作业。Kettle作业是一系列步骤的集合,这些步骤按照特定顺序执行,通常用于执行一系列ETL任务。它们可以包含数据...

    kettle集成java+完整jar包

    【Kettle与Java集成详解】 Kettle,又称为Pentaho Data Integration(PDI),是一款强大的ETL(Extract, Transform, Load)工具,用于数据整合和数据清洗。它提供了图形化的界面来设计数据处理流程,同时也支持通过...

    Kettle API - Java调用示例

    Kettle API 是一个强大的工具,允许开发者通过Java代码与Pentaho Data Integration (Kettle) 进行交互,实现数据提取、转换和加载(ETL)过程的自动化。在给定的示例中,主要展示了如何使用Kettle API 创建、保存和...

    java调用kettle的依赖包

    Java调用Kettle(Pentaho Data Integration,也称为Kettle或PDI)是一个常见的需求,特别是在集成数据处理和ETL(提取、转换、加载)流程中。Kettle是一款强大的开源数据集成工具,它提供了丰富的数据操作和转换功能...

    java调用kettle示例

    Java调用Kettle是一种常见的数据集成方案,Kettle(也称为Pentaho Data Integration或PDI)是一款强大的ETL(Extract, Transform, Load)工具,它允许用户通过图形化界面设计数据转换流程,并能被其他应用程序如Java...

    java调用Kettle引用jar包2.zip

    Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成的过程,Kettle是一款强大的数据转换和ETL(提取、转换、加载)工具。在Java环境中,我们可以通过API来启动和控制Kettle的工作流或转换。这个压缩包...

    Kettle java API

    它提供了一套全面的Java API,允许开发人员在Java应用程序中直接集成和操作Kettle的功能。这篇详细的知识点解释将深入探讨Kettle Java API的核心概念、使用场景和主要功能。 1. **Kettle Engine API**: Kettle...

    kettle通过java脚本获取数据库的值

    kettle通过java脚本获取数据库的值..................................................................

    利用kettle的自定义java给sqlserver复制表

    本话题主要探讨如何利用Kettle的自定义Java代码来实现对SQL Server数据库的表复制。 首先,我们需要理解Kettle的工作原理。Kettle通过一系列的步骤(Steps)和转换(Transformations)进行数据操作,这些步骤可以是...

    kettle内存溢出(Java heap space)以及解决方法.docx

    然而,在处理大量数据时,Kettle可能会遇到内存管理问题,导致Java堆空间溢出错误。这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java...

    Java调用Kettle代码

    Java调用Kettle代码主要涉及两个关键点:Java编程与Kettle(Pentaho Data Integration,简称PDI)工具的集成。Kettle是一款强大的ETL(Extract, Transform, Load)工具,用于数据抽取、转换和加载。Java作为广泛应用...

    java调用Kettle引用jar包.zip

    Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成,以便利用Kettle的强大ETL(提取、转换、加载)能力。Kettle是一款开源的数据集成工具,它允许开发者通过编写XML脚本来执行数据处理任务。在Java...

    Kettle通过Java脚本清洗数据的demo

    这个是Kettle一个转换的脚本,可以通过这个demo结合java代码来进行数据清洗。

    java集成kettle相关jar包

    Java集成Kettle是一个常见的数据处理任务,Kettle是一款强大的ETL(Extract, Transform, Load)工具,也称为Pentaho Data Integration(PDI)。在Java项目中使用Kettle时,通常需要将Kettle的相关库(jar包)引入到...

    java调用kettle提供的API实现数据抽取DEMO

    Java调用Kettle API实现数据抽取DEMO是一个典型的ETL(提取、转换、加载)过程,其中Kettle(又称Pentaho Data Integration或KDI)是一个强大的数据集成工具,允许开发者通过图形化界面或者编程方式处理数据迁移和...

    java远程调用kettle说明与代码.pdf

    Java远程调用Kettle说明与代码 Java远程调用Kettle是一种基于Java的ETL(Extract、Transform、Load)工具,能够对数据进行提取、转换、加载,以满足不同业务需求。Kettle提供了名为Carte的Web Server程序,也被称为...

Global site tag (gtag.js) - Google Analytics