hive/sql
文章平均质量分 58
整理hive/sql使用过程中相关知识点与踩坑
wonengguwozai
欢迎爱技术的同行交流
展开
-
hive中曾踩过的坑
写hql的需要的注意点:尽量使用group by 代替distinct用小表join大表join 时右侧表的关联字段要求是distinct的,否则会出现笛卡尔积现象,如a.v1列值为1,1,1,2;b.v1列值为1,1,对于a join b on a.v1=b.v1,会出现笛卡尔积:a的三个1会分别与b的两个1进行join。谨慎使用开窗函数,使用不当会造成大量的重复计算。如在统计特征:当前sku的cid3过去7天的平均每天ord的用户数量,在每个cid3有大量sku的情况下,使用开窗函数会造成大.原创 2021-03-05 11:17:16 · 156 阅读 · 0 评论 -
hive中常用的函数
1、缘起:最近在着手做推荐特征处理工作,有大量的hql处理工作,在网上搜索相关常用函数,以备查。2、常见hive函数1、parse_url(url, partToExtract[, key])功能:解析URL字符串,partToExtract的选项包含[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO]2. concat(str1,SEP,str2,SEP,str3,……) 和 concat_ws(SEP,str1,str2,str3, …原创 2021-01-23 23:49:19 · 337 阅读 · 0 评论 -
python读取hive表数据及将生成的数据存入hive表
1、缘起:1、最近项目中部署模型时涉及到需要在线处理hive表数据,通过算法处理后,将处理生成的结果写入hive表中。通过调研可使用pyspark通过python操作hive表并处理,再生成hive表。但对于没接触pyspark的我来说,学习pypark存在时间代价。所以探索通过hdfs交互的方式对hive表进行读取和生成。2、hive表读取可通过将hive存储为csv格式通过pandas读取,注意此时千万不要将hive表存储为压缩格式,负责csv打开是乱码;hive表存储通过在hdfs上创建库表(库表原创 2021-01-23 23:18:39 · 1608 阅读 · 1 评论 -
SQL中的grouping sets 子句
缘起:在分析库表数据时需求是:分析基于日期dt下某个推荐位下各实验位分别的曝光uv及基于日期dt下某个推荐位下的曝光uv。实现中使用到了grouping sets子句,这里对该子句进行总结、整理以备忘。实例解析grouping sets是group by 子句允许指定多个选项,其核心功能是增强group by 的功能。使用**grouping sets相当于多个group by 的sql查询结果再union。**下面对比说明:实例一:查询每个部门的每类工作的平均工资使用group by的原创 2021-01-16 22:47:18 · 1050 阅读 · 0 评论 -
SQL中的case when then else end用法总结
缘起:今天看hive库表分析的代码,里面涉及到了case when then else end语句,深究发现虽然其本身比较简单--基础用法:简单的条件判断,但有高级的用法--对列值进行分组处理,这里参照别人的经验进行总结下。1、基础用法写法一:SELECT s.s_id, s.s_name, s.s_sex, CASEWHEN s.s_sex = '1' THEN '男'WHEN s.s_sex = '2' THEN '女'ELSE '其他'END a原创 2021-01-16 22:06:47 · 723 阅读 · 0 评论 -
hive-sql遇到的一些坑
聚合函数count 是忽略空值NULL的,对于逻辑值或者文本数据也将被忽略,只能对数字数据进行统计(加双引号没关系)。错误示范:可以看出第二个查询中的错误:一方面count的统计本身去除了null不能这样统计,应使用if 判断给出数值进行统计,另一方面devicetoken本身为非数字,直接count也是统计不出来的。正确的方式...原创 2021-01-13 14:56:47 · 329 阅读 · 0 评论 -
sql各种join,union汇总
缘起:hive的使用中涉及到很多sql查询,比如join的使用,这里总结下所有join。join 的用法汇总:汇总图这里简要说明:左连接就是结果显示的是左边的所有数据以及 右边表与左边表重合的数据,其余同理。例子:有如下两张表:1、左连接的结果为:2、右连接的结果为union 与union all的用法union 取并集,表中的所有数据,并且去除重复数据;UNION ALL,表中的数据都罗列出来(不去重);...原创 2020-12-12 13:08:09 · 355 阅读 · 0 评论 -
group by,order by以及group by..order by的使用总结
前言sql 语句的关键词执行顺序:(注意select 与order by的执行顺序)from>where>group by>having>select>order bygroup by的使用分组方法:按指定的一列或多列值分组,值相等的为一组。1.使用聚合函数count,sum,avg,max,min。未对查询结果分组,聚合函数将作用于整个查询结果。对查询结果分组后,集函数将分别作用于每个组。有如下数据表:例1.1 对整个的表进行countSELECT c原创 2020-12-09 11:26:54 · 1906 阅读 · 0 评论 -
sql 中的开窗函数: 聚合函数 over(选项)
开窗函数入门开窗函数形式:聚合函数 over(选项)开窗函数的作用:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是普通聚合函数每组只能返回一个值,而开窗函数可以每组返回多个值。例子:比如我们想查询每个工资小于5000元的员工信息(城市以及年龄),并且在每行中都显示所有工资小于5000元的员工个数,执行下面的SQL语句select t.fcity,t.fage,count(*) from person t where t.fsalary<5000这个语句显然是错误的,因为cou原创 2020-12-07 22:10:25 · 3489 阅读 · 1 评论 -
select 1 from.../partition by 1等语句中的1的含义
用处一直观作用:临时增加列,列中的所有值使用1填充(当人使用其他值也可以)select 1 from table;与select anycol(目的表集合中的任意一列) from table;与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的。select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,但从效率上来说,1>anycol>,因为不用查字典表。实例测试table表是一个数据表,假设表的行原创 2020-12-07 21:37:18 · 1664 阅读 · 0 评论