美文网首页
Hive函数笔记--常用函数解析

Hive函数笔记--常用函数解析

作者: 风筝flying | 来源:发表于2018-08-31 09:28 被阅读146次

前言

本文不定期更新,记录工作中接触使用过的Hive函数

常用函数

  • get_json_object(string json_string,string path)
    该函数的第一个参数是json对象变量,第二个参数使用$表示json变量标识,然后用.或[]读取对象或数组
select get_json_object(pricecount,'$.buyoutRoomRequest') new_id,pricecount
  from table_sample a
 where d='2018-08-31' limit 100
  • json_tuple(string json_string,string k1,string k2...)
    该函数的第一个参数是json对象变量,之后的参数是不定长参数,是一组键k1,k2...,返回值是元组,该方法比get_json_object高效,因为可以在一次调用中输入多个键值
select m.*,n.pricecount
  from (select 
              from table_sample a 
            where d='2018-08-31' limit 100)n
  lateral view json_tuple(pricecount,'paymentType','complete') m as f1,f2
  • split(str,regex)
    Splits str arround occourances that match regex.该函数第一个参数是字符串,第二个参数是设定的分隔符,通过第二个参数把第一个参数做拆分,返回一个数组
select split('123,3455,2568',',')
select split('sfas:sdfs:sf',':')
  • explode()
    explode takes an array (or a map) as an input and outputs the elements of the array (map) as separate rows;该函数接收一个参数,参数类型需是array或者map类型,该函数的输出是把输入参数的每个元素拆成独立的一行记录。
select explode(split('123,3455,2568',','))
  • lateral view()
    lateral view udtf(expression) tableAlias as columnAlias (',' columnAlias);Lateral View 一般与用户自定义表生成函数(如explode())结合使用。UDTF为每个输入行生成零个或多个输出行,Lateral view首先将UDTF应用于基表的每一行,然后将结果输出行连接到输入行,已形成具有提供的表别名的虚拟表。
select j.nf,p.* from (
select m.*,n.pricecount
  from (select * from ods_htl_htlinfogoverndb.buyout_appraise a where d = '${zdt.format("yyyy-MM-dd")}' limit 100)n
 lateral view json_tuple(pricecount,'paymentType','complete') m as f1,f2 )p
 lateral view explode(split(regexp_replace(p.f1,'\\[|\\]',''),',')) j as nf
  • from_unixtime(int/bigint timestamp,string format)

该函数第一个参数接收int/bigint类型的10位时间戳变量,带毫秒的13位时间戳需要做截取,第二个参数是返回的日期的格式,可以不设置,默认是格式:yyyy-MM-dd HH:mm:ss

select from_unixtime(1000000000);
select from_unixtime(1000000000,'yyyy-MM-dd HH');
  • unix_timestamp(string date,string format)
    该函数有两个参数,但两个参数都是可选参数,具体区别如下:
    unix_timestamp():不带参数时返回当前时间戳,current_timestamp()有同样功能
    unix_timestamp(string date):只带第一个参数时,返回date对应的时间戳,date的格式必须为yyyy-MM-dd HH:mm:ss
    unix_timestamp(string date,string format):返回date对应的时间戳,date格式由format指定
select unix_timestamp();
select unix_timestamp('2018-09-05 10:24:36');
select unix_timestamp('2018-09-05 10','yyyy-MM-dd HH');
  • str_to_map(String text,String delimiter1,String delimiter2)
    使用两个分隔符将文本拆分成键值对。Delimiter1将文本分成k-v对,Delimiter2分割每个k-v对。对于delimiter1的默认值是',',delimiter2的默认值是'='.
select str_to_map('abc:11&bcd:22', '&', ':')
  • collect_set()
    该函数只接受基本的数据类型,主要作用是将某字段的值进行去重汇总,返回值是array类型字段
with t as (
select 1 id,123 value
  union all
select 1 id,234 value
  union all
select 2 id,124 value
)
select t.id,collect_set(t.value)
  from t
 group by t.id
  • collect_list()
    该函数功能等同于collect_set,唯一的区别在于collect_set会去除重复元素,collect_list不去除重复元素,示例sql如下
with t as (
select 1 id,123 value
  union all
select 1 id,234 value
  union all
select 2 id,124 value
  union all
select 2 id,124 value
)
select t.id,collect_set(t.value),collect_list(t.value)
  from t
 group by t.id
  • concat_ws(seperator,String s1,String s2...)
    该函数通过分割符seperator将字符串拼接起来,通常配合group by和collect_set使用

  • array_contains(Array<T>,value)
    该函数的用来判断Arrary<T>中是否包含元素value,返回值是boolean

select array_contains(array(1,2,3,4,5),3)
true
  • percentile(expr,pc)
    该函数用来计算参数expr的百分位数,expr:字段类型必须是INT,否则报错;pc:百分位数,已数值形式传入

  • percentile_approx(expr,pc,[nb])
    该函数也是用来计算参数expr的百分位数,但数据类型要求没有percentile严格,该函数数值类似类型都可以;pc:百分位数,可以以数组形式传入,因此可以一次性查看多个指定百分位数;[nb]:控制内存消耗的精度,选填

相关文章

  • Hive函数笔记--常用函数解析

    前言 本文不定期更新,记录工作中接触使用过的Hive函数 常用函数 get_json_object(string ...

  • Hive sql常见操作

    基本sql操作 hive表操作 分区操作 Hive内置函数 (1)数学函数 常用的数学函数都有:round、flo...

  • PySpark操作Hive的常用语句函数封装包

    目的:将hive常用的查看函数进行封装。

  • Hive常用函数

    1 常见本地文件: 2 上传到hdfs上: 3 下载到指定目录: 4 创建外部表: 5 加载hdfs文件: 加载本...

  • Hive常用函数

    时间函数 数学函数 round 四舍五入((42.3 =>42)) ceil 向上取整(42.3 =>43) fl...

  • hive 常用函数

    问题 1.分组计算各个月的绩效加上总计cuberollupgroup by + union 2.最优差集((max...

  • hive常用函数

    关系运算 1、等值比较: = 语法:A=B操作类型:所有基本类型描述: 如果表达式A与表达式B相等,则为TRUE;...

  • Hive常用函数

    一、窗口函数 1、窗口函数基础结构 窗口函数 = 分析函数 + over函数分析函数:sum ( )、max ( ...

  • Hive常用函数

    一、关系运算: 1. 等值比较: = 举例:Hive>select 1 from lxw_dual where 1...

  • Hive常用函数

    if函数:格式: if( 判断条件, return true , return false )注意: if函数支...

网友评论

      本文标题:Hive函数笔记--常用函数解析

      本文链接:https://www.haomeiwen.com/subject/tiojwftx.html