kettle实现用户名动态脱敏和时间模糊_kettle 脱敏-程序员宅基地

技术标签: Kettle  数据脱敏 脱敏 脱敏技术  mysql  数据脱敏  

  • 用户名脱敏
    在给用户名进行脱敏时,通常情况下我们使用正则表达式或者其他方法,但是正则表达式在kettle中不容易实现动态脱敏(即将一个用户名除去首字符和尾字符都替换为***)
    举个例子:
CSDN 脱敏后为 C**N   //4-2 = 2 个 *
abcdefg 脱敏后为 a*****g    //7-2 =5 个 *
即在中间输出:(字符串的长度-2)个   *
  • 时间模糊
    将时间字段模糊至年月日,如将2013-9-30 07:41:00模糊为2013-9-30

步骤:
1. 数据库中各个字段以及内容
在这里我们可以看到爬取时间后面有时分秒,用户名也是完整显示
在这里插入图片描述
2. 添加JAVA代码进行用户名动态脱敏

代码位于Processor部分,红框中的代码是动态处理的部分,在这里插入图片描述

import java.util.*;
import java.util.Collections;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
    
	if (first){
    
	  first = false;

	}

	Object[] r = getRow();

	if (r == null) {
    
	  setOutputDone();
	  return false;
	}

	// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
    // enough to handle any new fields you are creating in this step.
    r = createOutputRow(r, data.outputRowMeta.size());
	
    /* TODO: Your code here. (See Sample)
    
    // Get the value from an input field
    String foobar = get(Fields.In, "a_fieldname").getString(r);

    foobar += "bar";
    
    // Set a value in a new output field
    get(Fields.Out, "output_fieldname").setValue(r, foobar);
	
	*/
	String id = get(Fields.In, "评论者ID").getString(r);//获取输入
	int len = id.length();
	
	if (len == 1) {
    
		id = "*";
		}
		else if (len == 2) {
    
			id = id.charAt(0)+"*";
		}
		else {
    
			String replace = String.join("", Collections.nCopies(len-2, "*"));
		    id = id.charAt(0)+replace+id.charAt(len-1);
		}
	
	get(Fields.Out, "评论者ID_mask").setValue(r, id);
	// Send the row on to the next step.
    putRow(data.outputRowMeta, r);//输出

	return true;
}

3. 使用字段选择实现时间模糊
在这里插入图片描述
4.添加excel输出,输出到xls文件
在这里插入图片描述
5.连接控件
在这里插入图片描述
6.启动并输出结果
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013593554/article/details/107051917

智能推荐

MySQL存储引擎笔记day07-程序员宅基地

存储引擎1.简介类似Linux的文件系统,比文件系统要高级。2.MySQL存储引擎类型(笔试:3-4种)InnoDB 5.5以后默认的存储引擎。select @@default_+------------------------------+| @@default_tmp_storage_engine |+------------------------------..._独立表空间迁移全备单库

10 分钟轻松学会 Jackson 反序列化自动适配子类_小强的进阶之路的博客-程序员宅基地

预计阅读时间: 13分钟json 格式使用非常方便,通常情况下我们反序列化的时候需要指定具体类型。如果遇到继承类型可能会解析失败。今天总结下基于类型扩展的子类自动适配,能够实现反序列化时按..._jackson 反序列化子类

string的replaceAll()_xia_codings的博客-程序员宅基地

语法public String replaceAll(String regex, String replacement)参数regex:regex–正则表达式代表在该字符串中通过正则表达式查找符合添加的子字符串replacement:需要替换的需要的字符串返回值成功则返回替换的字符串,失败则返回原始字符串。案例:手机号隐藏 String phone = "12345678910"; String replace = phone.replaceAll("(\\d{_string的replaceall

公司年薪百万的技术总监,让他写点代码,竟然说:我不写代码的!-程序员宅基地

点击上方“码农突围”,马上关注这里是码农充电第一站,回复“666”,获取一份专属大礼包真爱,请设置“星标”或点个“在看”作者:黄哲铿 |编辑:玲玲来源:公众号@技术领导力标题来源于一..._百万年薪。技术总监

十六进制转byte_16进制转byte-程序员宅基地

十六进制转byte在Java中想把 FD 转成 byte,首先想到的是byte v = Byte.parseByte(“FD”, 16);结果得到一个java.lang.NumberFormatException,说值的范围越界了。是的,byte的范围是-128~127,如果把9D当成正数来转换,结果是157,当然越界了。所以有这样三个处理办法byte v = (byte) Integ..._16进制转byte

计算机组成原理笔记(王道考研) 第二章:数据的表示和运算1_8位字长的计算机怎么计算int_CS_Lee_的博客-程序员宅基地

计算机组成原理笔记(王道考研) 第二章:数据的表示和运算1_8位字长的计算机怎么计算int

随便推点

记录一次java线上排查cpu爆满_jpa一万条数据cpu爆了-程序员宅基地

首先cpu爆满一样是出现循环无法结束的情况,还是查看linux进程和进程对应的线程,用堆栈信息打印当前运行情况,不多说,看命令:1. 先查进程: ps -ef|grep java2.查进程对应线程,按cpu使用率排序:top -Hp 29923.线程号需要转换成16进制,网上有在线工具,例如4.打印堆栈信息:jstack 2992|grep -C30 cb9这样就能定位问题大致出现在哪里..._jpa一万条数据cpu爆了

pytorch 中的torch.bmm_pytorch torch.bmm-程序员宅基地

torch.bmm(batch1, batch2, out=None) → Tensor参数:batch1 (Tensor) – 第一批相乘矩阵 batch2 (Tensor) – 第二批相乘矩阵 out (Tensor, optional) – 输出张量举例import torch batch1 = torch.randn(8, 2, 6) batch2 ..._pytorch torch.bmm

简述UWB定位中发挥重要作用的硬件设施-程序员宅基地

在工业领域对智慧安全体系的逐渐拓展完善过程中,UWB定位技术受到越来越多的重视,本篇文章将对UWB的硬件设施部分进行阐述,让读者能够更快速的理解UWB在工业中是如何精准定位的。UWB的定位原则人员定位技术在工业领域中的应用会根据不同的需求进行不同模式的定位,主要分为存在性的零维定位、只需要检测相对位置的一维定位、区域内精准需求的二维和对高度有一定要求的三维定位。零维定位,也被称作存在性检测,区域内安装1台定位基站,可实现区域内人员的存在性检测和统计,一般用于小型房间等区域。一维定位,一维定位主要应用_简述uwb

IE中textarea光标丢失问题及解决方法_textarea 丢失光标-程序员宅基地

首先,让我对IE浏览器致以最热烈的问候:我次奥~当页面上内嵌了iframe,同时此iframe中还内嵌了iframe,弹出窗口后,原来textarea中编辑的光标位置就会丢失。在chorme和firefox下不会出现此问题。解决方法:在textarea的mouse和key事件中保存当前光标位置,然后在窗口关闭时还原。1.保存光标位置var ieSelectionBookmark;_textarea 丢失光标

Android开发之PCM音频流采集| 音频流录制与PCM音频流播放的实现方法_pcm流-程序员宅基地

在android中如果需要录制PCM流需要用到AudioRecord这个类,然后播放的话需要用AudioTrack先看下效果图:好了我们先看下如何录制PCM,看下核心代码 try { //输出流 OutputStream os = new FileOutputStream(recordFile); BufferedOutputStream bos = new BufferedOutputStream(os); _pcm流

卡顿、ANR、死锁,线上如何监控?_死锁导致anr_「已注销」的博客-程序员宅基地

一、前言最近参加了几轮面试,发现很多5-7年工作经验的候选人在性能优化这一块,基本上只能说出传统的分析方式,例如ANR分析,是通过查看/data/anr/ 下的log,分析主线程堆栈、cpu、锁信息等,然而,这种方法有一定的局限性,并不是每次都奏效,很多时候是没有堆栈信息给你分析的,例如有些高版本设备需要root权限才能访问/data/anr/ 目录,或者是线上用户的反馈,只有一张ANR的截图加上一句话描述。假如你的App没有实现ANR监控上报,那么你大概率会把这个问题当成“未复现”处理掉,而没有真正_死锁导致anr