文档详情

《数据导入与预处理应用》第4章 - 03 - 使用脚本组件进行数据清理.ppt

发布:2025-04-30约1.37万字共27页下载文档
文本预览下载声明

*4.3.1使用JavaScript代码组件清理数据JavaScript代码步骤提供了大量的关于字符串、数字、日期、逻辑、文件和一些特殊功能的函数以供你创建自己的脚本。可以在这个步骤编写JavaScript,访问Java包。有性能缺陷的,因为它是解释JavaScript代码。该步骤主要分为三个面板:Javascriptfunctions:提供可用脚本、函数、输入字段和输出字段的树形视图JavaScript:编辑JavaScript代码的地方Fields:字段表包含脚本中的变量列表*4.3.1使用JavaScript代码组件清理数据示例:新建转换JavaScript_op添加”DataGrid”步骤,输入如图所示的图书借阅信息要求:借书时长为一周之内的记录,将其状态标为“OK借书时长是一周至二周之间的标为“DELAYDE”借书时长超过二周标为“LATE”*4.3.1使用JavaScript代码组件清理数据新建一个“JavaScript代码”步骤双击打开该步骤的配置页面,在目录“TransformFunctions/DateFunctions/”找到函数dateDiff右击该函数,选择”Sample”子菜单,代码编辑界面显示出该函数的用法及使用示例该示例非常简单,只需要使用该函数计算出两个日期相差的周数,然后赋值给一个状态变量就可以了*4.3.1使用JavaScript代码组件清理数据预览“JavaScript代码”步骤的结果*4.3.2使用正则表达式组件清理数据正则表达式验证步骤(或者直接称正则表达式步骤)允许使用正则表达式来匹配输入字段的字符串可以使用该步骤从输入字符串中提取特定的子字符串,将捕获到的子字符串放到新的字段里正则表达式的相关学习:《精通正则表达式》有中、英文版/...正则表达式非常灵活、强大,可以用它来处理一些复杂的数据比如:检测一个电子邮箱地址是否合法分析日志文件,提取有用信息*4.3.2使用正则表达式组件清理数据示例,日志分析CentOS服务器的安全日志片段要求:将有错误密码连接请求行的日期、账户名、IP和端口提取出来*4.3.2使用正则表达式组件清理数据思路:第一步,导入该日志文件,且将日志文件的每行日志做为一条记录;第二步,通过使用“正则表达式”步骤,查找出有错误密码连接请求的行,并捕获出匹配到的子字符串(日期、账户名、IP、端口);第三步,根据“正则表达式”步骤的验证结果,筛选出匹配到的记录;第四步,将匹配到的数据输出到文件。*第一步,导入日志文件,将日志文件的每一行读成一条记录。新建转换regex_op,添加“文本文件输入(Textfileinput)”步骤,做如下设置:文件(File)页面:添加日志文件内容(Content)页面:选中“Rownumisoutput”,并设置行号的字段为“LineNo”,分隔符(Separator)设为“\n”,并将格式(Format)选项设置成“Unix”。字段(Fields)页面:设置字段名为“Info”,类型为“String”,该字段用来存储日志文件的每一行记录。预览数据4.3.2使用正则表达式组件清理数据*4.3.2使用正则表达式组件清理数据第二步,正则匹配。使用“正则表达式”步骤匹配日志,并提取相关子字符串:由于这里的正则表达式可能比较复杂,如果写成一行且不加注释可能很难维护在”Content”页面,选中“Permitwhitespaceandcommentsinpattern”,以允许正则表达式中有空白和注释模式*正则表达式:^(\w{3}\s+\d{1,2}\s\d{2}:\d{2}:\d{2}) #date.*?Failed\spassword\sfor\s(.*?)\s #userfrom\s([^\s]{7,15})\s #ipport\s(\d*) #端口.*原日志中的空白符在正则表达式中全换成了“\s”:一方面,因为前面设置了“允许空白和注释模式”选项,我们不得不用“\s”替换空白符;另一方面,当输入文件的空白符分不清是空格还是制表符,用“\s”是更好的解决方法。此外,如果不清楚究竟有几个空白符时,使用“\s+”可能更好。4.3.2使用正则表达式组件清理数据*4.3.2使用正则表达式组件清理数据“正则表达式”步骤配置截图*4.3.2使用正则表达式组件清理数据“正则表达式”步骤其它设置解释指定正则表达式需要检测的字段存储匹配结果的字段名对子字符串创建新的字段如果创建的子字符串字段与输入的字

显示全部
相似文档