2017-01-12 9 views
-1

上の文字列を変換: 20151201,20151205,1 20160102,20160214,0私はハイブの表に以下のような文字列をHAVAハイブ

私のような何かにそれを変換したい:私はの一つまたは多くのペアを持っているかもしれ 20151201,20151205:1 20160102,20160214:0

日付の後にコンマを1または0で続けます。

ありがとうございます。 SMRカンマ区切りの日付のサブストリングの最後の0または1空間(またはラインの終わり)が続いていると仮定すると

+0

あなたは 'regexp_replace(string INITIAL_STRING、string PATTERN、string replace)'を試すことができます。 –

答えて

1

...

変更

,(\d)\b 
のすべてのインスタンス

:$1 

以上狭く

に、あなたは ,(0|1)\bを使用することができます。あなたの例に基づいていますが、どちらも同じ結果になります。

+0

はい、コンマ区切りの日付の部分文字列の最後の0または1には常にスペースが続きます。 –

+0

私はあなたの提案を試みましたが、私はエラーがあります。ハイブ> regexp_replace( "20151201,20151205,1 20160102,20160214,0"、(0 | 1)\ b、:\ 1)をピリオドとして選択します。 NoViableAltException(9 @ [127:1:selectItem:((tableAllColumns)=> tableAllColumns - > ............................ ..................... org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util。 RunJar.main(RunJar.java:136) 行1:73は ':' '1' 'の近くの入力を認識できません)'、 'の近くの' b 'にある FAILED:ParseException line 1:71 missing)'選択対象 –

0

split関数とconcat_ws関数の組み合わせを使用できます。最初に分割し、次の基準に基づいてセパレータと連結します。

関連する問題