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通过邮箱附件的方式发送数据库报表统计

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

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

相关文章
|
3月前
|
开发框架 前端开发 JavaScript
在Winform开发中,我们使用的几种下拉列表展示字典数据的方式
在Winform开发中,我们使用的几种下拉列表展示字典数据的方式
|
3月前
|
SQL 开发框架 前端开发
在Winform系统开发中,对表格列表中的内容进行分组展示
在Winform系统开发中,对表格列表中的内容进行分组展示
|
6月前
|
JSON 前端开发 Java
基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
【5月更文挑战第15天】基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
|
前端开发 JavaScript 数据库
layui框架实战案例(20):常用条件判断和信息展示技巧(图片预览、动态表格、短信已读未读、链接分享、信息脱敏、内置框架页)
layui框架实战案例(20):常用条件判断和信息展示技巧(图片预览、动态表格、短信已读未读、链接分享、信息脱敏、内置框架页)
580 0
|
Python
Gne Online:通用新闻网页正文在线提取
Gne Online:通用新闻网页正文在线提取
181 0
|
Web App开发 开发者
GNE v0.04版更新,支持提取正文图片与源代码
GNE v0.04版更新,支持提取正文图片与源代码
156 0
|
小程序 API 数据库
小程序中读取腾讯文档的表格数据
小程序中读取腾讯文档的表格数据
小程序中读取腾讯文档的表格数据
|
文字识别 Java 开发工具
如何获取截图中的表格数据
工作中可能会遇到没有excel文件只有截图的表格,这种情况可以考虑下使用阿里云表格识别将内容识别出来
317 0
如何获取截图中的表格数据
|
监控 JavaScript 前端开发
Axure实战23:创建一个包含富文本编辑的消息推送页面
Axure实战23:创建一个包含富文本编辑的消息推送页面
1149 0
Axure实战23:创建一个包含富文本编辑的消息推送页面
|
SQL 监控 Oracle
Kettle发送邮箱并在正文中以表格形式展示内容[基础版]
Kettle发送邮箱并在正文中以表格形式展示内容[基础版]