Hive-SQL工作中常用函数总结及案例实战
目录
0 引 言
1 空字段赋值
2 时间类
3 条件判断
4 多行转一行(行转列)
5 一行变多行(列转行)
6 窗口函数
7 排名函数
8 json解析函数
9 url解析函数
10 小 结
0 引 言
本文针对hive进行数据分析时总结了工作中常用的查询函数及分析函数,并对每种函数的用法进行总结赋予案例,每种案例都具有详细的解释。文章主要以实践为主,紧紧围绕工作中常用的一些函数进行总结,更注重对函数的使用方法进行分析,其后的案例读者可自行尝试学习,具有借鉴意义。
1 空字段赋值
(1)函数说明
1)NVL函数:给值为NULL的数据赋值,它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。
select nvl(name,-1) from test;
2)COALESCE函数: (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。
hive> select coalesce(1,2);
OK
1
Time taken: 0.461 seconds, Fetched: 1 row(s)
hive> select coalesce(null,2);
OK
2
Time taken: 0.407 seconds, Fetched: 1 row(s)
hive> select coalesce(null,null,3);
OK
3
Time taken: 0.081 seconds, Fetched: 1 row(s)
hive> select coalesce(null,2,3);
OK
2
Time taken: 0.082 seconds, Fetched: 1 row(s)
hive> select coalesce(null,null);
OK
NULL
Time taken: 0.15 seconds, Fetched: 1 row(s)
select coalesce(name,-1) from test;
2 时间类
(1)date_format:格式化时间
hive> select date_format('2019-03-20','yyyy-MM-dd');
OK
2019-03-20
Time taken: 0.102 seconds, Fetched: 1 row(s)
(2)date_add:时间跟天数相加
hive> select date_add('2019-03-20',5);
OK
2019-03-25
Time taken: 0.084 seconds, Fetched: 1 row(s)
(3)date_sub:时间跟天数相减
hive> select date_sub('2019-03-20',5);
OK
2019-03-15
Time taken: 0.08 seconds, Fetched: 1 row(s)
(4)datediff:两个时间相减
hive> select datediff('2020-03-20','2019-12-24');
OK
87
Time taken: 0.078 seconds, Fetched: 1 row(s)
(5)from_unixtime:将时间戳转换成标准的时间
语法: from_unixtime(bigint unixtime,string format)
返回值: string
说明: 转化 UNIX 时间戳(从 1970-01-01 00:00:00 UTC 到指定时间的秒数)到当前时区的时间格式,默认的format是yyyy-MM-dd HH:mm:ss,可以指定别的。输入:bigint的时间戳输出:string格式化的时间
常用的转换方法如下:from_unixtime(cast(substr(cast(msg_time as string),1,10) as bigint),'yyyy-MM-dd')一般时间戳到毫秒13位的到hive中只能处理10位的到秒,因而用上述方法进行转换。hive> select from_unixtime(cast(substr(cast(msg_time as string),1,10) as bigint),'yyyy-MM-dd') from dwd_iot_phm_trackcir_shock limit 1;
OK
2020-01-16
Time taken: 0.203 seconds, Fetched: 1 row(s)
(6) unix_timestamp:将标准的时间(年月日时分秒的格式,格式可以指定)转换为时间戳
语法: unix_timestamp(string date, string format)
返回值: bigint
说明: 转换 pattern 格式的日期到 UNIX 时间戳。如果转化失败,则返回NULL。默认的format是yyyy-MM-dd HH:mm:ss,可以指定别的。
输入值:格式化时间 String
返回值:时间戳 bigint
注意:输入时间必须是到秒级的时间,否则转换失败返回NULLhive> select unix_timestamp('2020-03-18');
OK
NULL
Time taken: 0.113 seconds, Fetched: 1 row(s)hive> select unix_timestamp('2020-03-18 13:15:20');
OK
1584508520
Time taken: 0.198 seconds, Fetched: 1 row(s)
3 条件判断
CASE WHEN
1. 数据准备
name |
dept_id |
sex |
果子学长 |
A |
男 |
小眼睛 |
A |
男 |
宋小宝 |
B |
男 |
韦小宝 |
A |
女 |
凤姐 |
B |
女 |
如花姐 |
B |
女 |
2. 创建表
create table emp_sex(
name string,
dept_id string,
sex string)
row format delimited fields terminated by "\t";
3.加载数据
load data local inpath '/home/centos/dan_test/data.txt' into table emp_sex;
4.需求:求出不同部门男女各多少人
5. Hql代码如下:
select dept_id,sum(case sex when '男' then 1 else 0 end) male_count,sum(case sex when '女' then 1 else 0 end) female_count
from emp_sex
group bydept_id;
结果如下:
Hive-SQL工作中常用函数总结及案例实战相关推荐
- 收集一些工作中常用的经典SQL语句
作为一枚程序员来说和数据库打交道是不可避免的,现收集一下工作 中常用的SQL语句,希望能给大家带来一些帮助,当然可能不全面,欢迎补充! 1.执行插入语句,获取自动生成的递增的ID值 INSERT IN ...
- 在工作中常用的sql语句
这个是我以前在工作中常用的一些SQL语句,里面大部分都是从其他网站上找的,只有部分是自己在工作中解决问题事记录的,现在一起贴出来跟大家分享下,其实很多时候看看别人的经验总结和技术的理解,会使自己少走很 ...
- 大数据基础之Hive(四)—— 常用函数和压缩存储
作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...
- 通过Hive的案例了解Hive在工作中的使用
通过Hive的案例了解Hive在工作中的使用 笔者学习了HIve有一阵子时间了,但是碍于缺乏项目的实战,所以HQL写的总是别别扭扭,所幸通过一个案例似乎打通了一些对于HiveSQL使用的一些疑惑,故通 ...
- HiveQL学习笔记(二):Hive基础语法与常用函数
本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...
- mysql中常用函数与存储过程的创建
mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...
- 工作中常用的Stream集合处理
前言:Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,它允许把函数作为一个方法的参数,让我们的代码更优雅简洁. Java8最 ...
- 工作中常用,实用工具推荐!
原文:工作中常用,实用工具推荐! Red Gate 家族 大名鼎鼎的RedGate,相信大家都不会陌生,Reflector就是它家做的.这里就不介绍了.我本地安装的是09年下的一个套装,我介绍下常用的 ...
- TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别
TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...
最新文章
- 小程序画布画海报保存成图片可以保存实现完整代码
- 概率论 - BZOJ - 4001 TJOI2015
- Servlet-forward转发
- node.js express php,nodejs开发——express路由与中间件
- nuke linux 插件,Nuke 插件:镜头光晕 Optical Flares v1.0.86(含预设)Win/Mac/Linux
- Spark SQL来读取现有Hive中的数据
- Stateless 3.0——.NET Core上的状态机库
- VB.NET判断一个路径的文件是否存在
- Eclipse中 Clean 的时候总是警告 org.apache.catalina.webresources.Cache backgroundProcess
- 【无标题】外网访问esxi虚拟主机使用VMRC需要映射端口
- java random 种子数_java中Random类带种子与不带的区别,详细解析
- Scala基础入门(二) Scala下载、安装教程
- 吃鸡ios和android灵敏度,吃鸡手游pc版怎么调灵敏度参数教程 | 手游网游页游攻略大全...
- bilibili、腾讯视频下载方法及过程中遇到的一些问题
- 草根程序员进入BAT
- 仅需一行代码,小白也可以制作自己的专属二维码!
- EOF 键盘输入end of file
- JS 根据date日期格式返回周几
- 自建speedtest测速服务器教程,Linux/Windows/群晖
- CSS DIV 滚动(CSS,HTML)