一起养成写作习惯!这是我参与「掘金日新计划 · 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