hive函数之字符串解析

448 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情

各种不同内容的字符串的解析也是hivesql开发中经常用到的,这里涉及到了正则表达式解析、url解析等函数,下面一一介绍一下这些函数的使用和注意事项吧。

10、regexp_extract 正则表达式解析函数 作用:返回指定正则表达拆解后的结果

常见使用方法:regexp_extract(string subject, string pattern, int index)

具体功能说明:首先传进来一个字符串subject,通过pattern 正则表达式的规则拆解该字符串内容,最后获取指定索引index上的内容返回出来,返回的结果类型也是string 。如下例子中,分别返回索引为0、1、2的内容。

select regexp_extract(  'foothebar'  ,   'foo(.*?)(bar)'  ,   0  );  
>> foothebar   
​
select regexp_extract(  'foothebar'  ,   'foo(.*?)(bar)'  ,   1  );  
>> the   
​
select regexp_extract(  'foothebar'  ,   'foo(.*?)(bar)'  ,   2  );  
>> bar
​

11、parse_url URL解析函数 作用:返回url中指定内容

常见使用方法:parse_url(string urlString, string partToExtract [, string keyToExtract])

具体功能说明:将一个url拆解成多个部分,返回其中的指定部分,结果返回类型也是string ,其中返回url的哪个部分是由特定的值去约束的,该有效值分别如下:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO。个别的值会带参数即key值,如下的query就是需要传入一个key值。如下图返回了一个url中的 host和query。


select parse_url(  'https://www.baidu.com/path/p.php?k1=v1&k2=v2#ref1'  ,   'HOST'  );  
>> www.baidu.com   
​
select parse_url(  'https://www.baidu.com/path/p.php?k1=v1&k2=v2#ref1'  ,   'QUERY'  ,   'k1'  );  
>> v1

12、get_json_object json解析函数 作用:返回指定key的value

常见使用方法:get_json_object(string json_string, string path)

具体功能说明:这个功能非常好用和常见,很多扩展字段里面存的都是json串,想要获取这个json中指定位置的value,通过$.xxx.yyy 的方式,就可以获取到,并且返回的结果类型也是string 。如果输入的 json 字符串无效,那么返回 NULL。这个函数还适用于json的多级解析。

select get_json_object(  '{"name":"zs","age":"25"}'  ,   '$.name'  );  
>> zs
select get_json_object(  '{"name":"zs","age":"25","day":{"month":1,"year":2}}'  ,   '$.day.month'  );  
>> 1