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

news/2025/2/8 22:56:54 标签: 数据库, kettle, etl

目录

      • 一、场景描述:
      • 二、要求:
      • 三、思路
      • 四、整体作业
      • 五、各部分详细配置
        • 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.niftyadmin.cn/n/5845358.html

相关文章

c语言:取绝对值

假设我们有一个 long 类型的变量 l&#xff0c;我们希望恢复其绝对值。以下是两种方法的对比&#xff1a; 方法1&#xff1a;使用条件语句 这个很好理解&#xff0c;负数时取负运算 &#xff0c;用于数值的符号反转。 long abs_value(long l) {if (l < 0) {return -l;} e…

储能系统-系统架构

已更新系列文章包括104、61850、modbus 、单片机等&#xff0c;欢迎关注 IEC61850实现方案和测试-1-CSDN博客 快速了解104协议-CSDN博客 104调试工具2_104协议调试工具-CSDN博客 1 电池储能系统&#xff08;BESS&#xff09; 架构 电池储能系统主要包括、电池、pcs、本地控制…

RISC-V芯片与扩展医疗影像处理边缘设备编程探析

一、引言 在数智化医疗快速发展的当下,医疗影像处理作为疾病诊断、治疗方案制定的关键环节,对设备性能与效率提出了极高要求。传统的医疗影像处理多依赖于集中式的大型计算中心,数据需传输至远程服务器进行处理,这不仅面临网络延迟、带宽限制的问题,还存在数据隐私安全风险…

Vue 双向数据绑定的原理

Vue 的双向数据绑定是其核心特性之一&#xff0c;它可以让视图与数据保持同步&#xff0c;简化了开发者在 DOM 操作上的工作。Vue 的双向数据绑定通过 响应式系统 和 DOM 事件监听 来实现&#xff0c;当数据发生变化时&#xff0c;视图会自动更新&#xff1b;当视图中的元素&am…

机器学习 - 需要了解的条件概率、高斯分布、似然函数

似然函数是连接数据与参数的桥梁&#xff0c;通过“数据反推参数”的逆向思维&#xff0c;成为统计推断的核心工具。理解它的关键在于区分“参数固定时数据的概率”与“数据固定时参数的合理性”&#xff0c;这种视角转换是掌握现代统计学和机器学习的基础。 一、在学习似然函…

hive的几种复杂数据类型

Hive的几种复杂数据类型 Hive 提供了几种复杂数据类型&#xff0c;能够支持更灵活和多样的数据存储。这些复杂数据类型对于处理嵌套数据或不规则数据特别有用。主要包括以下几种&#xff1a; 文章目录 Hive的几种复杂数据类型1. 数组&#xff08;ARRAY&#xff09;2. 结构体&a…

3.Python分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue

1. if 判断语句 if 语句用于根据条件判断执行不同的代码块。语法格式如下&#xff1a; if condition:# 如果 condition 为 True&#xff0c;执行这部分代码statement_1condition 是一个表达式&#xff0c;计算结果为 True 或 False。如果条件为 True&#xff0c;执行缩进的语…

VulnHub | Prime - 1

https://vulnhub.com/entry/prime-1,358/https://vulnhub.com/entry/prime-1,358/https://vulnhub.com/entry/prime-1,358/ 0x01&#xff1a;靶场简介 Prime 1 是 VulHub 中的一台用于 OSCP 考试练习的靶机。通过本靶机&#xff0c;我们可以系统的了解的渗透测试的全流程。本…