hive 常用函数与技巧知识点


持续更新

1.NVL函数
NVL(expr1, expr2):
空值转换函数;
如果expr1为NULL,返回值为 expr2,否则返回expr1。
适用于数字型、字符型和日期型,但是 expr1和expr2的数据类型必须为同类型。

2.还有一个函数coalesce
SELECT COALESCE(NULL, NULL, GETDATE())
coalesce(name,'unknown') as name
由于两个参数都为null,所以返回getdate()函数的值,也就是当前时间。即返回第一个非空的值。由于这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值,

3.行转列
Select
name,
sum(case when item=数学 then score end) as math,
sum(case when item=英语 then score end) as english,
From table
Group by name

4.hive 查找字符串是否存在
regexp_replace(email,"abc|qq|sina","") = email

5.时间函数
yyyy-MM-dd HH:mm:ss
#格式化时间戳为日期格式 1608373982 => 2020-12-19
from_unixtime(data_time,"yyyy-MM-dd")
#日期时间格式转换为日期格式 2020-12-21 15:19:30 => 2020-12-21
from_unixtime(unix_timestamp(add_datetime),"yyyy-MM-dd")
#获取当前日期 格式:2020-12-21
date_add(from_unixtime(unix_timestamp(),"yyyy-MM-dd"),0)

6.查看hive表字段
#显示表字段
DESCRIBE db_name.table_name
#显示建表语句
SHOW CREATE TABLE db_name.table_name

7.insert into 与 insert overwrite 都可以向hive表中插入数据,
但是insert into直接追加到表中数据的尾部,
而insert overwrite会重写数据,既先进行删除,再写入。
如果存在分区的情况,insert overwrite会只重写当前分区数据。

8.动态分区和静态分区
hive.exec.dynamic.partition.mode
打开动态分区后,动态分区的模式,
有 strict和 nonstrict 两个值可选,
strict 要求至少包含一个静态分区列,
nonstrict则无此要求。
静态分区与动态分区的主要区别在于静态分区是手动指定,
而动态分区是通过数据来进行判断。
详细来说,静态分区的列实在编译时期,通过用户传递来决定的;
动态分区只有在SQL执行时才能决定



#hive#
全部评论
感谢分享hive 常用函数与技巧知识点
点赞 回复 分享
发布于 2022-09-28 16:50 河南

相关推荐

1 5 评论
分享
牛客网
牛客企业服务