持续更新
1.NVL函数
NVL(expr1, expr2):
空值转换函数;
如果expr1为NULL,返回值为 expr2,否则返回expr1。
适用于数字型、字符型和日期型,但是 expr1和expr2的数据类型必须为同类型。
2.还有一个函数coalesce
SELECT COALESCE(NULL, NULL, GETDATE())
coalesce(s3.region_en,'unknown') as card_country
由于两个参数都为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
#复制表结构
CREATE TABLE IF NOT EXISTS DW.TABLE_NEW LIKE DW.TABLE_OLD
7.insert into 与 insert overwrite 都可以向hive表中插入数据,
但是insert into直接追加到表中数据的尾部,
而insert overwrite会重写数据,既先进行删除,再写入。
如果存在分区的情况,insert overwrite会只重写当前分区数据。
8.hive.exec.dynamic.partition.mode
打开动态分区后,动态分区的模式,
有 strict和 nonstrict 两个值可选,
strict 要求至少包含一个静态分区列,
nonstrict则无此要求。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。