Amazon Athena - запрос за последние 5 минут записи (отметка времени 19 цифр)

У меня есть таблица в Афине, где у каждой записи есть отметка времени, например 1531699933974236880.

В таблице есть большие объемы данных, и я хочу запросить только последние 5 минут записей на основе метки времени.

Каким будет для этого SQL-запрос? Я пробовал использовать dateADD и date_diff, но не уверен, правильно ли я его использую, или он вообще поддерживается в Presto (движке запросов SQL Athena).

Любая помощь была бы замечательной!


person RJK    schedule 27.08.2018    source источник


Ответы (2)


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

Если у вас есть почасовые данные, то потребуется обработать максимум два раздела (n и n -1). После этого вы можете использовать пример Гордона (вместе с фильтром разделов) для написания запроса.

person Ashish    schedule 07.09.2018

Ваша временная метка выглядит как временная метка Unix в микросекундах. Это предполагает:

select t.*
from t
where timestamp > (select max(timestamp) from t) - 5*60*1000000;

Ваша конкретная временная метка интерпретируется как «Понедельник, 16 июля 2018 г., 12:12:13», что кажется разумным.

person Gordon Linoff    schedule 27.08.2018
comment
Спасибо за ваш ответ. использует ли этот код select max(timestamp) для получения самой последней метки времени или последних 5 минут независимо от этого? Мне нужно, чтобы это было 5 минут. - person RJK; 28.08.2018
comment
@rjk. . . max(timestamp) занимает самую большую метку времени в таблице. В настоящее время это будет что-то вроде to_unixtime(current_timestamp)*1000000. - person Gordon Linoff; 28.08.2018