一.hive常用字符串函数

1.字符串反转函数reverse(string A)  --返回值类型stringselect reverse('gian') from iteblog;  --'naig'2.带分隔符字符串连接函数concat_ws(string sep,string a,string b,...) --返回值类型string
select concat_ws('.','www','iteblog','com') from iteblog
concat(string sep, array<string>)     --参数为字符串数组
concat(object1,object2,...)         --默认连接符是''3.正则表达式替换函数regexp_replace(string a,string b,string c) --返回值类型string
将字符串a中符合Java正则表达式b的部分替换为c4.正则表达式解析函数regexp_extract(string subject,string pattern,int index)将字符串subject按照pattern正则表达式规则拆分,返回index指定的字符(0,显示与之匹配的整个字符串,1显示第一个括号里面的字段,...)
select
regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',0),  -- x=18abc
regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([a-z]+)([0-9]+)',0),  -- x=a3
regexp_extract('https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive','id=([0-9]+)',0),    -- id=522228774076
regexp_extract('https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive','id=([0-9]+)',1)   -- 522228774076
from test.dual;5.url解析函数parse_url(string urlString, string partToExtract[,stringkeyToExtract])     --返回值类型string,返回url中指定的部分
--partToExtract的有效值为:HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE,USERINFO
hive>select parse_url('http://iteblog.com?weixin=iteblog_hadoop','HOST') from iteblog;
iteblog.com
hive>select parse_url('http://iteblog.com?weixin=iteblog_hadoop','QUERY','weixin') from iteblog;
iteblog_hadoop6.json解析函数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 iteblog;
>amy7.首字符ascii(string str)  --返回值int,返回字符串str第一个字符ascii码8.左补足函数lpad(string str, int len, string pad)   --返回值类型string,将str用pad进行左补足到len位
hive>select lpad('abc',10,'td') from iteblog;
tdtdtdtabc9.集合查找函数:find_in_set(string str, string strList) --返回值类型int,返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串.如果没有找该str字符返回0
hive>select find_in_set('ab','ef,ab,de') from iteblog;
2
hive>select find_in_set('at','ef,ab,de') from iteblog;
09.encode(string src, string charset)  --用指定的字符集将第一个参数编码成binary,如果任一参数为null,则返回null
--可选字符集'US_ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'10.format_number(number x, int d)   --将数字x格式化为'#,###,###.##',四舍五入为d位小数位,将结果作为字符串返回.如果d=0,结果不包含小数点或小数部分11.locate(string substr, string str[, int pos]) --返回substr在str的位置pos后第一次出现位置,返回值类型int12.base64(binary bin)    --将二进制参数转换为base64字符集13.unbase64(string str)  --将base64字符串转换为二进制14.translate(string input, string form, string to)  --将input中出现在from中的字符替换为to中的字符串,如果任何参数为null,结果为null15.str_to_map(text  [,delimiter1,delimiter2])   --使用两个分隔符将文本分割为键值对.第一个分隔符将文本分割为K-V 对,第二个分隔符分隔每个K-V 对.默认第一个分隔符为',',第二个分隔符为'='                --返回值类型为map<string,string>
hive>select str_to_map('aaa:11&bbb:22', '&', ':') from tmp.tmp_jzl_test11;
{"bbb":"22","aaa":"11"}16.split(string str, string pat)   --用pat分隔字符串str,pat为正则表达式,返回值类型为array

二.hive的行列转换

1.行转列--多行转多列

--collect_set:去重/变数组
select id,collect_set(value) as a from temp.lateral_test group by id

数组前加序号访问对应元素,从0开始(子查询表的别名必须要有)
select id,a[0] a0,a[1] a1
from (select id,collect_set(value) as a from temp.lateral_test group by id) b  --或者Pivot using Hivemall to_map function
SELECT uid, kv['c1'] AS c1, kv['c2'] AS c2, kv['c3'] AS c3 FROM
(SELECT uid, to_map(key,value) kv FROM vtable GROUP BY uid) t

2.explode可以将单行数组类型数据转化为列形式

select explode(split(concat_ws(',','1','2','3','4'),','))
col
1
2
3
4

3.利用lateral view explode实现列转行

select t.id, k.hh from
(select id,collect_set(value) as a from temp.lateral_test group by id) t
lateral view explode(a) k as hhSELECT t1.uid, t2.key, t2.value FROM htable t1
LATERAL VIEW explode (map('c1', c1, 'c2', c2, 'c3', c3)) t2 as key, valueuid key value
101 c1 11
101 c2 12
101 c3 13
102 c1 21
102 c2 22
102 c3 23

SQL ON Hadoop-Hive(六)-字符串函数+行列转换相关推荐

  1. HIVE自定义UDF函数-经纬度转换成省市地址

    目录 1.需求背景 2.解决方案 3.代码pom引用 4.代码集成UDF 5.编译jar包 6.使用说明 7.将jar包放到hdfs 8.创建持久化function 9.测试 10.结语 1.需求背景 ...

  2. 【Hive】字符串函数

    Hive版本: hive-1.1.0-cdh5.14.2 1. 首字符转ascii码函数:ascii 语法:ascii(string str) 返回值:int 描述:返回字符串str首字符的ascii ...

  3. 《SQL经典实例》六——字符串处理

    6.1 遍历字符串 问题 你想遍历一个字符串,并以一个字符一行的形式把它们显示出来,但 SQL 没有 Loop 循环功能.例如,你想把 EMP 表的 ENAME 等于 KING 的字符串拆开来显示为 ...

  4. sql 拆解函数_在SQL Server数据库中拆分字符串函数

    以下为引用的内容: CREATE FUNCTION uf_StrSplit '1.1.2.50','.' (@origStr varchar(7000), --待拆分的字符串 @markStr var ...

  5. mysql中ifnull和hive中if函数的转换

    先说说,在mysql中,ifnull函数的用法,其表达式如下: IFNULL(expr1,expr2) 如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2.I ...

  6. 在SQL Server 2005中实现表的行列转换()

    PIVOT和UNPIVOT关系运算符是SQL Server 2005提供的新增功能,因此,对升级到SQL Server 2005的数据库使用PIVOT和UNPIVOT时,数据库的兼容级别必须设置为90 ...

  7. Hive 内置函数及自定义函数

    1.内置函数 使用如下命令查看当前hive版本支持的所有内置函数 show functions; 部分截图: 可以使用如下命令查看某个函数的使用方法及作用,比如查看 upper函数 desc func ...

  8. 我的MYSQL学习心得(六) 函数

    2019独角兽企业重金招聘Python工程师标准>>> 这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 ...

  9. SQL Server 2005之PIVOT/UNPIVOT行列转换

    SQL Server 2005之PIVOT/UNPIVOT行列转换 作者: NinGoo(http://ningoo.itpub.net) 发表于: 2007.04.18 11:49 分类: SQL ...

最新文章

  1. 想快速入门NLP?我们测评了15门最火课程,帮你找到最适合的
  2. oracle Ratio_to_report的用法
  3. python导入标准库对象的语句_Python项目中如何优雅的import
  4. C# ASP 面试题 2017
  5. 个人信息保护呼吁“基本法”
  6. 南京航空航天大学2020数据结构课设
  7. html中如何把选择文件的那个框放到右侧_如何关闭烦人的Mac通知?
  8. c语言输入的成绩由高到低该怎么,c语言编程:输入学生信息(姓名年龄分数)并按照分数由高到低输出...
  9. Apache Flink 零基础入门(八): SQL 编程实践
  10. 南邮JAVA程序设计实验3 流处理程序设计
  11. 【测试】转行软件测试没有项目经历怎么办
  12. 如何将Kali Linux中的Firefox浏览器语言设置为中文
  13. 微信打开h5链接,缓存未清除解决办法
  14. [阶段4 企业开发进阶] 8. Docker
  15. 网络名称以太网网络2/3修改成网络
  16. 试用haproxy中继服务器二级代理加速访问
  17. Java SE 学习记录——进阶版11
  18. 这样设置过渡动画,让你的Android手机变得更丝滑
  19. 怎么在安卓布局里设置滚动字体_最近很火的滚动图标!手机图标随着手势滚动,让你的桌面动起来!...
  20. 格林童话 猫和老鼠做朋友

热门文章

  1. 怎么设置启用远程桌面?如何让外网电脑远程本地内网?
  2. 在全球超大规模协作中寻找创新机会:远程协作、分布式、开源、新型组织、群体智能...
  3. Java打板_AI 打板模型原理与实践
  4. skt7850鸿蒙策略,s5总决赛小组赛:SKT不败战绩晋级八强
  5. html入门基础笔记(简单实用)
  6. 会话与会话技术(Session)
  7. 中年危机如何化解分析
  8. Oracle EBS OPM创建会计科目告警:日记帐分录不平衡
  9. 为什么我建议你卸载“抖音”?
  10. 从零开始学习D2-Admin,只要学习,任何时候都不晚!