目录

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工作中常用函数总结及案例实战相关推荐

  1. 收集一些工作中常用的经典SQL语句

    作为一枚程序员来说和数据库打交道是不可避免的,现收集一下工作 中常用的SQL语句,希望能给大家带来一些帮助,当然可能不全面,欢迎补充! 1.执行插入语句,获取自动生成的递增的ID值 INSERT IN ...

  2. 在工作中常用的sql语句

    这个是我以前在工作中常用的一些SQL语句,里面大部分都是从其他网站上找的,只有部分是自己在工作中解决问题事记录的,现在一起贴出来跟大家分享下,其实很多时候看看别人的经验总结和技术的理解,会使自己少走很 ...

  3. 大数据基础之Hive(四)—— 常用函数和压缩存储

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...

  4. 通过Hive的案例了解Hive在工作中的使用

    通过Hive的案例了解Hive在工作中的使用 笔者学习了HIve有一阵子时间了,但是碍于缺乏项目的实战,所以HQL写的总是别别扭扭,所幸通过一个案例似乎打通了一些对于HiveSQL使用的一些疑惑,故通 ...

  5. HiveQL学习笔记(二):Hive基础语法与常用函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  6. mysql中常用函数与存储过程的创建

    mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...

  7. 工作中常用的Stream集合处理

    前言:Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,它允许把函数作为一个方法的参数,让我们的代码更优雅简洁. Java8最 ...

  8. 工作中常用,实用工具推荐!

    原文:工作中常用,实用工具推荐! Red Gate 家族 大名鼎鼎的RedGate,相信大家都不会陌生,Reflector就是它家做的.这里就不介绍了.我本地安装的是09年下的一个套装,我介绍下常用的 ...

  9. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

最新文章

  1. 小程序画布画海报保存成图片可以保存实现完整代码
  2. 概率论 - BZOJ - 4001 TJOI2015
  3. Servlet-forward转发
  4. node.js express php,nodejs开发——express路由与中间件
  5. nuke linux 插件,Nuke 插件:镜头光晕 Optical Flares v1.0.86(含预设)Win/Mac/Linux
  6. Spark SQL来读取现有Hive中的数据
  7. Stateless 3.0——.NET Core上的状态机库
  8. VB.NET判断一个路径的文件是否存在
  9. Eclipse中 Clean 的时候总是警告 org.apache.catalina.webresources.Cache backgroundProcess
  10. 【无标题】外网访问esxi虚拟主机使用VMRC需要映射端口
  11. java random 种子数_java中Random类带种子与不带的区别,详细解析
  12. Scala基础入门(二) Scala下载、安装教程
  13. 吃鸡ios和android灵敏度,吃鸡手游pc版怎么调灵敏度参数教程 | 手游网游页游攻略大全...
  14. bilibili、腾讯视频下载方法及过程中遇到的一些问题
  15. 草根程序员进入BAT
  16. 仅需一行代码,小白也可以制作自己的专属二维码!
  17. EOF 键盘输入end of file
  18. JS 根据date日期格式返回周几
  19. 自建speedtest测速服务器教程,Linux/Windows/群晖
  20. CSS DIV 滚动(CSS,HTML)

热门文章

  1. Fast RCNN论文总结
  2. 汉诺塔:动画过程绘制实现
  3. G宝盘-1GB的免费网络U盘
  4. 布林线应用的四条法则
  5. Cocos2d-x 版本小游戏 《是男人就下100层》 项目开源
  6. 阿里云将静态html网页部署至云服务器
  7. 带歆字好听的女孩名字
  8. Flask中的Jinja2模块引擎
  9. 基于 Pytorch 疾病图片诊断识别 ResNet
  10. ETL介绍及工作原理