Я не совсем уверен, что это хороший вопрос, но я объясню, насколько это возможно в теле.Улей: Повторите SELECT для каждой строки
Я работаю с миллионами песен Dataset, от http://labrosa.ee.columbia.edu/millionsong/
Моей конечной целью является создание что-то вдоль линий «подобной песни», в котором я беру песню и получить подобные песни на год, продолжительность и т.д.
у меня есть данные в таблице улья, установленные в качестве
CREATE TABLE IF NOT EXISTS songs(genre String, artist String, danceability Double, duration Double, loudness Double, similarArtists String, hotness Double, title String) PARTITIONED BY(year String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
Моя проблема возникает потому, что улей не поддерживает неравенства в JOIN.
В идеале я хотел бы иметь запрос как
SELECT songs.artist, songs.title, t2.title FROM songs JOIN songs as t2 ON songs.year > t2.year -5 AND songs.year < t2.year +5;
Однако это не представляется возможным в настоящее время. Я в настоящее время тупик, чтобы наилучшим образом попытаться выполнить подобный запрос. Это можно сделать в SELECT, даного
SELECT title FROM songs WHERE year < 2000 + 5 AND year > 2000 - 5;
Но я не уверен, как это делать в каждом ряду, а принимая apropriate значения вместо жесткого кодирования 2005 IE:
SELECT title FROM songs WHERE year < song.year + 5 AND year > song.year-5;
Кто-нибудь столкнуться с ситуацией, подобной этой, или иметь какие-то общие идеи, которые я мог бы попробовать?
Спасибо за тонну, я не знал о промежуточной оговорке. –