Kettle发送邮箱并在正文中以表格形式展示内容[升级版]

简介: Kettle发送邮箱并在正文中以表格形式展示内容[升级版]

在上一篇关于Kettle发送邮件并在正文中以表格形式展示内容的文章中,已经提到Kettle邮箱正文中支持HTML格式,要在邮箱正文中展示表格,那就行拼出HTML,然后扔到邮箱正文中.


方法就是这么简单直接,上一篇文章中拼接HTML是在数据库SQL查询时完成的,而这次咱尝试使用Kettle支持的JavaScript脚本来完成.下面就结合一个小的需求案例,来说明一下.


一. 需求说明


结算系统每天实时接收积分系统推送过来的交易数据,现在需要按照交易类型分组统计检查两个系统之间的数据差异.邮件正文展示效果如下:


网络异常,图片无法展示
|


邮件正文展示效果


二. 实现过程


1. 作业概览


网络异常,图片无法展示
|


作业概览


2. 转换-邮箱正文准备


网络异常,图片无法展示
|


转换-邮箱正文准备


2.1 统计数据准备


网络异常,图片无法展示
|


统计数据准备


(1) 表输入-积分系统:

SELECT 1001 AS transaction_type_p,10001 AS value_p FROM DUAL UNION ALL
SELECT 1002,20001 FROM DUAL UNION ALL
SELECT 1003,20001 FROM DUAL UNION ALL
SELECT 1007,70001 FROM DUAL UNION ALL
SELECT 1008,80001 FROM DUAL


(2) 表输入-清算系统:

SELECT 1001 AS transaction_type_s,10001 AS value_s FROM DUAL UNION ALL
SELECT 1002,20001 FROM DUAL UNION ALL
SELECT 1003,30001 FROM DUAL UNION ALL
SELECT 1004,40001 FROM DUAL UNION ALL
SELECT 1005,50001 FROM DUAL


(3) 记录集连接:


注意: 这里使用的全连接(FULL OUTER),另外使用"记录集连接"前要对前面的数据根据"连接列"进行排序.


网络异常,图片无法展示
|


记录集连接


2.2 数据拼接html


网络异常,图片无法展示
|


(1) JS代码_行拼接


此步骤是数据准备过程中最核心的一步,将多列转成一列.


网络异常,图片无法展示
|


JS代码


JS脚本如下:

//Script here
var transaction_type;
if(transaction_type_p == null){
       transaction_type = String(transaction_type_s);
}else{
       transaction_type = String(transaction_type_p);
}
var value_points;
if(value_p == null){
       value_points = 0;
}else{
       value_points = value_p;
}
var value_settle;
if(value_s == null){
       value_settle = 0;
}else{
       value_settle = value_s;
}
var info;
var value_cha = value_points - value_settle;
//多行拼接成一列
if(value_cha == 0){
       info = "<tr><td>"+transaction_type+"</td><td>"+value_points+"</td<td>"+value_settle+"</td><td>"+value_cha+"</td></tr>";
}else{
       info = "<tr style='color:red'><td>"+transaction_type+"</td<td>"+value_points+"</td><td>"+value_settle+"</td><td>"+value_cha+"</td</tr>";
}
//新增一列,用于分组聚合
var seq = '1';


(2) 分组_拼接行


此步骤是将一列中的多行数据使用空字符串拼接成一个大的字符串info_new.


网络异常,图片无法展示
|


分组


(3) JS代码_拼接头部


在info_new基础上拼接html表格的头标签:

//Script here
var content = "<table border='1'><tr><th>交易类型</th><th>积分系统数量</th<th>结算系统数量</th><th>差异数量</th></tr>"+info_new+"</table>";

网络异常,图片无法展示
|


2.3 传入变量供作业中使用


网络异常,图片无法展示
|


3. 邮件通知


网络异常,图片无法展示
|


邮件通知


获取QQ邮箱授权码的方式,简单如下图:


网络异常,图片无法展示
|


获取QQ邮箱授权码


网络异常,图片无法展示
|


邮件通知


至此,整个通过JS方式拼接Html方式实现邮件正文展示结果集的过程梳理完毕!


下面是之前关于使用Kettle发送邮件的总结:


(1) Kettle发送邮箱并在正文中以表格形式展示内容[基础版]

该文是通过SQL拼接HTML串来实现邮箱正文展示表格.而在文章Kettle性能调优汇总中我曾提过,能用数据库层面实现就尽量用数据库实现,因为JS脚本的方式会很影响性能.


(2) Kettle通过邮箱附件的方式发送数据库报表统计

该文介绍了如何通过邮箱附件的方式发送结果集,是非常常用的功能.

希望以上分享能够帮助到你,如果你有更好的用法和心得,欢迎留言进行更多的互动学习.

目录
打赏
0
0
0
0
4
分享
相关文章
七个办法只有一个有效:200 PORT command successful. Consider using PASV.425 Failed to establish connection.
七个办法只有一个有效:200 PORT command successful. Consider using PASV.425 Failed to establish connection.
4055 0
七个办法只有一个有效:200 PORT command successful. Consider using PASV.425 Failed to establish connection.
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
330 1
发布、部署,傻傻分不清楚?从概念到实际场景,再到工具应用,一篇文章让你彻底搞清楚
部署和发布是软件工程中经常互换使用的两个术语,甚至感觉是等价的。然而,它们是不同的! • 部署是将软件从一个受控环境转移到另一个受控环境,它的目的是将软件从开发状态转化为生产状态,使得软件可以为用户提供服务。 • 发布是将软件推向用户的过程,应用程序需要多次更新、安全补丁和代码更改,跨平台和环境部署需要对版本进行适当的管理,有一定的计划性和管控因素。
2824 1
kettle开发篇-行转列
kettle开发篇-行转列
772 0
Kettle发送邮箱并在正文中以表格形式展示内容[基础版]
Kettle发送邮箱并在正文中以表格形式展示内容[基础版]
十六、.net core(.NET 6)搭建基于Redis的Hangfire定时器
搭建基于Redis的Hangfire定时器Hangfire的定时配置信息会自动生成在指定到数据库内,包括关系型数据库或非关系型数据库内。目前为止,它在Redis、Oracle上面,可以支持最短15秒的定时周期,其他数据库是分钟级别到。以下使用Hangfire+Redis来实现定时任务。首先创建新的类库项目 Wsk.Core.Hangfire,然后在Wsk.Core.Package包项目下引用hangfire有关的组件,包括 Hangfire、Hangfire.Core、Hangfire.Redis、Hangfire.Redis.StaskExchange。
803 0
十六、.net core(.NET 6)搭建基于Redis的Hangfire定时器
Oracle Label Security(Oracle标签安全性)
作者:Darl Kuhn、Steve Roughton Oracle Label Security(Oracle标签安全性)按行来控制用户的访问。
1494 0
.Net项目中通过ODAC方式链接Oracle数据库相关配置
.Net项目中通过ODAC方式链接Oracle数据库相关配置 一、开发环境 1.关于ODAC的链接方式 ODAC 直接使用 Oracle 调用接口 (OCI). OCI 是一种允许应用程序开发人员使用第三方开发语言存取Oracle数据服务器的过程或函数以及控制所有的SQL语句执行状态的应用程序接口。 2.使用ODAC方式的优点 使用ODAC的Net选项而无需在客户机上安装Oracle客户端来连接到Oracle.在这种情况下,ODAC仅需要TCP/IP协议的支持,从而可以创建真正的、最小的数据库应用程序。
284 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问