Hive中高级函数

举例解释如下函数:

from_unixtime(unix_timestamp(rpad(regexp_replace(fetch_time, '[^0-9]', ''), 14, '0'), 'yyyyMMddHHmmss'), 'yyyy-MM-dd HH:mm:ss') 
as dl_fetch_time

分析过程:
解析一:
From_unixtime(Unix_timestamp(字段),‘yyyyMMdd’)
解析二:
rpad()
解析三:
regexp_replace()

一、 hive库中:

  1. 分区用yyyyMMdd
  2. 数据准确时间都是存成yyyy-MM-dd HH:mm:ss
    所以需要 From_unixtime(Unix_timestamp(字段),‘yyyyMMdd’)来转换

二、Rpad()函数
rpad函数将右边的字符串填充一些特定的字符。(右填充)
1.语法格式如下:
rpad(string,n,[pad_string])
参数说明:
string:字符串或者列名。
n: 字符的总长度,如果这个值比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符; (例子中n为14)
pad_string:要填充的字符串,默认为添加空格。 (例子中pad_string为0)
补充如下:
(1)lower:转成小写
select lower(‘Hive’); --hive
(2)upper:转成大写
select lower(‘Hive’); --HIVE
(3)length:长度
select length(‘Hive’); --4
(4)concat:拼接字符串
select concat(‘hello’,‘Hive’); --helloHive
(5)substr:求子串
select substr(‘hive’,2); --ive
select substr(‘hive’,2,1); --i
(6)trim:去掉前后的空格
select trim(’ hive ‘); -hive
(7)lpad:左填充
对hive填充到10位,补位用#
select lpad(‘hive’,10,’#’); --######hive
(8)rpad:右填充
select rpad(‘hive’,10,’#’); --hive######

三、regexp_replace()函数
用于:替换特殊字符
用法:
regexp_replace(1,2,3,4,5,6)
语法说明:1:字段 2:替换的字段 3:替换成什么
4:起始位置(默认从1开始) 5:替换的次数(0是无限次) 6:不区分大小写
例子中:regexp_replace(fetch_time, ‘[^0-9]’, ‘’)
判断字段fetch_time的值是不是在0~9范围内,如果不是换成空字符串。

补充来自:https://blog.csdn.net/yyywyr/article/details/51475410

你可能感兴趣的:(Hive)