Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6686639
  • 博文数量: 1005
  • 博客积分: 8199
  • 博客等级: 中将
  • 技术积分: 13071
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-25 20:19
个人简介

脚踏实地、勇往直前!

文章分类

全部博文(1005)

文章存档

2020年(2)

2019年(93)

2018年(208)

2017年(81)

2016年(49)

2015年(50)

2014年(170)

2013年(52)

2012年(177)

2011年(93)

2010年(30)

分类: 大数据

2013-05-18 10:40:08


    在做etl的过程中,经常会遇到处理大文本文件的需求,比如提取大文本文件中自己需要的内容输出生成新文本,这个当然可以通过脚本实现,但这里我想借助kettle这个工具来实现.本实例是提取文本文件中第二列包含andriod字眼的数据,同时需要将手机号需要处理(没有86需要加上86).

1.创建实例文本文件(example.txt)
文本内容如下
15889559190,andriod
15889559191,ANDRIOD
15889559192,Andriod
15889559193,Andriod
15889559194,Andriod
15889559195,Andriod
15889559196,Andriod
15889559197,ios
15889559198,Andriod
15889559198,Andriod
15889559199,IOS
8615889559195,Andriod
2.添加文本输入控件


添加文本C:\kettle_data\example.txt,以逗号分隔.

3.添加字符串操作符,将需要匹配的字符转化为大写,这里将第二列的值转换为大写.




4.添加javascript,将手机号码前添加86




javascript代码如下:
//Script here
var nousernumber="";
if(Field1.getString().length()==11){
  Field1.setValue("86"+Field1.getString());
}else if(Field1.getString().length()==13)
  Field1.setValue(Field1.getString());
else{
  nousernumber=Field1.getString();
}

5.添加过滤记录控件提取符合要求的数据,同时添加空操作分支(不满足条件的流向这个分支)


过滤条件如下:



6.文本中号码可能有重复的,我们这里需要去重,添加去重控件





7.最后将过滤的数据导出到文本


最后输出的文本内容如下:
8615889559190,ANDRIOD
8615889559191,ANDRIOD
8615889559192,ANDRIOD
8615889559193,ANDRIOD
8615889559194,ANDRIOD
8615889559195,ANDRIOD
8615889559196,ANDRIOD
8615889559198,ANDRIOD




-- The End --


阅读(9047) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~