Разделение данных в столбце с использованием SQL / HiveQL

#sql #hadoop #split #hive #hiveql

#sql #hadoop #разделение #улей #hiveql

Вопрос:

У меня есть университетский проект, в котором мне нужно выполнить простой анализ большого набора данных по моему выбору, и мы должны выполнить это в системе Hadoop. Я выбираю использовать Hive, потому что у меня практически нет опыта работы с базами данных, но мне нравится Hive.

В любом случае, у меня есть шахматный набор данных, и я смог извлечь некоторые интересующие столбцы, такие как названия начальных ходов, и найти, как часто они встречаются. Подобные вещи.

Я хотел бы иметь возможность взглянуть на первые несколько ходов из каждой игры, и это подводит меня к моей проблеме. Обозначения для всех перемещений хранятся в вызываемом столбце moves и выглядят следующим образом:

введите описание изображения здесь

Этот столбец находится в вызываемом файле .csv chess_game .

Как бы я мог извлечь, скажем, первые 4 перемещения в новую таблицу, называемую что-то вроде opening_moves .

Заранее спасибо за любые советы.

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

1. Перемещения разделены пробелом? Не могли бы вы опубликовать его в виде текста, а не изображения? Первые 4 хода — это d4, d5, c4, c6 ИЛИ что именно?

2. @leftjoin В данный момент я нахожусь на работе, и, похоже, запрещен доступ к таким вещам, как Dropbox. Я постараюсь добавить позже.

Ответ №1:

Вы можете разделить строку перемещений с помощью функции split. Вот так:

 select rating, 
       moves[0] as first, 
       moves[1] as second,
       moves[2] as third,
       moves[3] as fourth               
(
select rating,  split(moves, ' ') as moves from your_table 
) s
;