2017-01-12 6 views
-1

Я Хава строку, как ниже в улей таблице: 20151201,20151205,1 20160102,20160214,0Преобразование строки на улей

Я хотел бы превратить его в нечто вроде: 20151201,20151205:1 20160102,20160214:0

Я может иметь одну или несколько пар даты затем запятой, затем 1 или 0

Спасибо за помощь. SMR

+0

Вы можете попробовать с помощью команды 'regexp_replace (строка INITIAL_STRING, строка PATTERN, string REPLACEMENT)' –

ответ

1

Если предположить, что в окончательном 0 или 1 из подстроки дат разделенной запятой следует пробел (или до конца строки) ...

Изменения каждого экземпляр

,(\d)\b 

к

:$1 

Или в более узком смысле, вы могли бы использовать ,(0|1)\b. Хотя на основе вашего примера оба будут иметь одинаковый результат.

+0

Да, окончательное значение 0 или 1 подстроки с разделителями-запятыми всегда сопровождается пробелом. –

+0

Я пробовал ваше предложение, но у меня есть ошибка, любая идея? hive> выберите regexp_replace ("20151201,20151205,1 20160102,20160214,0", (0 | 1) \ b,: \ 1) как периоды; NoViableAltException (9 @ [127: 1: selectItem: ((tableAllColumns) => tableAllColumns -> ............................ ..................... at org.apache.hadoop.util.RunJar.run (RunJar.java:221) at org.apache.hadoop.util. RunJar.main (RunJar.java:136) FAILED: ParseException строка 1:71 отсутствует) в 'b' рядом ',' в целевой цели строка 1:73 не может распознать ввод рядом с:: '' 1 '') 'в цель выбора –

0

Вы можете использовать комбинацию функций split и concat_ws. Сначала расщепляется на основе и согласуется с разделителем на основе:.