2018-1-27工作周总结

2018-1-27

本周工作总结:

本周主要做ETL数据的特征提取,根据数据,凭借自己直觉以及对数据本身的定性的了解,主观设定一些特征项目,并进行实现;实现的大致流程:对每一个表中的特征进行分类定义:布尔型以及数值型(频率型),统一它们的变量名称,在此基础上,利用sql语句进行提取,本周学到的比较有特色的一个sql语句:即求不同企业的三年内发明专利个数:在表里面有可能存在相同的行,因此需要去重,去重是先group by该表的每一列,再通过聚合函数取每一列,例如:maxmin,(原因,聚合函数实现了去重,因为如果有相同的话,就只会保留一项;但是如果不同的话,因为是先group by了的,所以聚合函数里面也只会含一项,不会对他们本身造成影响;);还有一个比较有特色的sql语句:求取重庆每个行业的注册资产排名前10的企业名称的语句,首先,先用重庆企业的表去left join含全国所有企业注册资产的表,且重庆企业的表要distinct一下,在此基础上,运用的dense_rank这个语句,select dense_rank() over(order by columns) as des_rank,* from table

延伸:dens_rank若遇到排名一致的,会延续上一个排名值,即会有重复排名序号;例如:1,1,2,3,3rank则会直接跳过,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加一,如:出现1,1,3,3;(https://www.cnblogs.com/52XF/p/4209211.html),先根据over子句生成一个序号,然后再通过SQL语句中的order by columnx来进行在当前over by序号确定下根据columnx排序后的一个位置变更!

在使用排名函数的时候需要注意以下三点:

1、排名函数必须有 OVER 子句。

2、排名函数必须有包含 ORDER BY OVER 子句。

3、分组内从1开始排序。

另外,还有用sparksql.Context读文件的时候,local本地文件可能读不了,

 

你可能感兴趣的:(工作总结)