Hive查询函数 (二)

1、汇总统计函数

count() : 个数统计函数
collect_set :集合去重数, 语法: collect_set (col), 将 col 字段进行去重,合并成一个数组。
collect_list :集合不去重函数

2、表格生成函数
explode:数组拆分成多行,语法: explode(ARRAY),返回值: 多行
说明: 将数组中的元素拆分成多行显示

3、 explode(Map):将 Map格式数据 拆分成多行
返回值: 多行
说明: 将 Map 中的元素拆分成多行显示

hive> select explode(map('k1','v1','k2','v2')) from lxw1234;
k2 v2
k1 v1

4、集合操作函数
map 类型大小:size,语法: size(Map<K.V>),返回值: int
说明: 返回 map 类型的 size

5、array 类型大小:size,语法: size(Array),返回值: int
说明: 返回 array 类型的 size

判断元素数组是否包含元素:array_contains,语法: array_contains(Array, value),返回值: boolean

> select array_contains(array(1,2,3,4,5),3) from lxw1234; 
true

6、获取 map 中所有 value 集合,语法: map_values(Map<K.V>),返回值: array
说明: 返回 Map<K.V>中所有 value 的集合

> select map_values(map('k1','v1','k2','v2')) from lxw1234; 
["v2","v1"]

获取map中所有key集合,语法: map_keys(Map<K.V>),返回值: array
说明: 返回 Map<K.V>中所有 key 的集合

> select map_keys(map('k1','v1','k2','v2')) from lxw1234; 
["k2","k1"]

数组排序语法: sort_array(Array),返回值: array,说明: 对 Array进行升序排序

> select sort_array(array(5,7,3,6,9)) from lxw1234; 
[3,5,6,7,9]

7、日期函数
日期时间转日期函数: to_date ,语法: to_date(string timestamp),返回值: string,说明: 返回日期时间字段中的日期部分。

> select to_date('2011-12-08 10:03:01') from lxw1234;
2011-12-08

日期比较函数: datediff语法: datediff(string enddate, string startdate) ,返回值: int,说明: 返回结束日期减去开始日期的天数。

hive> select datediff('2012-12-08','2012-05-09') from lxw1234; 
213

日期增加函数: date_add语法: date_add(string startdate, int days),返回值: string,说明: 返回开始日期 startdate 增加 days 天后的日期。

hive> select date_add('2012-12-08',10) from lxw1234; 
2012-12-18

日期减少函数: date_sub语法: date_sub (string startdate, int days),返回值: string,说明: 返回开始日期 startdate 减少 days 天后的日期。

> select date_sub('2012-12-08',10) from lxw1234; 
2012-11-28

8、条件函数
条件判断函数:CASE 语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
返回值: T
说明:如果 a 等于 b,那么返回 c;如果 a 等于 d,那么返回 e;否则返回 f

> Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from lxw1234;
mary

9、字符串函数URL

解析函数:parse_url 语法: parse_url(string urlString, string partToExtract [, string keyToExtract])
返回值: string
说明:返回 URL 中指定的部分。partToExtract 的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

hive> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') from lxw1234;
facebook.com

hive> select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') from lxw1234;
v1 

json 解析函数:get_json_object
语法: get_json_object(string json_string, string path),返回值: string说明:解析 json 的字符串 json_string,返回 path 指定的内容。如果输入的 json 字符串无 效,那么返回 NULL。举例:

hive> select get_json_object('{"store":
> {"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
> "bicycle":{"price":19.95,"color":"red"}
> },
> "email":"amy@only_for_json_udf_test.net",
> "owner":"amy"
>}
> ','$.owner') from lxw1234; 
amy

字符串函数
str_to_map() 字符型转换为map格式
concat_ws 指定分隔符将多个字符串连接起来,实现列转行

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值