2016-04-04 3 views
1

Я пытаюсь получить подстроку значения из строки (composite_key): Мой composite_key выглядит, как указано ниже:Поиск подстроки в энцефалопатией

string1|string2|string3|string4|string5|string6|string7 

Я могу найти string1, string2, string3, String4 и string5 с использованием метода подстроки impala

Может кто-нибудь, пожалуйста, помогите мне найти String6 и String7 с помощью метода подстроки?

Любая помощь будет апробирована.

+0

, пожалуйста, отправьте код примера того, что вы делаете – Jared

ответ

0

я был в состоянии сделать это с помощью ниже запросов:

Для String7

select substring(composite_key,locate('|',composite_key,locate('|',composite_key,locate('|',composite_key,locate('|',composite_key,locate('|',composite_key, locate('|',composite_key) + 1)+1)+1)+1)+1)+1)as a 

Для String6

select 
substring(composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key) + 1)+1)+1)+1)+1, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key) + 1)+1)+1)+1)+1) 
- locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key) + 1)+1)+1)+1)-1) 
as a 
1

Вы должны использовать улей подзапрос + массив данных структура + функция разделения для выполнения это. Однако это работает только в Hive. Impala еще не поддерживает структуру вложенных данных, за исключением таблицы на основе паркета в Impala 2.3 (соответствующая CDH 5.5) и выше.

select 
key_array[0] part0, 
key_array[1] part1, 
key_array[2] part2, 
key_array[3] part3, 
key_array[4] part4, 
key_array[5] part5, 
key_array[6] part6, 
from (
select split(composite_key,'|') as key_array 
from mytable 
) as temp 

 Смежные вопросы

  • Нет связанных вопросов^_^