美文网首页
hive函数集合

hive函数集合

作者: join_a922 | 来源:发表于2019-12-30 11:50 被阅读0次

1:CAST (expression AS data_type)

CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。可以转换的类型是有限制的。

这个类型可以是以下值其中的一个:二进制,同带binary前缀的效果 : BINARY    

字符型,可带参数 : CHAR()     

日期 : DATE     

时间: TIME     

日期时间型 : DATETIME     

浮点数 : DECIMAL      

整数 : SIGNED     

无符号整数 : UNSIGNED

2:binary

Mysql默认查询是不分大小写的,可以在SQL语句中加入 binary来区分大小写;BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写

例如 :select * from sys_user where binary loginno = `qqq`

3:explode

explode就是将sql或者hive一行中复杂的array或者map结构拆分成多行。lateral view(侧视图)的意义是配合explode(或者其他的UDTF),一个语句生成把单行数据拆解成多行后的数据结果集。形成的虚拟表tb1 相当于再和原表联结 形成了新表interests1直接使用explode 一次只能生成一个字段 要生成多列就是使用lateral view(侧视图)

drop table explode_lateral_view;

create table explode_lateral_view

(`area` string,

`goods_id` string,

`sale_info` string)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '|'

STORED AS textfile;

导入数据:

INSERT INTO management_cc.explode_lateral_view VALUES('a:shandong,b:beijing,c:hebei','1,2,3,4,5,6,7,8,9','{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]');

表内数据如下

select explode(split(goods_id,',')) as goods_id from explode_lateral_view;

select explode(split(area,',')) as area from explode_lateral_view;

select explode(split(regexp_replace(regexp_replace(sale_info,'\\[\\{',''),'}]',''),'},\\{')) as  sale_info from explode_lateral_view;

然后我们想用get_json_object来获取key为monthSales的数据:

select get_json_object(explode(split(regexp_replace(regexp_replace(sale_info,'\\[\\{',''),'}]',''),'},\\{')),'$.monthSales') as  sale_info from explode_lateral_view;

然后挂了FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions

UDTF explode不能写在别的函数内

如果你这么写,想查两个字段,select explode(split(area,',')) as area,good_id from explode_lateral_view;

会报错FAILED: SemanticException 1:40 Only a single expression in the SELECT clause is supported with UDTF's. Error encountered near token 'good_id'

使用UDTF的时候,只支持一个字段,这时候就需要LATERAL VIEW出场了

select goods_id2,sale_info from explode_lateral_view LATERAL VIEW explode(split(goods_id,','))goods as goods_id2;

select goods_id2,sale_info,area2

from explode_lateral_view

LATERAL VIEW explode(split(goods_id,','))goods as goods_id2

LATERAL VIEW explode(split(area,','))area as area2;

select

get_json_object(concat('{',sale_info_r,'}'),'$.source') as source,

get_json_object(concat('{',sale_info_r,'}'),'$.monthSales') as monthSales,

get_json_object(concat('{',sale_info_r,'}'),'$.userCount') as userCount,

get_json_object(concat('{',sale_info_r,'}'),'$.score') as score

from explode_lateral_view

LATERAL VIEW explode(split(

regexp_replace(

regexp_replace(sale_info,'\\{',''),

'}]',

''

),'},'))sale_info as sale_info_r;

相关文章

  • hive函数集合

    1:CAST (expression AS data_type) CAST函数用于将某种数据类型的表达式显式转换为...

  • hive集合类型

    hive集合类型集合类型主要包括:array,map,struct等,hive的特性支持集合类型,这特性是关系型数...

  • 大数据开发之Hive篇6-Hive函数详解

    备注:Hive 版本 2.1.1 一.Hive函数概述 1.1 Hive函数分类 函数/UDF输入一行记录,输出一...

  • hive_集合函数和表生成函数

    集合函数 表生成函数

  • Hive 自定义函数

    系统内置函数 查看系统内置函数hive> show functions;显示内置函数用法hive> desc fu...

  • Hive函数

    hive中的函数从大体上可以分为两类:hive内置函数和用户自定义函数 hive内置函数又可以根据输入输出细分为以...

  • Hive SQL练习

    查询全体学生的学号与姓名 查询选修了课程的学生姓名 ----hive的group by 和集合函数 查询学生的总人...

  • Hive自定义UDF UDAF UDTF

    hive允许用户使用自定义函数解决hive 自带函数无法处理的逻辑。hive自定义函数只在当前线程内临时有效,可以...

  • HIVE UDTF 自定义函数

    HIVE UDTF 自定义函数 关键词:HIVE UDTF 开发 实例Hive运行用户自定义函数对数据信息处理,...

  • Hive sql常见操作

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

网友评论

      本文标题:hive函数集合

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