- 字符串函数
1.1 字符串拼接函数
concat(string A, string B...)
说明:返回输入字符串连接后的结果,支持任意个输入字符串
1.2 有分隔符的字符串拼接
concat_ws(string SEP, string A, string B...)
说明:返回输入字符串连接后的结果,SEP 表示各个字符串间的分隔符
1.3 数组转换成字符串
concat_ws(string SEP, array<string>)
说明:返回将数组链接成字符串后的结果,SEP 表示各个字符串间的分隔符
1.4 小数位格式化成字符串
format_number(number x, int d)
将数值 x 的小数位格式化成 d 位,四舍五入
1.5 字符串截取
substr(string A, int start, int len),substring(string A, intstart, int len)
说明:返回字符串 A 从 start 位置开始,长度为 len 的字符串 len参数不填即为结尾
1.6 字符串查找1
instr(string str, string substr)
说明:返回字符串 substr 在 str 中首次出现的位置
1.7 字符串查找2
locate(string substr, string str[, int pos])
说明:返回字符串 substr 从pos位置开始在 str 中首次出现的位置
1.8 字符串长度
length(string A)
说明:返回字符串的长度
1.9 字符串格式化
printf(String format, Obj... args)
说明:将指定对象用 format 格式进行格式化
1.10 字符串转换成map
str_to_map(text[, delimiter1, delimiter2])
1.11 字符串转大写
upper(string A) ucase(string A)
1.12 字符串转小写
lower(string A) lcase(string A)
1.13 前后去空格
trim(string A)
1.14 左侧去空格
ltrim(string A)
1.15 右侧去空格
rtrim(string A)
1.16 json 解析函数
get_json_object(string json_string, string path)
说明:通过解析json字符串 获取某个path的值
1.17 左补足函数
lpad(string str, int len, string pad)
rpad(string str, int len, string pad)
说明:将 str 进行用pad 进行左/右补足到 len 位
1.18 分割函数
split(string str, string pat)
说明:按照 pat 字符串分割str,会返回分割后的字符串数组
1.19 集合查找函数
find_in_set(string str, string strList)
说明:返回 str 在 strlist第一次出现的位置,strlist 是用逗号分割的字符串。如果没有找到该 str 字符,则返回 0
1.20 分词函数
sentences(string str, string lang, string locale)
1.21 分词后统计一起出现频次最高的 TOP-K
ngrams(array<array<string>>, int N, intK, int pf)
返回值: array<struct<string,double>>
说明:与 sentences()函数一起使用,分词后,统计分词结果中一起出现频次最高的TOP-K 结果
举例:
hive> SELECT ngrams(sentences('hello word!hellohive,hi hive,hello hive'),2,2) FROM test;
[{"ngram":["hello","hive"],"estfrequency":2.0},{"ngram":["hive","hello"],"estfrequency":1.0}]
该查询中,统计的是两个词在一起出现频次最高的 TOP-2
结果中,hello 与 hive 同时出现 2 次
1.22 分词后统计与指定单词一起出现频次最高的 TOP-K
context_ngrams(array<array<string>>,array<string>, int K, int pf)
返回值: array<struct<string,double>>
说明:与 sentences()函数一起使用,分词后,统计分词结果中与数组中指定的单词一起出现(包括顺序)频次最高的 TOP-K 结果
举例:
hive>SELECT context_ngrams(sentences('hello word!hello hive,hi hive,hello hive'),array('hello',null),3) FROM test;
[{"ngram":["hive"],"estfrequency":2.0},{"ngram":["word"],"estfrequency":1.0}]
该查询中,统计的是与’hello’一起出现,并且在 hello 后面的频次最高的TOP-3
结果中,hello 与 hive 同时出现 2 次,hello 与 word 同时出现 1 次。
1.23 字符串转数字
cast('00321' as bigint)
1.24 字符串反转函数
reverse(string str)
- 常用时间函数
2.1 时间转换固定格式字符串
from_unixtime(unix_timestamp(),’yyyy-MM-dd HH:mm:ss’)
当前时间转换为‘2019-01-01 11:11:11’
2.2 获取当前UNIX时间戳函数
unix_timestamp() 返回bigint
2.3 日期转UNIX时间戳函数
unix_timestamp(string date) 返回bigint
2.4 日期函数UNIX时间戳转日期函数
from_unixtime(bigint unixtime[, string format])
说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
2.5 日期时间转日期函数
to_date(string timestamp)
2.6 年、月、日、时、分、秒获取
year(string date)
month(string date)
day(string date)
hour(string date)
minute(string date)
second(string date)
2.7 日期转周函数
weekofyear (string date)
2.8 日期比较函数(天数差)
datediff(string enddate, string startdate)
2.9 日期增加函数
date_add(string startdate, int days)
- 类型转换函数
3.1 常见数据类型是否会隐式转换 - 3.2 cast(column_name AS TYPE) 转换某一列数据类型为Type
- 条件判断函数
4.1 IF判断
IF( Test Condition, True Value, False Value )
4.2 CASE_WHEN选择
CASE [ expression ]
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionn THEN resultn
ELSE result
END
4.3 COALESCE函数主要用来进行空值处理
COALESCE ( expression,value1,value2……,valuen)
注:逐个判断是否为空 返回非空值
- 行专列、列转行
### 行专列
select col1,col2,concat_ws(',',collect_set(col3))
from tmp_jiangzl_test
group by col1,col2;
### 列转行
select col1, col2, col5
from tmp_jiangzl_test a
lateral view explode(split(col3,',')) b AS col5