根据您的工作流程,可能有几种方法可以做到这一点,如果您有更多详细信息,那将很有帮助。
可能的方法是;
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 个时间戳之间的数据,并且可能不是 now() 的形式 - 某个间隔,您可以这样做的方法是创建一个数据集,然后在使用 create-dataset-content 运行数据集之前,使用修改后的 SQL 表达式更新数据集。这样,数据集内容就会更新为每次执行所需的结果。如果对此感兴趣,我可以扩展所需的实际 python。
4) 正如 Thomas 所建议的,使用数据集提取更大的数据块(例如最后一天)通常同样容易,然后在代码中过滤到您想要的时间戳。例如,如果您使用panda 数据框,并且有很多相关问题(例如这个问题有很好的答案),这将特别容易。