kettle网页版(用kettle抽取数据后 怎么生成报表 怎么发布到tomcat上 需要添加什么代码 jsp页面怎么设置)

本文目录
- 用kettle抽取数据后 怎么生成报表 怎么发布到tomcat上 需要添加什么代码 jsp页面怎么设置
- 关于kettle的REST Client组件带cookie(session)的使用
- kettle 关闭的链接问题
- 如何使用kettle源码更改spoon的东西
- 如何用etl工具kettle生成拉链表
用kettle抽取数据后 怎么生成报表 怎么发布到tomcat上 需要添加什么代码 jsp页面怎么设置
kettle工具没用过。
1.怎么生成报表,这个不知道。
2.怎么发布到tomcat上。
我下了一个kettle,网上说这个是纯JAVA写的工具,那么你要使用一些功能,需要将kettle的一些JAR文件添加到你工程的web-inf/lib目录下。
3. jsp页面怎设置。
这个要看生成的报表是什么了。如果是一个图片。有两种方法,一个是将文件生成到服务器上,在JSP中引用该图片,另一个就是直接以流的方式写到页面上。
如果是类似EXCEL那样的系统,可识别的文件 ,可以用流以打开方式写到页面上。打开显示文件内容。
关于kettle的REST Client组件带cookie(session)的使用
前言
近几天组内交给我一个任务,就是研究kettle的restful接口的调用。可是之前学习和接触的大部分都是数仓、BI以及一部分简单程序、脚本的编写,所以对restful接口不是很了解(但只是用工具调用的话,不需要太深的了解,只需要知道这是一种可以调用的API接口,实现某种功能就行了),所以在网上查找了很多资料,但其实对于调用来说,只需要知道在我们在调用这个接口时,需要哪些参数,应该怎样传入就可以了。感觉上好像很简单,但其实里面有很多坑,接下来我们就开始吧
正文
1、首先,我们要知道我们需要调用的接口的URI,简单理解就是你要调用的资源的地址,就像门派号一样,用到什么命令,传递什么参数。一般而言,需要让你进行调用,都会把这部分内容列出来,比如:
在这个API中,可以看到具体的信息,①是操作行为,②是传递的body,③是请求头,在此就不多说了,该部分内容大家可以自行查阅资料,对这些内容我可能比大家还不清楚。知道我要调用的API之后,就可以通过kettle设计转换流程了。
一、生成记录
因为只是一个测试,所以我直接通过生成记录组件生成了我所需要的内容,ps:这里不仅仅可以配置单条记录,其实多条同样请求的记录同样会分别请求。
url是将要post的资源,post后得到关于token的response,然后再利用token进行其余的请求。
body是post的函数体,post时,有的需要带body才能通过。
url2是真正要进行调用的API,都在生成记录里预生成了。
二、REST Client配置
三、JSON Input
利用JSON Input接收由REST Client获取的结果,只保留token的值。此处JSON路径如何设置不多赘述,请读者自行查阅JSON路径的配置。
对于JSON Input 3中获取Cookie是为了调用真正的API做准备。如果没有带Cookie,后续的调用就无法确定是否进行了登录。在一个网页中,我们先进行登录,然后继续后续操作,后续每次操作都不需要再次登录,是因为我们将服务器传给我们的session存入了客户端/浏览器的cookie中,每次我们做请求,都会带上cookie,就不需要重复登录了。但是此处如果不获取cookie,因为是分离开的,所以后一步就会出现会话无效的错误。如下图所示:
四、记录集连接
因为cookie和token在不同的表中,所以需要将两张表join起来,join的操作大家应该都很熟悉了。如果不清楚,后续可以留言我给大家进行补充。最后留下我们需要的几个参数,URL2、token、cookie
五、调用API
以上就是全部内容,如果有什么疑问或者有什么疏漏,欢迎大家指正。
kettle 关闭的链接问题
您好,根据错误提示:org.pentaho.di.core.exception.KettleDatabaseException
没做hadoop 2.20的配置前,kettle4.4是支持hive的取数
解决:
采用kettle5.0.1,配置hadoop 2.20的相关插件后,是可以了。
INFO 13-06 15:19:00,420 (LogWriter.java:println:406) -file2DBTest - New database connection defined
ERROR 13-06 15:19:00,421 (LogWriter.java:println:403) -表输出.0 - An error occurred intialising this step:
Error occured while trying to connect to the database
Exception while loading class
net.sourceforge.jtds.jdbc.Driver
ERROR 13-06 15:19:00,422 (LogWriter.java:println:403) -表输出 - 错误初始化步骤
INFO 13-06 15:19:00,422 (LogWriter.java:println:406) -transFile2db - 步骤 初始化不完全,有缺陷.
INFO 13-06 15:19:00,423 (LogWriter.java:println:406) -transFile2db - 步骤 初始化不完全,有缺陷.
ERROR 13-06 15:19:00,423 (LogWriter.java:println:403) -transFile2db - 步骤 初始化失败!
ERROR 13-06 15:19:00,424 (LogWriter.java:println:403) -表输出.0 - Unexpected error rolling back the database connection.
ERROR 13-06 15:19:00,425 (LogWriter.java:println:403) -表输出.0 - org.pentaho.di.core.exception.KettleDatabaseException:
Unable to get database metadata from this database connection
at test.ReaderTransFromRep.main (ReaderTransFromRep.java:71)
at test.ReaderTransFromRep.callNativeJob (ReaderTransFromRep.java:41)
如何使用kettle源码更改spoon的东西
1.2. 编译源码
将项目加载到eclipse
将kettle项目拷贝到eclipse的workspace目录下,在eclipse中新建java project,项目名称和你拷贝过来的kettle文件夹名称一致
项目导入到eclipse中会出现一个错误,如下图,将这个文件的源码全部注释掉
编译
打开build.xml, 在右边的。Outline 点击kettle-》run as -》ant build
第一次编译的时候需要从网上下载几个文件,放在C:\Documents and Settings\Administrator\.subfloor,网络不好的话下载会比较慢,也可以直接文件放在C:\Documents and Settings\Administrator\下。编译完成后将bin目录下的.bat文件拷贝到Kettle目录下点击Spoon.bat运行,运行成功代表编译已近通过
用源码运行Spoon
Kettle源码工程本身可能是在linux64位机器上调试的,swt配置是linux64的库,所有在运行源码前需要修改成win32的swt,步骤如下:工程à属性àJava Build Pathàlibrariesàadd jars
然后将linux64的SWT库删除
最后打开src-uiàorg.pentaho.di.ui.spoonàSpoon.java, Run As àjava application
二.源码分析
2.1. 修改kettle界面
修改初始化界面
打开package org.pentaho.di.ui.spoon的Spoon.Java,找到main函数,该main函数为Spoon工具的入口,找到如下语句
Splash splash = new Splash(display);
该语句为spoon初始化显示的界面,跳到定义Splash.java,下面函数
canvas.addPaintListener(new PaintListener() {
publicvoid paintControl(PaintEvent e) {
String versionText = BaseMessages.getString(PKG, "SplashDialog.Version") + " " + Const.VERSION; //$NON-NLS-1$ //$NON-NLS-2$
StringBuilder sb = new StringBuilder();
String line = null;
try {
BufferedReader reader = new BufferedReader(newInputStreamReader(Splash.class.getClassLoader().getResourceAsStream("org/pentaho/di/ui/core/dialog/license/license.txt")));//$NON-NLS-1$
while((line = reader.readLine()) != null) {
sb.append(line + System.getProperty("line.separator")); //$NON-NLS-1$
}
} catch (Exception ex) {
sb.append(""); //$NON-NLS-1$
Log.warn(BaseMessages.getString(PKG, "SplashDialog.LicenseTextNotFound")); //$NON-NLS-1$
}
String licenseText = sb.toString();
e.gc.drawImage(kettle_image, 0, 0);
// If this is a Milestone or RC release, warn the user
if (Const.RELEASE.equals(Const.ReleaseType.MILESTONE)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.DeveloperRelease") + " - " + versionText; //$NON-NLS-1$ //$NON-NLS-2$
drawVersionWarning(e);
} elseif (Const.RELEASE.equals(Const.ReleaseType.RELEASE_CANDIDATE)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.ReleaseCandidate") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
elseif (Const.RELEASE.equals(Const.ReleaseType.PREVIEW)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.PreviewRelease") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
elseif (Const.RELEASE.equals(Const.ReleaseType.GA)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.GA") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
Font verFont = new Font(e.display, "Helvetica", 11, SWT.BOLD); //$NON-NLS-1$
e.gc.setFont(verFont);
e.gc.drawText(versionText, 290, 205, true);
// try using the desired font size for the license text
int fontSize = 8;
Font licFont = new Font(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$
e.gc.setFont(licFont);
// if the text will not fit the allowed space
while (!willLicenseTextFit(licenseText, e.gc)) {
fontSize--;
licFont = new Font(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$
e.gc.setFont(licFont);
}
e.gc.drawText(licenseText, 290, 290, true);
}
});
1. 修改背景图片
找到ui/image/下面的kettle_splash.png,替换该图片
2. 修改版本信息
找到e.gc.drawText(versionText, 290, 205, true); 改为e.gc.drawText("海康威视数据交换平台V1.0", 290, 205, true);
3. 修改下面的描述性文字
找到e.gc.drawText(licenseText, 290, 290, true);改为e.gc.drawText("作者:海康", 290, 290, true);
4. 预览效果
如何用etl工具kettle生成拉链表
拉链表是在数据仓库中常见的表,主要用还存储不按时间变化的表,比如客户基本信息表。
下面先建两个实例表,user_info和user_info_l,其中user_info_l为拉链表。
user_info表及数据:
user_info_l表及转换后的数据:
kettle的设计其实很简单,就一个“表输入”一个“维度查询/更新
下面来看一下表输入的配置:
这个很简单,但是一定要有个基本表的数据日期
下面几个是“维度查询/更新”的配置:
下面介绍一下设置中的关键地方,依次如下:
1.不钩选的话变化的数据不会插入,至于不勾选时的用途,大家可以研究一下。
2.这里是创建每个版本关键字,基本就是源表的主键。
3.这里是要更新的字段,除了源表关键字,其他都选好了。
4.截图的时候忘了到几了。。。
5.kettle自动给啦链表生成的主键。
6.代理关键字获取的方法。
7.每条记录的版本号,每变化依次一个版本号。
8.根据哪个字段判断是哪天更新的,也可以使用系统时间。
9.拉链的最早开始日期,第一次插入空表时也是这个日期。
10.拉链的最晚结束日期,更新的字段都使用这个值,被更新后变为更新的日期,可以参考上面图中user_info_l里的数据。
我在用的时候发现了一个问题,不知道是bug,还是kettle有意为之。就是在插入拉链表时,会产生一条代理主键为0的空记录。可能是bug,也可能是kettle为防止数据出现问题,强制让其他字段为可以为空。
要解决这个问题很简单,只需要在加一个删除的trans即可:
生成记录的配置如下:
然后把两个trans放到一个job里即可,job如下图:
至此,拉链表便创建完成。

更多文章:
powerpoint keynote(ppt可以转成keynote吗)
2025年12月16日 22:30
not fixed什么意思(to be honest是什么意思)
2025年11月4日 21:45
php explode 连续分隔符(如何用PHP截取关键词(关键词都是用小逗号隔开的,关键词数量不等),然后循环展示)
2025年12月29日 20:45
全国企业信用信息公示系统官网?国家企业信用信息公示系统是什么网
2025年9月16日 15:30
苹果的accessibility(苹果手机怎么设置软件透明)
2026年9月7日 22:00
excel函数vlookup用法视频(excel中函数vlookup怎么操作使用)
2026年2月20日 16:45
jquery怎么添加元素(Jquery:要在指定DIV下的第二个P后面增加元素如何实现)
2025年8月23日 21:15

















