我在Hive中寻找内置的String拆分功能?例如,如果是
A | B | C | d |电子
那么我想要一个像数组拆分的功能(字符串输入,字符分隔符)
所以我回来了[A,B,C,D,E].
Hive中是否存在这样的内置拆分功能.我只能看到regexp_extract和regexp_replace.我很想看到indexOf()和split()字符串函数.
谢谢
阿贾伊
Bkk*_*rad 51
确实存在基于正则表达式的拆分函数.它没有在教程中列出,但它列在wiki上的语言手册中:
split(string str, string pat)
Split str around pat (pat is a regular expression)
Run Code Online (Sandbox Code Playgroud)
在您的情况下,分隔符" |
"具有作为正则表达式的特殊含义,因此它应该被称为" \\|
".
小智 38
在Hive中拆分的另一个有趣的用例是,例如,ipname
表中的列具有值"abc11.def.ghft.com"并且您想要拉出"abc11":
SELECT split(ipname,'[\.]')[0] FROM tablename;
Run Code Online (Sandbox Code Playgroud)
请澄清一下Bkkbrad给出的答案。
我尝试了此建议,但对我没有用。
例如,
split('aa|bb','\\|')
Run Code Online (Sandbox Code Playgroud)
生产:
["","a","a","|","b","b",""]
Run Code Online (Sandbox Code Playgroud)
但,
split('aa|bb','[|]')
Run Code Online (Sandbox Code Playgroud)
产生了预期的结果:
["aa","bb"]
Run Code Online (Sandbox Code Playgroud)
包括元字符“ |” 方括号内的内容会导致按原义对其进行解释,而不是将其解释为元字符。
有关正则表达式行为的详细说明,请参见:http : //www.regular-expressions.info/charclass.html
归档时间: |
|
查看次数: |
101376 次 |
最近记录: |