ETL工具 - Kettle 转换算子介绍

news2024/11/25 23:19:29

一、Kettle 转换算子

上篇文章对 Kettle 中的输入输出算子进行了介绍,本篇文章继续对转换算子进行讲解。

下面是上篇文章的地址:

ETL工具 - Kettle 输入输出算子介绍

转换是ETL里面的TTransform),主要做数据转换,数据清洗的工作。

在这里插入图片描述

二、转换算子介绍

数据输入以上篇文章中的表输入,表结构如下:

CREATE TABLE `user`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `age` int(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `user` VALUES (1, '小明', 90);
INSERT INTO `user` VALUES (2, '小红', 91);
INSERT INTO `user` VALUES (3, '小兰', 92);
INSERT INTO `user` VALUES (4, '小爱', 93);
INSERT INTO `user` VALUES (5, '张三', 94);
INSERT INTO `user` VALUES (6, '李四', 95);
INSERT INTO `user` VALUES (7, '王五', 96);
INSERT INTO `user` VALUES (8, '赵六', 97);

表输入控件:

在这里插入图片描述

2.1 增加常量

增加常量就是在本身的数据流里面添加一列常量数据,值都是相同的内容。

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.2 增加序列

增加序列同样给数据流添加一个字段,但可以自定义该序列字段的递增步长:

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.3 值映射

值映射就是把字段的一个值映射成其他的值:

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.4 Concat fields

将多个字段连接起来形成一个新的字段:

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

运行后预览数据:

在这里插入图片描述

2.5 字段选择

可以从数据流中进行选择字段、改变名称、修改数据类型等:

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.6 计算器

一个函数集合,可以通过里面的多个计算函数对已有字段进行计算,例如计算 id*age 的值:

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

运行后预览数据:

在这里插入图片描述

2.7 剪切字符串

根据输入流字段,从摸个位置开始剪切出新的字段:

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

运行后预览数据:

在这里插入图片描述

2.8 字符串替换

根据输入流字段,替换某个字符形成新的字段:
在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.9 字符串操作

可以去除字符串两端的空格和大小写切换:

这里再对user表增加两个测试数据:

INSERT INTO `test`.`user`(`id`, `name`, `age`) VALUES (9, 'xiao ai', 22);
INSERT INTO `test`.`user`(`id`, `name`, `age`) VALUES (10, ' wangwu ', 23);

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.10 排序记录

根据指定字段进行升序或者降序排列:

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.11 去除重复记录

去除数据流里面相同的数据行,使用之前要求必须先对数据进行排序:

对数据库中添加两个名字相同的数据:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.12 唯一行 (哈希值)

根据哈希值只允许保留一行,同样可以实现去重的效果:

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.13 拆分字段

把字段按照分隔符拆分成两个或多个字段,需要注意,字段拆分后,原字段就会从数据流中消失:

再添加两条测试数据:

INSERT INTO `test`.`user`(`id`, `name`, `age`) VALUES (11, '小王,小七', 22);
INSERT INTO `test`.`user`(`id`, `name`, `age`) VALUES (12, '小八,小九', 23);

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.14 列拆分为多行

某个字段根据指定分隔符进行拆分成多行,其他字段相同:

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

运行后预览数据:

在这里插入图片描述

2.15 列转行

多列转一行,如果数据一列有相同的值,可以按照指定的字段,将其中一列的字段内容变成不同的列字段,列转行之前数据流必须按照分组字段进行排序,否则数据会错乱:

创建新测试表:

CREATE TABLE `test` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `week` varchar(255) DEFAULT NULL,
  `work` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

写入测试数据:

INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (1, '张三', '1', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (3, '张三', '2', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (5, '张三', '3', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (7, '张三', '4', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (9, '张三', '5', '9');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (11, '张三', '6', '8');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (13, '张三', '7', '0');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (2, '李四', '1', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (4, '李四', '2', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (6, '李四', '3', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (8, '李四', '4', '10');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (10, '李四', '5', '8');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (12, '李四', '6', '8');
INSERT INTO `test`.`test`(`id`, `name`, `week`, `work`) VALUES (14, '李四', '7', '5');

在这里插入图片描述
下面根据 name 分组后 week 的值转为列展示 work 字段:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.16 行转列

和上一个控件相反,将数据行变为数据列,下面将上一步处理的还原会最初的效果:

在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

2.17 行扁平化

把同一组的多行数据合并成为一行,使用之前需要对数据进行排序,每个分组的数据条数要保证一致,否则数据会有错乱:

创建新的测试表:

CREATE TABLE `user3` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `grade` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

写入测试数据:

INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (11, '小明', 90);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (12, '小明', 91);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (13, '小明', 96);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (14, '小兰', 90);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (15, '小兰', 88);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (16, '小兰', 60);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (17, '李四', 70);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (18, '李四', 71);
INSERT INTO `test`.`user3`(`id`, `name`, `grade`) VALUES (19, '李四', 72);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后预览数据:

在这里插入图片描述

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

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

相关文章

开放式基金净值估算数据 API 数据接口

开放式基金净值估算数据 API 数据接口 全量基金数据,实时数据,所有基金数据。 1. 产品功能 返回实时开放式基金净值估值可定义所有基金估值数据;多个基金属性值返回;多维指标,一次查询毫秒级返回;数据持续…

领域驱动设计事件驱动框架命令查询责任分离测试驱动开发

领域驱动设计: DDD 事件驱动框架: Event Driven Architecture 命令查询责任分离: CQRS(Command Query Responsibility Segregation) 测试驱动开发: TDD 先睹为快:架构图 入口:entrypoint 入口是系统外部客户访问系统内部的端口。常见的入口如http, …

算法刷题|647.回文子串、516.最长回文子序列

回文子串 题目:给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符…

【redis】redis分布式锁(三)自动续期

系列文章目录 【redis】redis分布式锁(一)手写分布式锁1.0~6.0 【redis】redis分布式锁(二)可重入锁设计模式 文章目录 系列文章目录前言一、CAPredis集群 APZooKeeper集群 CP 数据一致性Eureak集群 APnacos集群 AP 二、lua脚本脚…

1 认识仿真工具Packet Tracer【实验】【计算机网络】

1 认识仿真工具Packet Tracer【实验】【计算机网络】 前言推荐1 认识仿真工具Packet Tracer1.1账号注册与Packet Tracer软件下载1.1.1 下载1.1.2 安装 1.2 Packet Tracer界面简介1.2.1 总述1.2.2 详细 1.3网络拓扑构建与设备模块添加1.3.1如何往工作区中添加设备1.3.2添加连线1…

【计算机网络】1.1——因特网概述

因特网概述(了解) 网络、互联网和因特网 网络由若干结点和连接这些结点的链路组成 多个网络还可以通过路由器互连起来,互联网是"网络的网络“ internet 和 Internet internet(互联网或互连网)是通用名词 泛指…

Java 基础入门篇(四)——— 方法的重载与参数传递机制

文章目录 一、方法的定义二、方法的参数传递机制 ★2.1 基本类型的参数传递2.2 引用类型的参数传递 三、方法重载 一、方法的定义 方法的作用:封装一段代码的语法结构,可以被重复调用,以此提高代码的复用性,提高开发效率&#xf…

操作系统之线程

线程 一、产生原因 最开始的并发,只能更具切换进程的方式去交替执行进程来宏观上并发,但是切换进程需要切换执行进程的环境,有很大的系统开销,所以产生了线程,让其可以不用频繁的切换进程,使得线程成为CPU…

【论文笔记 fintune 】羊驼

1.论文 这些开发由两个关键组件提供动力:大型预训练语言模型(LM)和人工编写的指令数据。 1.1 背景 目前的训练太吃数据了,需要使用一些替代方法减少对数据的依赖有微调过的数据集效果远好于没有微调 用什么数据集微调呢&#x…

Collaborative Metric Learning(www 2017)

Background 传统基于MF的模型,将特征向量的点积作为预测结果,这存在一个很大的问题,即dot product 不满足三角不等式),这会导致学到的特征向量次优(难以捕捉用户细粒度的偏好)。本文提出了一种…

【Java笔试强训 20】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥字符串反…

第十八章 协程

我们知道脚本都是继承自MonoBehaviour类,而其中的Update方法里面放置了大部分的游戏逻辑处理代码。Update方法是游戏循环的每一帧都去执行,这就要求我们的代码“无时无刻”不在处理所有的可能发生的情况,并做出相应的处理。如果我们想要完成“…

Vue之render函数

概述 render函数从名字上看就可以看出,它是一个用于渲染的函数,在Vue中我们要将我们写的界面展示到屏幕上时,使用的方式都是组件中的template:标签下编写内容后,由Vue将我们编写的界面渲染到屏幕上。而这个render函数就是比templ…

B. Divide Candies(数学 + 思维)

Problem - B - Codeforces Arkady和他的朋友们喜欢在一个n n的棋盘上玩跳棋。这个棋盘的行和列从1到n编号。 他的朋友们最近赢了一场比赛,所以Actady想用一些糖果来取悦他们。记得一则古老寓言(但不记得寓意)》,Arlady想给他的朋友们每个格子一个糖果组…

SpringMVC学习总结(一)SpringMVC简介入门案例

SpringMVC学习总结(一)SpringMVC简介/入门案例 一、SpringMVC简介 (一)什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分。 M:Model,模型层,指工程中的Ja…

手把手教你学会gitee的注册和代码的提交

欢迎来到壮壮的代码世界 gitee的注册和提交 一、gitee是什么?二、gitee怎么注册三、gitee的一些基本配置四、在gitee上创建远程仓库(存储代码的地方)五、clone远程仓库到本地电脑六、怎么把本地的代码推送到远程仓库去(git的三板斧…

jQuery操作

文章目录 1. jQuery基本介绍1.1 原理示意图1.2 快速入门1.2 什么是jquery对象1.3 dom对象转jQuery对象1.4 jQuery对象转dom对象1.5 jQuery选择器1.5.1 jQuery基本选择器1.5.2 jquery层次选择器1.5.3 基础过滤选择器1.5.4 内容过滤选择器1.5.5 可见度过滤选择器1.5.6 属性过滤选…

Vue(Vue脚手架)

一、使用Vue脚手架(Vue Cli) Vue官方提供脚手架平台选择最新版本: 可以相加兼容的标准化开发工具(开发平台) 禁止:最新的开发技术版本和比较旧版本的开发平台 Vue CLI🛠️ Vue.js 开发的标准工…

AWS VPC 配置指南:快速创建和设置你的虚拟私有云

文章目录 一、前言二、创建 VPC2.1 进入 AWS VPC 服务2.2 创建 VPC2.3 选择所要创建的 VPC 资源2.4 输入 VPC 名称2.5 设置 IPv4 CIDR block(IPv4 CIDR 块)2.6 选择可用区2.7 选择公有子网的数量2.8 设置 NAT 网关和 VPC 终端节点2.9 完成创建 VPC2.10 查…

python ast 详解与用法

目录 基本概念节点类型ast.Assignast.Nameast.Constantast.Callast.Attribute 结点的遍历ast源码示例 结点的修改示例 参考链接 基本概念 python 语言在编译前会解析为抽象语法树,整个文件可以看作一棵树,树上的每个节点就代表一条语句,中序…