欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Hive常用函数

时间:2023-06-21

假设现在有一个订单表(order),里面有3个字段:uid、item_id(商品id)、price、ts(时间戳)

uiditem_idpricetsu1i1101644503781u2i2151644504880u3i3201644503984时间函数

将时间戳转化为可阅读的字符串

select from_unixtime(ts, 'yyyyMMdd HH:mm:ss') from order--结果:--20220210 22:36:21--20220210 22:54:40--20220210 22:39:44

将日期转化为时间戳

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

计算日期差值,如过滤出距离2022.02.09 7天的订单(需要注意日期的格式)

select * from order where datediff('2022-02-09', from_unixtime(ts, 'yyyy-MM-dd')) <= 7

集合函数

计算集合大小

select size(array(1,2,3,4)); --结果: 4  

获取map中的key

select map_keys(map('a',1,'b',2,'c',3)); --结果: ["a","b","c"]

获取map中的取值

select map_keys(map('a',1,'b',2,'c',2)); --结果: [1,2,2]

判断数组中是否包含某个值

select array_contains(array(1,2,3,4), 4); --结果: true

数组排序

select sort_array(array(3,2,1,4)); --结果: [1,2,3,4]

拼接为字符串

select concat_ws('_', array('a', 'b', 'c')); --a_b_c

字符串函数

json解析

select get_json_object('{"name":"xyz"}', '$.name'); --xyz

大小写转化

select lower('xYz'); --xyzselect upper('xYz'); --XYZ

条件函数

if条件

select    if(id is null, 0, id) as idfrom    (        select            1 as id        union all        select            null as id    )

case when

select    case        when item_id = 'i1' then 1        else 0    end as item_strfrom    order

填充缺失值(nvl)

select    nvl(id, 0) as idfrom    (        select            1 as id        union all        select            null as id    )

取第一个不为null的值,否则为null

select coalesce(1, null); -- 1select coalesce(null, 2); -- 2select coalesce(null, null, 3); -- 3

杂项

数据类型转化

select cast('123' as int);

单行转多行

select explode(array(1,2,3));--结果:--1--2--3


Hive常用函数 | 代码大全http://codelibrary.tech/2022/02/09/hive/ 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。