1. 字符串函数
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)
  1. 常用时间函数
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)
  1. 类型转换函数
    3.1 常见数据类型是否会隐式转换
  2. hive substring 字符 hive substring函数_hive

  3. 3.2 cast(column_name AS TYPE) 转换某一列数据类型为Type
  4. 条件判断函数
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)
 		注:逐个判断是否为空 返回非空值
  1. 行专列、列转行
### 行专列
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