hive的基础函数>>日期函数,字符串函数,杂项函数

查看函数的功能

复制代码
DESCRIBE FUNCTION 函数名;

返回: 函数名和函数使用方法

复制代码
DESCRIBE FUNCTION EXTENDED 函数名;

返回: 函数名, 函数使用方法 和示例

日期函数

默认日期格式

yyyy-MM-dd hh24:mm:ss

  • y:表示年份

  • M:表示月份,注意是大写的

  • d:表示天

  • h:表示小时

  • m:表示分钟,注意是小写的

  • s:表示秒钟

获取系统当前时间
复制代码
select current_date

current_date 表示hive系统当前日期, 不含时间

current_timestamp() 表示系统当前时间, 包括**日期和时间,**属于时间戳, 即秒后面包含小数点

unix_timestamp() 表示unix风格的时间戳, 是一串数字; 数字表示从计算机元年(1970-01-01),到当前时间所进过的秒数

日期格式转换

将unix风格的时间戳转换成 日期时间

from_unixtime() 函数, 默认按照 Hive中的默认日期格式进行转换

复制代码
select from_unixtime(unix_timestamp());

将字符串转换成 unix时间戳

unix_timestamp(str,format)

示例

复制代码
select unix_timestamp('2014-02-02','yyyy-MM-dd');

select unix_timestamp('20140202','yyyyMMdd');

字符串转换成标准的日期格式

复制代码
select from_unixtime(unix_timestamp('20140202','yyyyMMdd'));

日期的计算

天数差 datediff(date1,date2)

复制代码
select datediff('2014-02-02','2013-10-11');   -- 114

增加天数 date_add(date, num)

减少天数 date_sub(date, num)

增加/减少月份 add_months(date, num)

num > 0,增加月份; num < 0 减少月份

复制代码
select add_months('2014-02-02',2);

两个日期之间的月份差 months_between(date1, date2)

获取日期中的年、月、日, Hive中没有 to_char 函数,

-- 需要使用 year(), month(), day(), hour(), minute(), second() 获取

复制代码
select year('2014-02-02');

-- 也可以使用截断函数进行内容的截取

复制代码
select substring('2014-02-02',1,4);

字符串函数

字符串连接函数

concat(str1, str2, ... strN)

复制代码
select concat("angela","baby");

Oracle和Hive中的CONCAT函数的区别

带分隔符字符串连接函数:concat_ws(separator, [string | array(string)]+)

concat_ws 即 Concatenate With Separator

-- 可以将多个字符串拼接成一个整体, 内容之间使用指定的符号进行分隔

复制代码
select concat_ws(',', '111', '222', '333');

-- 数组元素拼接示例

复制代码
SELECT concat_ws(',', array('111', '222', '333'));

select concat_ws('-', array('1','2','3','4'));

重复字符串函数:repeat(str, n) 重复str字符串n次

用于生成重复的字符串

复制代码
select repeat("angela",2);

分割字符串函数: split(str, regex)

复制代码
select split('apache-hive', '-');

返回结果: 数组 ["apache","hive"]

字符串长度函数 length(str)

复制代码
select length("angelababy");

字符串反转函数:reverse

复制代码
select reverse("angelababy");

返回结果 "ybabylanega"

字符串截取函数:substr(str, pos[, len]) 或者 substring(str, pos[, len])

复制代码
select substr("angelababy",-2);

pos为负数时, 从右边开始截取, 返回 "by"

复制代码
SELECT substr("angelababy", -2, 3);   

从右边开始的第二个字符是"b" ,截取3个字符是"by", 因此返回"by"

字符串转大写函数:upper,ucase

复制代码
select upper("angelababy");
select ucase("angelababy");

字符串转小写函数:lower,lcase

复制代码
select lower("ANGELABABY");
select lcase("ANGELABABY");

去空格函数:trim 去除左右两边的空格

复制代码
select trim(" angelababy ");

左边去空格函数:ltrim

右边去空格函数:rtrim

正则表达式替换函数:regexp_replace(str, regexp, rep)

三个参数:str(要进行替换的字符串),regexp(正则表达式),和rep(用于替换匹配到的字符串)。它返回一个新的字符串,其中所有匹配正则表达式的子串都被替换为指定的字符串

复制代码
SELECT regexp_replace('100-200', '(\\d+)', 'num');

正则表达式 (\\d+) 匹配一个或多个数字。函数会将这些匹配的部分替换为字符串 'num'

返回 "num-num"

正则表达式解析函数:regexp_extract(str, regexp[, idx]) 提取正则匹配到的指定组内容

复制代码
select regexp_extract('100-200', '(\\d+)-(\\d+)', 2);

URL解析函数:parse_url 注意要想一次解析出多个 可以使用parse_url_tuple这个UDTF函数

复制代码
select parse_url('http://www.itcast.cn/path/p1.php?query=1', 'HOST');

想要提取的是主机名(即域名)。因此,这个查询将返回 URL http://www.itcast.cn/path/p1.php?query=1 的主机名部分,即:

www.itcast.cn

json解析函数:get_json_object

空格字符串函数:space(n) 返回指定个数空格

复制代码
select space(4);

首字符ascii函数:ascii

复制代码
select ascii("angela");

左补足函数:lpad

l 即left

复制代码
select lpad('hi', 5, '??');

返回"???hi"

复制代码
select lpad('hi', 1, '??');

由于指定的长度为1,小于字符串 'hi' 的实际长度2,因此在Hive中,这个函数会返回原始字符串本身,即 'hi'

--右补足函数:rpad

r即right

复制代码
select rpad('hi', 5, '??');

返回 "hi???"

集合查找函数: find_in_set(str,str_array)

复制代码
select find_in_set('a','abc,b,ab,c,def');

杂项函数

取哈希值函数:hash

复制代码
select hash("allen");

这将返回字符串 "allen" 的哈希值。具体返回的值取决于Hive中使用的哈希算法。

SHA-1加密: sha1(string/binary)

SHA-1(Secure Hash Algorithm 1)是一种加密哈希函数,它可以产生一个160位(20字节)的哈希值,通常用一个40位的十六进制字符串表示。

复制代码
select sha1("allen");

SHA-2(Secure Hash Algorithm 2)是一系列加密哈希函数,它包括多个不同的变体,如 SHA-224、SHA-256、SHA-384 和 SHA-512,它们分别产生不同长度的哈希值。

crc32

是一种用于生成数据校验和(checksum)的哈希函数。CRC32(循环冗余校验32位)是一种广泛使用的哈希算法,用于检测数据传输或存储过程中的错误。它生成一个32位(4字节)的校验值,通常用于文件完整性检查和网络通信中。

"Cyclic"(循环)指的是在进行CRC计算时,数据被视为一个大的多项式,而生成多项式(polynomial)是这个多项式的一个因子。计算过程中,这个多项式会循环地与数据进行除法运算。

"Redundancy"(冗余)指的是在数据中添加额外的信息,这些信息用于校验数据的完整性。在CRC中,这些额外的信息就是CRC校验值,它被附加在数据的末尾。

"Check"(校验)指的是使用CRC值来验证数据的完整性。如果在数据传输或存储过程中发生错误,重新计算的CRC值将与原始CRC值不匹配,从而可以检测到错误。

MD5加密: md5(string/binary)

复制代码
select md5("allen");

会将任意长度的输入数据转换为一个固定长度(128位,通常表示为32个十六进制字符)的哈希值

"MD"代表"Message-Digest",即"消息摘要"

取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数

复制代码
select rand();
相关推荐
不剪发的Tony老师14 小时前
Apache Hive:基于Hadoop的分布式数据仓库
数据仓库·hadoop·分布式
RestCloud21 小时前
ETL:数据清洗、规范化和聚合的重要性
数据仓库·etl·数据清洗·api接口·数据集成·集成工具
杰瑞学AI1 天前
什么是流式处理,什么是批处理,以及这两者有什么关联和区别
大数据·数据库·hive·hadoop·flink·spark·kafka
codebat_raymond1 天前
Delta Lake 解析:架构、数据处理流程与最佳实践
数据仓库·数据库架构
镜舟科技2 天前
StarRocks 主键(Primary Key)深度解析
数据仓库·湖仓一体·分析型数据库·存算分离·starrocks 主键·主键模型·实时数据分析
小技工丨2 天前
Hive高频SQL及典型应用场景总结
大数据·数据仓库·hive·hadoop·sql
努力的搬砖人.2 天前
Hadoop相关面试题
java·hadoop·面试
大白_dev2 天前
大数据环境搭建
hadoop
Hadoop_Liang3 天前
openEuler24.03 LTS下安装Hive3
linux·hive·hadoop·mysql·安装·openeuler