- 2.5、表输出
- 表输出设置注意事项
- 注意事项:① 涉及爬虫增量操作 不要勾选裁剪表选项②数据连接问题 选择表输出中表所在的数据库③字段映射问题 确保数据流中的字段和物理表的字段数量一致 对应一致
- 三、kettle转换etl2清洗
- 首先建表增加了4个字段 演示步骤在视频里字段索引 没有提 索引算法建议用BTREE算法增强查询效率
- 主要针对etl1 生成的新的com_industry进行字段拆分 清洗3.1.kettle文件名:trans_etl2_socom_data3.2.包括控件:表输入>>>表输出3.3.数据流方向:etl1_socom_data>>>>etl2_socom_data注意事项:① 涉及爬虫增量操作 不要勾选裁剪表选项②数据连接问题 选择表输出中表所在的数据库③字段映射问题 确保数据流中的字段和物理表的字段数量一致 对应一致
- kettle转换2截图
- 3.4、SQL脚本 对com_industry进行拆分 完成所有字段清洗 注册资金字段时间关系没有进行细致拆解 调整代码即可
- selecta.*,case#行业为''的值 置为空when length(com_industry)=0 then null#其他的取第一个-分隔符之前elsesubstring_index(com_industry,'-',1)end ascom_industry1,case
- when length(com_industry)-length(replace(com_industry,'-',''))=0 then null#'交通运输、仓储和邮政业-'这种值 行业2也置为null
- when length(com_industry)-length(replace(com_industry,'-',''))=1 and length(substring_index(com_industry,'-',-1))=0 then null
- when length(com_industry)-length(replace(com_industry,'-',''))=1 thensubstring_index(com_industry,'-',-1)elsesubstring_index(substring_index(com_industry,'-',2),'-',-1)end ascom_industry2,case
- when length(com_industry)-length(replace(com_industry,'-',''))<=1 then null
- when length(com_industry)-length(replace(com_industry,'-',''))=2 thensubstring_index(com_industry,'-',-1)elsesubstring_index(substring_index(com_industry,'-',3),'-',-1)end ascom_industry3,case
- when length(com_industry)-length(replace(com_industry,'-',''))<=2 then null
- elsesubstring_index(com_industry,'-',-1)end ascom_industry4frometl1_socom_dataasa
- 四、清洗效果质量检查
- 4.1爬虫数据源数据和网站数据是否相符
- 如果本身工作是爬虫和数据处理在一起处理,抓取的时候其实已经判断,此步骤可以省略,如果对接上游爬虫同事,这一步首先判断,不然清洗也是无用功,一般都要求爬虫同事存储请求的url便于后面数据处理查看数据质量
- 4.2计算爬虫数据源和各etl清洗数据表数据量
- 注:SQL脚本中没有经过聚合过滤 3个表数据量应相等
- 4.2.1、sql查询 下面表我是在同一数据库中 如果不在同一数据库 from 后面应加上表所在的数据库名称不推荐数据量大的时候使用
- select count(1) from s_socom_dataunion allselect count(1) from etl1_socom_dataunion allselect count(1) from etl2_socom_data
- 4.2.2 根据 kettle转换执行完毕以后 表输出总量对比
- kettle表输出总数据量
- 4.3查看etl清洗质量
- 确保前两个步骤已经无误,数据处理负责的etl清洗工作自查开始 针对数据源清洗的字段 写脚本检查 socom网站主要是对地区 和行业进行了清洗 对其他字段做了替换多余字段处理 ,因此采取脚本检查,找到page_url和网站数据进行核查
- where里面这样写便于查看某个字段的清洗情况
- select*frometl2_socom_datawherecom_districtis null and length(com_industry)-length(replace(com_industry,'-',''))=3
- http: //www.socom.cn/company/7320798.html
- 此页面数据和etl2_socom_data表最终清洗数据对比
- 网站页面数据etl2_socom_data表数据
- 清洗工作完成。
来源: http://blog.csdn.net/python233/article/details/72972403