HIVE 字符串截取
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HIVE 字符串截取相关的知识,希望对你有一定的参考价值。
HIVE表中有一列字符串格式的数据,类似如下"A,B,C,D,E,F,G",其中以逗号分隔开的表示商品的ID,(这里我将商品ID简化了,真实的案例中商品ID是由位数不等的数字组成,如123,2345,56789等,并不是只有一个字母),现在我需要截取前5个商品ID,但是同时需要保持整体的顺序不变,如上字段截取后的结果为"A,B,C,D,E",请问各位大神,在hive中有什么办法可以实现这个吗??
参考技术A select split(id,",")[0],split(id,",")[1],,,split(id,",")[4],,,,hive中的字符串提取
参考技术A 在进行数据分析时,尤其要对网页进行分析时,我们往往要对其中部分的数据进行抽取,这个就需要靠hive的函数来完成了。首先要讲的是split函数,这个函数的作用是对字符窜进行分割,基本用法为:split(string str, string pat) ,返回值为一个数组array,因此要取值得话需要用到切片,即[数字],其中第一个str是要切分的字符串,第二个pat是以什么字符进行切割。来看案例吧。
有的时候切割不是一下就能完成,那么就多去嵌套几次split就好了。
返回字符串从某个位置开始固定长度的子串,和substring功能相同,基本用法为substr(string A, int start, int len ),还是来看例子。值得注意的是,substr(str,0,2)和substr(str,1,2)的功能都是一样的,都是从第一个位置开始。
这个函数是个神器,可以解析url结构,返回我们想要的东西。基本用法为parse_url(string urlString, string partToExtract [, string keyToExtract]),其中partToExtract的有效值包括HOST,PATH, QUERY, REF, PROTOCOL, AUTHORITY,FILE和USERINFO等,具体我就不一一解释了,大家使用时可以自行百度。重点说一下,当第二个参数是QUERY时,第三个参数就可以使用了,这个是参数提取最有用的方法了,还是以案例来说明。
这个函数是最终的大杀器了,以上都解决不了你的问题的时候,有了这个一切都可以解决,使用这个函数的基础是正则表达式基础要会一些。这个函数的基本用法是regexp_extract(string subject, string pattern, int index),第一个参数是待处理的字符串,第二个参数是写好的正则,第三个表达式一般用不上可以忽略掉。来看例子:
有了以上函数,相信应该能满足大家对于hive进行字符串提取的一切要求了。
以上是关于HIVE 字符串截取的主要内容,如果未能解决你的问题,请参考以下文章
2020-12-05 hive sql 截取最后一个特殊字符后面的内容