kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件

场景:交流学习群里面有小伙伴咨询kettle中的javascript代码步骤如何调用外部js文件中的函数,觉得有点意思的,于是就抽时间整理了一下。

1、外部js文件为test.js,代码如下:

复制代码
function test(param){
    return "接收到了参数"+param;
}

2、当时没有过多考虑,在本地简单写了个demo测试通过之后丢到群里面,后来发现这个demo有些问题。如下图所示:

3、问题如下

1).loadFileContent 是文件操作,通过eval函数将文件内容转换为js对象。这里有点不太合适,虽然可以正常调用js中的test函数。

2)这里的LoadFileContent函数会调用多次,同一个js文件加载多次是完全没必要的,上了生产之后会影响性能。

4、解决方案:

1)使用LoadScriptFile函数可以直接将js文件加载到内存,无需使用eval函数可以直接调用js中的test函数。如下图所示:

2)单独创建初始化脚本tab,右键弹出菜单,可以设置当前tab中的脚步是初始化(Set Start Script)、转换(Set Transform Script)、卸载(Set EndScript)三种方式进行运行。

5、示例脚本

1)初始化

javascript 复制代码
var init="js初始化";
LoadScriptFile("D:\\king\\kettle-demo\\test.js");
println(init);

2)转换

javascript 复制代码
var result =test('java小金刚');

println(result);

3)卸载

javascript 复制代码
var finish="js卸载";

println(finish);

6、一切准备就绪,点击保存&运行转换文件,如下图所示:

相关推荐
breeze jiang1 天前
React memo、useCallback 与 useMemo:父组件多状态时如何减少无效渲染
前端·javascript·react.js
代码不加糖1 天前
common.js和es6中模块引l入的区别?
前端·javascript·es6
云浪1 天前
从 0 到实战:掌握向量数据库 Milvus,构建 AI 应用的核心能力
javascript·数据库·人工智能
爱看报的猿1 天前
【金仓数据库征文】MySQL至金仓KES异构数据库平滑迁移与性能深度调优实战
数据库·数据仓库·mysql·金仓数据库征文
huabuyu1 天前
CLS 自动化归因及自愈:让系统自己定位根因、修复并验证
前端·javascript
C++、Java和Python的菜鸟1 天前
第13章 前端Web实战(Tlias案例)
前端·javascript·vue.js
用户6919026813391 天前
React 组件间通信全解析:从父子到跨级
前端·javascript
胡萝卜术1 天前
数据主权与渲染防线:从受控组件到性能优化的完整图景
前端·javascript·面试
mONESY1 天前
React 组件通信进化史:从 Props 层层搬运到 Context 跨层级直达
javascript
BreezeJiang1 天前
父组件一更新,子组件就必须跟着更新吗?从 memo 走到 useCallback
前端·javascript