【问题标题】:Amazon Athena - Query last 5 minutes of record (timestamp 19 digits)Amazon Athena - 查询最后 5 分钟的记录(时间戳 19 位)
【发布时间】:2019-02-02 11:06:47
【问题描述】:

我在 Athena 中有一个表,其中每条记录都有一个时间戳,例如 1531699933974236880

表有大量数据,我只想根据时间戳查询最近5分钟的记录。

对此的 SQL 语句是什么?我尝试过使用dateADDdate_diff,但我不确定我是否正确使用它,或者Presto(Athena 的SQL 查询引擎)是否支持它。

任何帮助都会很棒!

【问题讨论】:

    标签: sql database epoch amazon-athena presto


    【解决方案1】:

    我强烈建议根据时间戳对数据进行分区,以便您可以在查询中使用分区过滤器来大幅提高性能。

    如果您有每小时分区的数据,则最多需要处理两个分区(n 和 n -1)。在此之后,您可以使用 Gordon 的示例(以及分区过滤器)来编写查询。

    【讨论】:

      【解决方案2】:

      您的时间戳看起来像一个以微秒为单位的 Unix 时间戳。这表明:

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

      您的特定时间戳被解释为“2018 年 7 月 16 日星期一上午 12:12:13”,这似乎是合理的。

      【讨论】:

      • 感谢您的回复。这段代码是否使用select max(timestamp) 获取最近的时间戳或最后 5 分钟?我需要它是 5 分钟。
      • @rjk 。 . . max(timestamp) 采用表中最大的时间戳。目前,它类似于to_unixtime(current_timestamp)*1000000
      猜你喜欢
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 2011-06-25
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多