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

《Kettle实操案例一(全量/增量更新与邮件发送)》

目录

      • 一、场景描述:
      • 二、要求:
      • 三、思路
      • 四、整体作业
      • 五、各部分详细配置
        • 1、Start
        • 2、转换-获取执行开始时间
        • 3、获取目标表抽取前行数
        • 4、检验字段的值
        • 5、增量更新
        • 6、全量更新
        • 7、获取目标表抽取后行数
        • 8、获取执行结束时间
        • 9、日志写入数据库
        • 10、写日志
        • 11、发送数据抽取完成邮件
      • 五、最终效果

一、场景描述:

有两张数据表,tableA(源表),tableB(目标表),存在不同的数据库中,现在需使用kettle作为ETLI具将tableA里的数据抽取至tableB里并记录日志信息。

二、要求:

(1)目标表无数据时,使用全量更新实现数据抽取;
(2)目标表有数据时,使用增量更新实现数据抽取;
(3)将转换名称、执行日期(单位/天),转换执行时长(单位/秒),目标表抽取前行数,目标表抽取后行数,执行开始时间,执行结束时间插入日志表;
(4)执行结果发送到指定邮箱

三、思路

  • 判断目标表是否有数据,可以通过检验字段的值组件,将目标表抽取前行数传入用于判断
  • 全量更新只需要表输入和插入/更新组件
  • 增量更新需要定义一个变量用于获取目标表最大的时间,以便插入增量数据
  • 因为需要记录将转换名称、执行日期(单位/天),转换执行时长(单位/秒),目标表抽取前行数,目标表抽取后行数,执行开始时间,执行结束时间等日志信息,可以通过获取系统信息、表输入组件获取,转换执行时长(单位/秒)可以通过计算器计算执行开始时间,执行结束时间的差值,最后写入数据库

四、整体作业

在这里插入图片描述

五、各部分详细配置

1、Start

按需要配置定时任务
在这里插入图片描述

2、转换-获取执行开始时间

在这里插入图片描述
获取系统日期作为变量${execution_date}
在这里插入图片描述

3、获取目标表抽取前行数

在这里插入图片描述
获取目标表的记录数,存入${target_table_rows_before}参数
在这里插入图片描述

4、检验字段的值

判断目标表记录数${target_table_rows_before}是否大于0
在这里插入图片描述

5、增量更新

在这里插入图片描述

获取转换的名称,存入${transformation_name}变量
在这里插入图片描述
获取源表记录时间在目标表最大记录时间之后的记录,插入目标表
在这里插入图片描述

6、全量更新

在这里插入图片描述
获取转换的名称,存入${transformation_name}变量
在这里插入图片描述
通过表输入步骤获取源表所有的记录后,导入目标表
在这里插入图片描述

7、获取目标表抽取后行数

在这里插入图片描述
将抽取后目标表记录数存入${target_table_rows_after}参数中
在这里插入图片描述

8、获取执行结束时间

在这里插入图片描述
将系统时间存入${execution_end_date}变量,因为这个步骤在抽取之后,此时的系统时间可视为抽取结束时间
在这里插入图片描述

9、日志写入数据库

在这里插入图片描述
获取转换名称、执行日期(单位/天),目标表抽取前行数,目标表抽取后行数,执行开始时间,执行结束时间,并通过计算器计算得到转换执行时长(单位/秒)后,存入日志表
在这里插入图片描述

10、写日志

打印日志,确认变量正确
在这里插入图片描述

11、发送数据抽取完成邮件

配置收/发件人等信息
在这里插入图片描述

五、最终效果

1、作业执行前,目标表为空
在这里插入图片描述
2、执行作业后,导入数据到目标表成功
在这里插入图片描述
3、全量更新日志已插入
在这里插入图片描述
4、此时在源表新增2条新数据,用于测试增量更新
在这里插入图片描述
5、执行后,新增数据已导入
在这里插入图片描述
6、增量更新日志已插入
在这里插入图片描述


http://www.kler.cn/a/536162.html

相关文章:

  • 【deepseek实战】绿色好用,不断网
  • UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理
  • 在Debian 12上安装VNC服务器
  • 使用Pygame制作“打砖块”游戏
  • libdrm移植到arm设备
  • 人工智能赋能企业系统架构设计:以ERP与CRM系统为例
  • 深度学习-105-RAG技术之嵌入模型安装部署应用的三种方式
  • 初窥强大,AI识别技术实现图像转文字(OCR技术)
  • Mac下使用Docker安装CREMEB-PRO宝塔环境
  • 【Leetcode 每日一题】59. 螺旋矩阵 II
  • 广度优先搜索(BFS)算法详解——以走迷宫问题为例
  • 【JS】element-ui table展示勾选状态
  • AI工具——Cherry Studio,搭建满血DeepSeek R1的AI对话客户端
  • 【医院绩效管理专题】2.绩效管理:医院发展的核心驱动力
  • Jmeter接口自动化测试
  • ZIP完美解密解压缩和暴力破解最佳实现
  • python图片转字符画应用
  • Java 集合中的 `removeIf` 和 Stream API 的 `filter`
  • 4.Python字符串和列表:字符串输入、字符串输出、下标和切片、字符串常见函数、列表(list)、列表的循环遍历、列表的增删改查、列表的嵌套、列表的切片
  • 基于单片机的电子抢答器设计(论文+源码+实物)
  • Vue 3 30天精进之旅:Day 17 - 样式和动画
  • UE学习日志#24 C++笔记#10 内存管理1
  • linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}
  • DeepSeek本地化部署
  • 【实战】excel分页写入导出大文件
  • 如何在Android Studio中开发一个简单的Android应用?