hive 工作常用函数 整理未完。。。

  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)
    
  2. 常用时间函数

    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. 类型转换函数
    3.1 常见数据类型是否会隐式转换
    在这里插入图片描述
    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)
     		注:逐个判断是否为空 返回非空值
    
  5. 行专列、列转行

### 行专列
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

猜你喜欢

转载自blog.csdn.net/q18729096963/article/details/105770737
今日推荐