kettle 通过java脚本对数据进行标注

2023-05-16

在项目当中遇到一种情况:我需要根据不同字段的值综合判断该数据属于我划分的哪种类型。

如果是单个字段我们可以根据kettle提供的switch / case 组件进行判断并赋值,但是如果通过多个字段或者是添加某种限定条件对数据整体进行处理,该组件的功能不足以支持。这种时候我开始怀念以前用java进行数据清洗,内存崩了的时候。java为我们数据清洗提供了更加广泛的维度,恰巧kettle提供的多种脚本工具当中就有java脚本

 本次转换实现的功能:根据班级编码、班级名称、上课地点、授课教室四个字段综合判断是否排课、是否该排课

本次转换的主要流程:

1、从excel当中获取数据;

2、获取数据处理当天的时间;

3、从excel当中选取需要字段;

4、java脚本对选取字段处理;

5、将处理完的数据插入本地数据库;

 

 

接下来,配置详细图进行流程的演示

0、各种安装、配置环境请看鄙人文章(kettle安装

1、从excel当中获取数据

    该步骤主要是通过转换--->输入--->Excel输入 完成

    Excel输入需要注意的几点

(1)、选择相对应的表格类型(引擎),一般情况下选择Excel 2007 XLSX (Apache POI Streaming)或者Excel 2007 XLSX (Apache POI )即可。

(2)、文件或目录。浏览找到之后,需要点击添加按钮。(此目录可以通过正则表达式对目录下的文件进行筛选)

(3)、工作表需要选取读取的sheet。

(4)、获取字段,并对字段进行相关操作(类型修改、去除空格、格式化、长度、精度)。(此处截图非实际项目截图,参考而已)

2、获取数据处理当天的时间

    部分数据在处理时需要根据具体的时间获取部分数据进行处理,此处我的时间精度为天,因此我采用的组件为:获取系统信息

    

3、从excel当中选取需要字段

    该步骤需要对excel当中的字段进行筛选,只需要筛选出我们需要的字段就可以。选择字段选择(转换—>字段选择)组件即可。该组件可以对字段的长度、类型、名称、格式等进行规范化。具体操作可以在元数据当中自己摸索。本步骤只需要进行选择和删除。

4、java脚本对选取字段处理

     该脚本当中对数据是按照行处理的,很类似easyexcel的处理方式。

     在获取数据时我们主要通过的方法为:get(Fields.In,"列名").getString(r);

     处理完之后对数据进行保存、更新操作的方法为:get(Fields.Out,"列名").setValue(r,处理完之后的字段名);

     在处理过程如果需要引用类,该类属于jdk自带的直接 import 即可。

     如果引用的类为其他jar内,我们将相关jar放到D:\kettle\data-integration\lib路径下即可使用。

    所有的处理内容需要放在 processRow 方法中。

    获取变量和处理之后保存变量的方法如下

//获取变量名
String str = get(Fields.In,"班级名称").getString(r);
String str2 = str ;
//处理完成之后输出结果
get(Fields.Out,"新年级").setValue(r,str2);

5、将处理完的数据插入本地数据库

放入数据库的方法很多,如果不需要查重可以使用组件表输出(输出——>表输出),如果需要查重可以使用组件插入/更新。

使用时注意事项:

(1)、需要链接数据库,需要将制定数据库的驱动文件(jar)放入到D:\kettle\data-integration\lib当中,不然会报错。

(2)、部分表需要增加一些选项,增加读写速度、插入速度、编码格式等。

1. 增加批量写的速度:
              useServerPrepStmts=false    rewriteBatchedStatements=true  
              useCompression=true            
cachePrepStmts = true                    rewriteBatchedStatements = true
           2. 增加读的速度:
              useServerPrepStmts=true      cachePrepStmts=true

参数说明:

1)useCompression=true,压缩数据传输,优化客户端和MySQL服务器之间的通信性能。

2)rewriteBatchedStatements=true  ,开启批量写功能

             这样测试就成功了

(3)、根据表内字段和流内字段的关系设置查重标准。当该数据查重并未查到,则会插入一条新的数据,该数据取决于流入的数据。如果查询到重复数据将会执行(4)当中的更新操作。

(4)、设置更新字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kettle 通过java脚本对数据进行标注 的相关文章

  • Spring 框架 application.properties 与 logback.xml

    我正在使用 Spring 和 Spring boot 最近 在尝试使用 EhCache 时 我尝试为 EhCache 启用日志记录 在 application properties 中设置日志级别 logging level org spr
  • 使用可执行 JAR 时指定 Log4j2 配置文件

    使用可执行 JAR 文件时 我在指定 Log4j2 配置文件位置时遇到问题 如果我将所有 JAR 分开 效果很好 但是当我尝试将它们组合成一个可执行 JAR 文件时 由于某种原因log4j2 xml未从命令行获取文件 我尝试过这两种指定位置
  • Spring Kafka - 为任何主题的分区消耗最后 N 条消息

    我正在尝试读取请求的卡夫卡消息数 对于非事务性消息 我们将从 endoffset N 对于 M 个分区 开始轮询并收集当前偏移量小于每个分区的结束偏移量的消息 对于幂等 事务消息 我们必须考虑事务标记 重复消息 这意味着偏移量将不连续 在这
  • Eclipse JAVA工具jar不存在

    The archive C Java jdk1 6 0 26 32 lib tools jar which is referenced by the classpath does not exist 这是我运行Tomcat时遇到的错误 清理
  • 为什么需要添加工件 JSR305 才能使用 Guava 14+?

    在stackoverflow上查找信息时 我看到了一个与我类似的问题 但没有真正的答案here https stackoverflow com questions 3800033 guava r07 gwt and javax annota
  • Appengine - 隐藏文件夹的部署

    为了验证 SSL 证书 我需要将包含一些文件的隐藏文件夹 well known 上传到我的应用程序 我正在使用 eclipse 部署 java 应用程序 但 appengine 上的应用程序未收到这些文件 我猜他们被过滤掉了 我尝试将隐藏文
  • 规范路径和绝对路径有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 中的 getPath getAbsolutePath 和 getCanonicalPath 有什么区别 https stackoverflow com questions 1099300 w
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • ActiveMQ 桥连接器到 WebSphereMQ 而不使用 XML 配置

    我想在嵌入式代理中创建一个代理来代理 ActiveMQ 和 WebSphere MQ 之间的连接 我知道 activemq 中存在网络连接器来执行此操作 代理到代理 但我不知道如何配置它以连接到 WebSphere MQ 在网络上进行搜索时
  • 原型组件的 Spring 事件处理

    假设我有两个组件 X 和 Y 其中 X 是单例 而 Y 不是 当我发布XUpdateEvent时 没有问题 我可以捕获该事件 但是 对于 YUpdateEvent 我无法捕获事件 Spring 为每个触发的事件创建新实例 而不是使用已经创建
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 自 Java 7 以来 HttpServer 延迟 1 秒

    我们正在使用内部HttpServer项目中的类 用于通过 HTTP 在客户端和服务器之间交换数据 当我们切换到 Java 7 时 我们意识到结果交付存在延迟 我们可以将问题简化为以下示例 Class EchoServer创建上下文 echo
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • 如何使用二叉树中的递归来完成回溯

    我正在尝试插入一个二进制节点 我的代码很复杂 没有希望挽救它 所以我计划重写它 基本上我没有考虑回溯 也没有仔细考虑算法 我正在尝试使用顺序遍历插入二进制节点 但我不明白应该如何回溯 D B E A C F 我如何搜索根 D 的左子树 然后
  • Java 性能:在 Java 机器控制中如何查找特定方法调用的堆大小、时间范围和内存统计信息

    使用 Java Mission Control 我们可以找到特定方法调用的堆大小 时间范围和内存统计信息 在方法分析部分 我无法弄清楚那些 要查找堆大小 您可以使用totalMemory and maxMemory Runtime 类的方法
  • android.R.layout.simple_list_item_1是什么?

    在我看到的所有示例中 他们在创建 ArrayAdapter 时仅使用 android R layout simple list item 1 android R layout simple list item 1是什么 它只是一个名为sim
  • 通过命令行增加Java中的MaxPermSize内存

    您能否解释一下如何增加此 PermSpace 大小 我正在使用 Gate 应用程序并加载大量数据和大量插件 不幸的是每次运行后都会出现有关内存不足 maxPermSpace 的错误 我到处搜索 但我找不到如何通过命令行增加这个大小 或者可能
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • Tomcat 与 Weblogic JNDI 查找

    我们使用的 Weblogic 服务器已配置为允许 JNDI 数据源名称 例如 appds 对于开发 本地主机 我们可能会运行 Tomcat 并且在 server xml 的 部分中声明时 Tomcat 会将 JNDI 数据源挂在 JNDI

随机推荐

  • PX4无人机飞控开发——第1篇:仿真工具介绍

    PX4无人机飞控开发 第1篇 xff1a 仿真工具介绍 大家好我是Jones 写博客记录一下工作的痕迹 xff0c 同时也对工作做一个总结 xff0c 才疏学浅 xff0c 难免会有很多纰漏 xff0c 还请大家批评指正 PX4无人机飞控开
  • 5G网络实现自动驾驶车联网——第一篇:5G模块介绍实现上网功能

    5G网络实现自动驾驶车联网 第一篇 xff1a 5G模块介绍实现上网功能 大家好我是Jones 写博客记录一下工作的痕迹 xff0c 同时也对工作做一个总结 xff0c 才疏学浅 xff0c 难免会有很多纰漏 xff0c 还请大家批评指正
  • 5G网络实现自动驾驶车联网——第二篇:5G网络内网穿透

    5G网络实现自动驾驶车联网 第二篇 xff1a 5G网络内网穿透 大家好我是Jones 写博客记录一下工作的痕迹 xff0c 同时也对工作做一个总结 xff0c 才疏学浅 xff0c 难免会有很多纰漏 xff0c 还请大家批评指正 xff0
  • MIT Mini Cheetah仿真 错误处理

    一 编译步骤 git clone https github com mit biomimetics Cheetah Software git cd Cheetah Software mkdir build cd build cmake sc
  • 使用PIXIWell_RF 射频模块 虚拟GPS

    使用PIXIWell RF 射频模块 虚拟GPS 文章目录 使用PIXIWell RF 射频模块 虚拟GPS 前言一 PIXIWell RF射频是什么 xff1f 二 虚拟GPS使用步骤1 硬件连接2 Ubuntu系统使用 三 查看连接情况
  • 如何去除button选中时的阴影效果

    使用box shadow可以去除button选中时四周的阴影 CSS代码如下 xff08 amp 是sass语法 xff0c 即当前button元素 xff09 xff1a button box shadow none webkit box
  • Failed to set attribute: Invalid input data or parameter 解决

    arm64 swconfig 配置vlan 失败问题 Failed to set attribute Invalid input data or parameter 解决 内核版本 xff1a linux 5 20 26 现象 xff1a
  • 使用PIXIWell_RF 射频模块 虚拟GPS windows系统

    使用PIXIWell RF 射频模块 虚拟GPS windows系统 文章目录 使用PIXIWell RF 射频模块 虚拟GPS windows系统 前言一 PIXIWell RF射频是什么 xff1f 二 虚拟GPS使用步骤1 硬件连接2
  • DJI Mavic 2 & AUTEL Evo无人机无线链路_射频_RF测试

    背景 xff1a 出于对DJI大疆无人机的好奇 xff0c 航时上的持久 xff0c 尺寸上的拔尖 xff0c 距离上的长远 xff1b 让我们来看看它的它的无线链路 射频 RF波形长什么样子的 AUTEL Evo无人机可能很多人不太了解
  • 我如何使用iPad作为学习工具

    引言 如果不懂得使用app xff0c 其实iPad就是一块屏幕而已 如果你已经有iPad xff0c 那么 xff0c 恭喜你 xff0c 这篇文章正是为了让它发挥出更大价值 如果你还没有 xff0c 那么你就又多了一个剁手的理由 上我的
  • 利用STM32实现自平衡机器人功能与方法

    将机器人整体开源 xff0c 同时总结一下机器人搭建过程中遇到的坑和未来的改进方向 在分享的文件里包含了结构设计 程序控制 电路设计以及其他模块相关资料供大家参考 第一 xff1a 机器人原理分析 首先来看成品图 xff1a 如图所示 xf
  • Ubuntu 终端(terminal) 配置文件修改后保存方法

    1 ESC退出INSERT模式进入命令模式 2 输入 w 保存 输入 wq 保存退出 输入 wq 保存并强制退出
  • Linux复习: semaphore.h信号量和生产者消费者

    点击查看demo代码 demo运行结果如图 借用网上的一段话 在线程世界里 xff0c 生产者就是生产数据的线程 xff0c 消费者就是消费数据的线程 在多线程开发当中 xff0c 如果生产者处理速度很快 xff0c 而消费者处理速度很慢
  • ubuntu使用经验

    1 查看文件夹大小 xff1a du h max depth 61 1 max depth 61 1表示查看当前目录下所有文件夹各自的大小 2 查看ubuntu版本信息 xff1a cat proc version Linux versio
  • 如何得到github上传的以前的版本

    有时候我们可能想得到github上老版本的代码 这个时候先 git clone xxxx 现在最新版本的代码 然后cd xx 到文件夹里面 然后 git log commit b56065418b63a971fcf4f8f35d058513
  • STM32---串口实现在应用程序的固件更新(IAP)

    背景 xff1a 在产品发布后 xff0c 可能需要对固件进行更新或者升级 xff0c 那么在影响产品正常运行的情况下 xff0c 如果升级固件呢 xff1f 理论 xff1a 下面的所有理论部分内容参考 STM32开发指南 什么是IAP
  • 利用protobuf和zmq实现网络通信

    经过不短时间的调试 xff0c 终于搞定了protobuf和zmq两个第三方库的编译和使用 xff0c 并且参考往事前辈的代码编写了两者之间的通信demo protobuf的编译和使用 xff0c 前面有篇博客已经讲了 zmq的编译我用的是
  • react-create-app src引入目录外部文件冲突问题:Relative imports outside of src/ are not supported....

    使用react create app构建的项目 xff0c 当src文件夹下文件想引用src文件夹外文件因为官方限制问题会报以下错误 Module not found You attempted to import which falls
  • OpenStack Neutron ML2

    Neutron 系列文章 Neutron Topic Tree xff1a 本文所有的内容都基于OpenStack Pike版本 其实在2016年 xff0c 我曾经在IBM Developerworks上写过一篇文章介绍Neutron M
  • kettle 通过java脚本对数据进行标注

    在项目当中遇到一种情况 xff1a 我需要根据不同字段的值综合判断该数据属于我划分的哪种类型 如果是单个字段我们可以根据kettle提供的switch case 组件进行判断并赋值 xff0c 但是如果通过多个字段或者是添加某种限定条件对数