当前位置: 首页 > news >正文

kettle基本操作4:使用日期字段增量数据同步

0.前言

两个数据库表之间使用日期(Date或timestamp)字段进行增量同步,是ETL操作的基本操作(本文举例的源表数据只新增不删除不修改的情况),最简单的步骤如下:

  • 获取目标表时间戳字段的max值;
  • 获取源表时间戳字段的max值;
  • 比较确认源表的时间要大于目标表,否则同步没有意义;
  • 根据目标表的时间戳字段获取源表的数据并写入至目标表;

1.主作业

主作业工作流如下图所示,这里使用变量的方式进行日期字段的传递。
image

以下逐个组件进行说明:

1.1 设置变量

这里将源表、目标表的最大时间戳字段先申明为变量:TARGET_MAX_DATE、SOURCE_MAX_DATE,注意变量的有效范围。
image

1.2 获取目标表的最大日期

  • 这个转换只有两个组件,从“表输入”组件获取目标表的最大时间戳,但这里要注意日期格式的转换。
    image

  • 表输入的SQL语句如下,我目标表是MySQL:

SELECT DATE_FORMAT(max(RUN_DATE), '%Y-%m-%d %H:%i:%s.%f') as target_max_month
FROM sasrep.rp_xxx
  • “设置变量”组件的配置比较简单,如下图:
    image

1.3 获取源表的最大日期

  • 这个转换的设置与上述“获取源表的最大日期”的转换没有什么大的差别,但我源表是DB2,取数的SQL如下:
SELECT VARCHAR_FORMAT(max(RUN_DATE), 'YYYY-MM-DD HH24:MI:SS.FF6') as source_max_month 
FROM SAS.rp_xxx
  • “设置变量”的组件配置如下图:
    image

1.4 写日志-变量赋值检查

  • 在设置好变量后,这里通过写日志的方式做一个简单的检查,看变量是设置成功,因为我本人因为变量名拼写问题,老是没有设置变量成功,故将写日志作为调试的手段之一,日志的设置如下图所示:
    image

1.5 日期比较

  • 这里使用了javascript脚本来检查目标表的max日期是表比源表max日期要小,这里要注意kettle的js脚本返回结果是布尔类型的,完整javascript代码如下所示:
var target_max_date = parent_job.getVariable("TARGET_MAX_DATE");
var source_max_date = parent_job.getVariable("SOURCE_MAX_DATE");
target_max_date < source_max_date ;

上述返回结果的条件为true则正常数据同步,如果为false则中止同步。

1.6 增量读取原表记录并写目标表

  • 这个转换只有“表输入”、“表输出”两个组件,以下是表输入组件的设置:
    image

  • 以下是表输出组件的设置,建议将批量提交的记录调大一些
    image

1.7 写日志-日期比较结果

如果在“日期比较”节点的结果为false,再通过节点写日志,没这个节点问题也不大。
image

2.总结

以上就是通过日期字段进行增量同步的简单kettle工作流,但实际生产会比较复杂,注意事项如下:

  • 上述只适用源表只新增无删除无更改的情况,且在同步作业时不会新增数据,生产时,最好回写“已读取”的标志;
  • 由于通过日期获取源表数据时,日期的format是固定的,获取max日期时注意转换合适的字符串;
http://www.jsqmd.com/news/19458/

相关文章:

  • 冰川之国破例:冰岛首次发现蚊子,气候变化敲响警钟
  • 成语趣有奖微信小程序管理系统:趣味与变现兼具的优质选择
  • 2025 年钛棒厂家最新推荐权威榜单:深度解析国内头部厂家国际市场开拓成绩及产品优势钛螺丝/加工件/医用/合金/异形件钛棒厂家推荐
  • 掌门社交电商系统:赋能本地生活的三方共赢新生态
  • 就餐宝微信小程序:重塑企业食堂管理新生态
  • 2025 年度茶叶行业优质厂家权威榜单:最新推荐全解析,小青柑 / 普洱等好茶选品指南
  • 如何解除百度网盘下载限速
  • 分布式专题——33 一台新机器进行Web页面请求的历程 - 指南
  • 开源隐私计算框架SecretFlow | 基于隐语的金融全链路场景介绍和应用实践
  • 2025 最新智能卫浴镜厂家推荐榜单:家装酒店工装优选,除雾语音多功能品牌权威盘点多功能/语音/蓝牙/led/带灯智能卫浴镜厂家推荐
  • win11暂停更新
  • 2025 年陶土砖生产厂家最新推荐权威榜单:劈开/红色/干挂/砌筑/仿古/透气/耐火/异型/装饰/外墙陶土砖产品及生产流程优势全面解读
  • redis 5.0.14单机部署
  • 视频汇聚平台EasyCVR在智慧工地无网线无电线监控现场视频解决方案
  • Spring进阶 - SpringMVC达成原理(二)DispatcherServlet处理请求的过程
  • 2025多校冲刺CSP模拟赛7
  • 视频汇聚平台EasyCVR级联播放偶发失败排查:TCP主动模式下的3秒超时响应差
  • redis 5.0单机部署
  • 企业微信ipad协议,标准化接口服务解决方案
  • 2025年DevOps平台全景观察:本土化与全球化双轨并行下的企业选择
  • Python实现基于SAO-Transformer-LSTM雪消融优化算法(SAO)优化Transformer-LSTM组合模型进行多变量回归预测的详细项目实例 - 详解
  • 2025 年最新推荐!国内污水处理设备优质厂家排行榜,助力企业精准选优质设备
  • 2025年模内注塑标杆厂家:腾达鑫电子,IML|IMD|IMR|IMP 定制新标准
  • zlog3
  • 信息熵的特征选择算法MATLAB实现
  • Qoder 上线提示词增强功能,将开发者从“提示词”的负担中解放出来
  • HZOJ CSP-S模拟赛37 比赛总结
  • 2025 文审礼品机源头厂家最新推荐榜:奔奔游乐居首,合规资质 + 实力口碑双保障权威排行
  • 数字商品服务助力开发者降本增效,加速数字商品商业变现
  • 系统建设