Запрос куста для выбора точек данных между максимальной датой и предыдущими 30 днями для каждого уникального идентификатора

Данные содержат уникальные идентификаторы с разной широтой и долготой на нескольких временных метках. Я хотел бы выбрать строки с координатами за последние 30 дней для каждого уникального идентификатора. Пожалуйста, помогите мне, как выполнить запрос. Эта дата находится в таблице Hive. Невозможно написать подзапрос

привет


person akshay dirisala    schedule 23.08.2020    source источник


Ответы (1)


Вы можете использовать оконные функции:

select t.*
from (select t.*,
             max(date) over (partition by id) as max_date
      from t
     ) t
where date > date_add(max_date, -30);
person Gordon Linoff    schedule 23.08.2020
comment
спасибо @gordon linoff, у меня быстрый вопрос, принимают ли таблицы ульев функцию Windows через запрос hive sql - person akshay dirisala; 23.08.2020
comment
@akshaydirisala. . . Hive SQL поддерживает функции Windows. - person Gordon Linoff; 24.08.2020
comment
выполняя приведенный ниже запрос куста для извлечения данных между последней датой и предыдущими 30 днями уникальных идентификаторов из таблицы куста, но не могу извлечь данные с помощью подзапроса внутри запроса sql улья, скажите мне, что я делаю не так. Выберите temp.x, temp.y, temp.z, temp.w из (выберите x, y, z, w, max (y) поверх (разделить по x) как max_date из t1 как temp) temp, где t1 .y ›date_add (max_date, -30); Ошибка: ошибка при компиляции оператора: FAILED: строка ParseException 3: 0 не может распознать ввод рядом с 'select' 'имя столбца' ',' в источнике соединения (state = 42000 , код = 40000) @gordon - person akshay dirisala; 24.08.2020
comment
@akshaydirisala. . . Что-то не так с вашим запросом, но это не должна быть оконная функция. - person Gordon Linoff; 24.08.2020