Можно ли извлечь часть строки с помощью разделителя в SQL-скрипте Hive?

#hive #hiveql

Вопрос:

Я назначил проблему, чтобы сгруппировать проблему, возникшую с каждым пользователем идентификатора, по категориям. Столбец категории записывается в виде «Основная проблема@Детали 1@Детали 2». Я хотел бы знать, могу ли я использовать функцию substring_index() в sql-скрипте hive для извлечения основной проблемы и подробностей в конце с помощью следующего кода:

 select 
substring_index(category_out_line, "@",1) as MainProblem,
substring_index(category_out_line, "@",-1) as Detail2 `
from TableA;
 

Комментарии:

1. Вы действительно пробовали свой код?

2. Я голосую за закрытие невоспроизводимого, потому что у вас есть вопрос с допустимым кодом SQL, и вы просто спрашиваете, работает ли он.

Ответ №1:

Вы можете использовать substring_index, как в вашем вопросе, для извлечения первого и последнего элемента, но если вам нужно извлечь их все или второй, третий и т. Д., Лучше разделить:

 split("MainProblem@Detail1@Detail2",'@')[0] --returns MainProblem
split("MainProblem@Detail1@Detail2",'@')[1] --returns Detail1
split("MainProblem@Detail1@Detail2",'@')[2] --returns Detail2