Hiveに組み込みの文字列分割関数を探していますか?例えば。文字列が
A | B | C | D | E
配列split(string input、char delimiter)のような関数が欲しい
[A、B、C、D、E]が返ってきます。
このような組み込みの分割関数はHiveに存在しますか? regexp_extractとregexp_replaceのみが表示されます。 indexOf()およびsplit()文字列関数が見たいです。
ありがとう
アジャイ
正規表現に基づいた分割関数が存在します。 チュートリアルでは にはリストされていませんが、 wikiの言語マニュアル にはリストされています。
split(string str, string pat)
Split str around pat (pat is a regular expression)
あなたの場合、区切り文字「|
"は正規表現として特別な意味を持つため、" \\|
"。
Hiveでの分割のもう1つの興味深いユースケースは、たとえば、テーブルの列ipname
の値が「abc11.def.ghft.com」であり、「abc11」を引き出したい場合です。
SELECT split(ipname,'[\.]')[0] FROM tablename;
Bkkbradによって与えられた答えの明確化。
私はこの提案を試みましたが、うまくいきませんでした。
例えば、
split('aa|bb','\\|')
生産:
["","a","a","|","b","b",""]
しかし、
split('aa|bb','[|]')
望ましい結果が得られました。
["aa","bb"]
メタキャラクター「|」を含める角括弧内では、メタ文字としてではなく、意図したとおりに文字通りに解釈されます。
正規表現のこの動作の詳細については、以下を参照してください: http://www.regular-expressions.info/charclass.html