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

《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.mrgr.cn/news/89828.html

相关文章:

  • 音频进阶学习十二——Z变换
  • 保姆级教程Docker部署KRaft模式的Kafka官方镜像
  • 【服务器知识】如何在linux系统上搭建一个nfs
  • 【Langchain学习笔记(二)】Langchain安装及使用示例
  • HIVE如何注册UDF函数
  • nodejs:express + js-mdict 网页查询英汉词典,能播放.spx 声音
  • Mac上搭建k8s环境——Minikube
  • 【非 root 用户下全局使用静态编译的 FFmpeg】
  • kafka服务端之延时操作实现原理
  • (一)C++的类与对象
  • Jmeter快速实操入门
  • docker安装es及分词器ik
  • 122,【6】buuctf web [护网杯2018] easy_tornado
  • 交叉编译工具链下载和使用
  • TaskBuilder项目实战:创建项目
  • 深入理解 DeepSeek MOE(Mixture of Experts)
  • 【戒抖音系列】短视频戒除-1-对推荐算法进行干扰
  • jvm 篇
  • 02.07 TCP服务器与客户端的搭建
  • 第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭