Может быть несколько способов сделать это, в зависимости от вашего рабочего процесса, если у вас есть еще несколько деталей, это было бы полезно.
Возможные подходы:
1) Создайте запланированный запрос для выполнения каждый час (например), где запрос выглядит примерно так:
SELECT * FROM my_datastore WHERE __dt >= current_date - interval '1' day
AND my_timestamp >= now() - interval '1' hour
Возможно, вам потребуется настроить формат временной метки в соответствии с тем, как вы ее храните (секунды эпох, миллисекунды эпох, ISO8601 и т. Д. Если вы установите этот параметр для запуска каждый час, при каждом его выполнении вы получите данные за последний час. Обратите внимание, что ограничение __dt помогает вашему запросу выполняться быстрее (и дешевле), ограничивая сканирование только самым последним днем.
2) Вы можете улучшить вышесказанное, используя функцию окна дельты в наборе данных, которая позволяет получать данные, поступившие с момента последнего выполнения запроса, более легко. Затем вы можете упростить свой запрос, чтобы он выглядел как
select * from my_datastore where __dt >= current_date - interval '1' day
И настройте окно дельта-времени, чтобы посмотреть на поле вашей отметки времени. Затем вы контролируете объем получаемых данных по частоте выполнения запроса (каждые 15 минут, каждый час и т. Д.).
3) Если у вас есть требование более общего назначения для выборки данных между 2 временными метками, которые вы вычисляете программно, и может не иметь форму сейчас () - некоторый интервал, способ, которым вы могли бы сделать это, состоит в том, чтобы создать набор данных, а затем обновите набор данных с помощью измененного выражения SQL, прежде чем запускать его с помощью create-dataset-content. Таким образом, содержимое набора данных обновляется только теми результатами, которые вам нужны при каждом выполнении. Если это представляет интерес, я могу расширить фактический требуемый питон.
4) Как предположил Томас, часто бывает так же просто извлечь больший кусок данных с набором данных (например, за последний день), а затем отфильтровать до нужной временной отметки в коде. Это особенно легко, если вы используете, например, panda dataframes и существует множество связанных с этим вопросов, таких как этот , на которые есть хорошие ответы.