ETL工具 - Kettle 查询、连接、统计、脚本算子介绍

news2024/11/23 13:24:08

一、 Kettle

上篇文章对 Kettle 流程、应用算子进行了介绍,本篇对查询、连接、统计、脚本算子进行讲解,下面是上篇文章的地址:

ETL工具 - Kettle 流程、应用算子介绍

二、查询算子

数据输入使用 MySQL 表输入,表结构如下:

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `type` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (1, '小明', 90, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (3, '小兰', 92, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (4, '小爱', 93, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (5, '张三', 94, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (6, '李四', 95, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (7, '王五', 96, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (8, '赵六', 97, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (9, 'xiao ai', 22, '2');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (10, 'wang wu ', 23, '2');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (11, '小王,小七', 22, '3');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (12, '小八,小九', 23, '3');

表输入控件:

在这里插入图片描述

2.1 数据库查询

从数据库里面查询出数据,然后跟数据流中的数据进行左连接:

创建测试表:

CREATE TABLE `hobby` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `hobby` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test`.`hobby`(`id`, `name`, `hobby`) VALUES (1, '小明', '打篮球');
INSERT INTO `test`.`hobby`(`id`, `name`, `hobby`) VALUES (2, '小兰', '踢足球');

在这里插入图片描述
在这里插入图片描述
运行后效果:

在这里插入图片描述

2.2 流查询

查询两条数据流中的数据,然后按照指定的字段做等值匹配。在查询前会把数据都加载到内存中,并且只能做等值查询,结果只能展示其中一条连接的数据:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行后效果:

在这里插入图片描述

2.3 模糊匹配

需要有两个输入流,一个主数据流一个匹配流,会根据主数据流找出一个最佳的匹配流中的数据,匹配算法可以有多种选择。

比如修改 hobby 表数据为如下数据:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面的 匹配字段、值字段 表示匹配时命中的内容和匹配的置信度的列名,可以固定写成 match、measure value
在这里插入图片描述

运行后查看结果:

在这里插入图片描述

三、连接算子

连接算子一般将多个数据集通过关键字进行连接,类似 SQL 中的连接操作:

3.1 合并记录

将两个不同来源的数据合并,数据分别为旧数据和新数据,将旧数据和新数据按照指定的关键字匹配、比较、合并。注意旧数据和新数据需要按照关键字段排序,并且旧数据和新数据要有相同的字段名称。

合并后的数据将包括旧数据和新数据的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用一个标示字段,来指定新旧数据的比较结果。

下面创建 user2 表作为 新数据:

CREATE TABLE `user2` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `type` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test`.`user2`(`id`, `name`, `age`, `type`) VALUES (1, '小明', 90, 1);
INSERT INTO `test`.`user2`(`id`, `name`, `age`, `type`) VALUES (3, '小兰', 92, 1);
INSERT INTO `test`.`user2`(`id`, `name`, `age`, `type`) VALUES (4, '小爱2', 93, 1);
INSERT INTO `test`.`user2`(`id`, `name`, `age`, `type`) VALUES (5, '张三2', 94, 1);
INSERT INTO `test`.`user2`(`id`, `name`, `age`, `type`) VALUES (6, '李四', 95, 1);
INSERT INTO `test`.`user2`(`id`, `name`, `age`, `type`) VALUES (7, '王五', 96, 1);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行后查看结果:

在这里插入图片描述

其中标志字段的含义:

  • identical: 旧数据和新数据一样
  • changed : 数据发生了变化;
  • new: 新数据中有而旧数据中没有的记录
  • deleted :旧数据中有而新数据中没有的记录

3.2 记录集连接

可以对两个步骤中的数据流进行左连接,右连接,内连接,外连接,进行记录集连接之前,需要对记录集的数据进行排序,排序字段需要是关联字段,否则数据会错乱出现null 值。

user 表和 user2 表进行内连接操作如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后查看结果:

在这里插入图片描述

四、统计算子

统计算子可以提供数据的采样和统计功能。

4.1 分组

类似于GROUP BY,可以按照指定的一个或者几个字段进行分组,然后其余字段可以按照聚合函数进行合并计算。注意,在进行分组之前,最好先进行排序。

下面对 user 表根据 type 分组后取 age最大、最小、平均、数量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后查看结果:

在这里插入图片描述

五、脚本算子

脚本算子可以通过程序代码完成一些复杂的操作。

5.1 执行SQL脚本

在这里插入图片描述
在这里插入图片描述

运行后查看结果:

在这里插入图片描述

5.2 正则表达式

使用正则表达式实现复杂的匹配。

例如匹配 name 中带有 的:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后查看结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/479641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

给httprunnermanager接口自动化测试平台换点颜色瞧瞧

文章目录 一、背景1.1、修改注册表单的提示颜色1.2、修改后台代码:注册错误提示,最后提交注册,密码校验;1.3、修改了注册,那登录呢,也不能放过二、总结 一、背景 虽然咱给HttpRunnerManger引入进来&#xf…

【云台】开源版本SimpleBGC的电机驱动与控制方式

前言 最近想学习一下云台,发现资料确实还不太好找,比较有参考价值的是俄版的开源版本的云台代码,后面就不开源了,开源版本的是比较原始的算法,差不多是玩具级别的,不过还是决定学习一下,了解一…

PyCaret:低代码自动化的机器学习工具

PyCaret简介 随着ChatGPT和AI画图的大火,机器学习作为实现人工智能的底层技术被大众越来越多的认知,基于机器学习的产品也越来越多。传统的机器学习实现方法需要较强的编程能力和数据科学基础,这使得想零基础尝试机器学习变得非常困难。 机器…

Ucore lab5

实验目的 了解第一个用户进程创建过程了解系统调用框架的实现机制了解ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理 实验内容 练习0:已有实验代码改进 ​本实验中完成了用户进程的创建,能够对用户进程进行基本管理,并为…

C语言入门篇——自定义数据篇

目录 1、结构体 1.2、匿名结构体 1.3、结构体的自引用 1.4、结构体的声明和初始化 1.5、结构体的内存对齐 1.6、修改默认对齐数 1.7、结构体传参 2、枚举 3、共用体(联合体) 1、结构体 设计程序时,最重要的步骤之一是选择表示数据的…

【微机原理】8088/8086微处理器

目录 一、8088/8086的功能结构 1.总线接口部件(BIU) 2.执行部件(EU) 二、8088/8086的寄存器结构(14个) 溢出标志的概念 溢出和进位的区别 8086CPU是Intel系列的16位微处理器,他有16根数据…

框架学习之KOCA框架简介

KOCA框架简介 什么是KOCA术语定义发展历史 KOCA的总体架构产品优势开放性敏捷性(一体化解决方案)融合性安全性接入网关- KOCA Gateway KOCA DevOps流水线 KOCA技术栈 金证开发者社区:http://koca.szkingdom.com/ 什么是KOCA KOCA是金证基于…

LC-1376. 通知所有员工所需的时间(DFS:自上而下、自下而上)

1376. 通知所有员工所需的时间 难度中等125 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第…

JavaScript常用数组方法-汇总

快速检索 方法解析 1:concat(); 功能:合并数组,可以合并一个或多个数组,会返回合并数组之后的数据,不会改变原来的数组; var str1 [12,2,"hello"];var str2 ["world"]; console.lo…

简单毛概刷题网页制作 2.0(拖欠近一年版)

原因是大概一年之前学校的毛概期末刷题网站突然崩了,但是一直没有修复。当时眼看着复习时间逐渐被压缩,自己啥也做不了,遂自学前端完成毛概刷题网页一枚。 最早的毛概刷题网站仅仅是 1.0 版本(传送门),功能…

Excel技能之对齐,你可能都没想到

Excel表格,既然要做得漂漂亮亮,一定离不开对齐。拍照需要美颜,表格需要对齐。 内容全部挤到一边去。 有些靠左,有些靠右。 加上空格,感觉对齐。如果数据特别多,又逃不过加班的命运。 实在是混乱不堪。审美…

Linux常用命令——iostat命令

在线Linux命令查询工具 iostat 监视系统输入输出设备和CPU的使用情况 补充说明 iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就…

Linux安装MongoDB数据库,并内网穿透远程连接

文章目录 前言1. 配置Mongodb源2. 安装MongoDB3. 局域网连接测试4. 安装cpolar内网穿透5. 配置公网访问地址6. 公网远程连接7. 固定连接公网地址8. 使用固定地址连接 转载自Cpolar Lisa文章:Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透」 前言 …

Qt中QDebug的使用

QDebug类为调试信息(debugging information)提供输出流。它的声明在<QDebug>中&#xff0c;实现在Core模块中。将调试或跟踪信息(debugging or tracing information)写出到device, file, string or console时都会使用QDebug。 此类的成员函数参考&#xff1a;https://doc…

C语言—指针的进阶

指针的进阶 字符指针指针数组数组指针数组指针的定义区分&数组名以及数组名数组指针的使用 数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参 函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组相关笔试题和面试题指针笔试题 指针的相关概…

C++ Boost.Reflection库(现在是Boost.PFR)的下载、安装、使用详细教程

这里写目录标题 一、Boost.Reflection简介二、Boost.Reflection&#xff08;现在是Boost.PFR&#xff09;库的下载和安装2.1、下载编译Boost2.2、使用Boost.Reflection&#xff08;现在是Boost.PFR&#xff09; 小结 一、Boost.Reflection简介 ​ Boost.Reflection&#xff0…

【C++】-关于类和对象的默认成员函数(中)-构造函数和析构函数

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

Cadence(2):向导制作PCB封装

前提&#xff1a;软件版本 焊盘设计 &#xff1a;Pad Designer16.6PCB设计 &#xff1a;PCB Editor16.6 文章目录 LQFP64向导封装制作封装信息SMD焊盘制作添加焊盘库到PCB Editor新建工程LQFP64向导制作流程后续处理修改栅格大小。贴加1脚标识修改丝印线 总结 LQFP64向导封装制…

获取代码量(针对Pycharm IDEA)

Statistic 这是个一劳永逸&#xff0c;获取代码量的方法。 Beginning!&#xff08;安装到使用可能都不需要5分钟&#xff09; 附上Statistic的官网下载URL&#xff1a;Statistic - IntelliJ IDEs Plugin | Marketplacehttps://plugins.jetbrains.com/plugin/4509-statistic/v…

clion + opencv环境搭建

clion是一个jetbrains提供的c开发环境&#xff0c;和idea,pycharm等开发工具类似&#xff0c;界面有很多相似的地方。 clion内置了一个mingw的编译环境&#xff0c;自带了gcc,g等命令&#xff0c;安装完clion之后&#xff0c;我们新建项目&#xff0c;它会使用内置的mingw环境。…