kettle开发-数据清洗之字符串替换

简介: kettle开发-数据清洗之字符串替换

前言:


       昨天讲到了通过case/switch组件来进行分流,来区分日期里面三大类的数据,包括正常显示的2023/7/12 2:59:58的数据,一种是包含中文上午的数据,一种是包含中文下午的数据。但是我们发现这样直接存进去的数据还是包含了很多带有਍和汉字上午、下午和年份不完整只有23这种异常数据。很显然这些异常数据会导致我们数据分析的时无法处理。因此我们必须对这些异常数据进行清洗让其恢复正常。


一、字符串替换


1、功能简介


如上图所示,字符串替换可以将字符串A变成字符串B,因此我们可以通过字符串替换的功能可以清除类似包含"਍"的数据等等。


2、小案例


字符串替换的时候如果我们是简单的讲A替换为B的话,我们只要选择需要替换的输入流字段,不使用正则表达式,搜索里面输入A,使用...替换,输入B即可,设置为空串为否等如下图所示即可。

原始的字符串

替换后的结果


如上图所示,我们成功将字符串 ABaaABb→BBBBBBb,因为我们选了大小写不敏感,因为a也会被替换,因此我们需要根据自己的需要来选择对应的替换数据范围。


二、特殊应用


前面讲到我们需要处理特殊字符਍和汉字等,因此我们需要用到正则表达式。


2.1正则表达式


 如上图所示我们通过正则表达式਍+来匹配包含਍的数据,因此字符串任何位置਍,都会被空值替换掉。类似中文上午 和 下午 我们就可以用正则表达式上午 +   下午 +来匹配对应的字符串然后进行替换。最后的设置效果如下图所示。


2.2特殊处理


在前面我们有说到,我们字符串中的年份不完整,如2023显示的是23因此我们需要将23转换成2023。在这里需要注意的是,我们的小时、分钟、秒都可能出现23因此,在处理23年份的时候,我们需要使用^23来处理,表示只替换23开头的23为2023,因此就不会将小时、分钟、秒也替换为2023了。对应效果如下图所示。

23年份的问题得到了处理,我们还需要类似23.07.14替换为2023/07/14,因此我们此时需要将". "替换为"/"。在这里需要注意的是,我们不能直接.或者/,因为对应都是关键字,我们需要用\.和\/来完成对应的字符串的替换工作。最终效果如下图所示。


三、总结


在应用字符串替换来进行数据清洗时,我们可以用正则表达式来模糊匹配,但是需要注意模糊匹配会不会造成将其他不应该替换的数据被替换了。如替换年份时,将小时、分钟、秒也被替换了。


还有就是当我们发现替换后的字符串不按我们预想的效果来就需要考虑是不是我们用到了关键字,因此我们需要用\关键字来完成对应替换规则。


相关文章
|
1月前
|
Java
ETL工具 Kettle 中 kettle循环传递变量_(最简单的方法)
本文详细介绍了如何在Kettle工具中使用循环传递变量,通过示例展示了如何将movies表数据按月插入到ods_movies表,涉及新建转换、获取变量、作业配置和执行,呈现了一个嵌套作业结构.
87 3
|
1月前
|
SQL 关系型数据库 MySQL
ETL工具 Kettle 中怎么通过变量传参
ETL工具 Kettle 中怎么通过变量传参
26 0
|
6月前
|
数据采集 JSON 数据挖掘
利用Python实现自动化数据清洗和转换
数据清洗和转换是数据分析的重要步骤。在数据分析工作中,我们常常需要处理不规范、重复、缺失或错误的数据。本文介绍如何使用Python编程语言实现自动化数据清洗和转换,为数据分析工作提供高效的支持。
|
6月前
|
数据采集 Python
在Python中进行数据清洗和预处理查看数据概况
在Python中进行数据清洗和预处理查看数据概况
63 2
|
6月前
|
存储
kettle开发篇-列转行
kettle开发篇-列转行
242 0
|
6月前
kettle开发篇-行转列
kettle开发篇-行转列
405 0
|
数据采集 运维 Ubuntu
使用kettle进行数据清洗
使用kettle进行数据清洗
使用kettle进行数据清洗
|
数据挖掘 大数据 索引
数据导入与预处理-第6章-03数据规约
数据导入与预处理-第6章-03数据规约 3 数据规约 3.1 数据规约概述(6.3.1 )
数据导入与预处理-第6章-03数据规约
|
SQL 关系型数据库 MySQL
电商项目之 Sqoop 脚本编写数据导入|学习笔记
快速学习电商项目之 Sqoop 脚本编写数据导入
电商项目之 Sqoop 脚本编写数据导入|学习笔记
|
SQL Java API
基于antlr-3.5.2+Python实现一般HiveSQL血缘解析(二)
基于antlr-3.5.2+Python实现一般HiveSQL血缘解析(二)
398 0
基于antlr-3.5.2+Python实现一般HiveSQL血缘解析(二)