Amazon Athena 获取过去一小时的数据

Amazon Athena get data from the past one hour

我在 AWS Athena table 中有一些数据行,我正在尝试获取过去 1 小时的数据。我正在使用 awswrangler,我将在下面 post 我的代码片段。基本上,我不想查询所有数据,然后仅使用 Python 过滤掉最后 1 小时,我想在 Athena SQL 查询中这样做,以便我得到更快的响应(因此执行时间的程序)。我的代码是:

import awswrangler as wr
import boto3

session=boto3.Session()
df = wr.athena.read_sql_query(f"""SELECT *
                                  FROM data_table""",
                                  database="database",
                                  keep_files = False,
                                  boto3_session = session).sort_values('timestamp')

我的进步: 我可以使用 "SELECT CURRENT_TIMESTAMP" 获取当前时间戳,但这将 return 日期格式的时间戳。为了获得最后1小时,我的想法是将1小时也转换为毫秒,并从当前时间戳的毫秒数中减去它并将其用作过滤器。

注意! table中的timestamp以毫秒为单位。

一个选项是转换时间戳,然后从当前时间减去一个小时进行过滤。

假设时间戳中的值是自纪元以来的毫秒数,您可以使用 from_unixtime:

根据您提供的样本值来查看其工作原理:

select from_unixtime(1650578683860/1000e0)

然后给出结果:

2022-04-21 22:04:43.860

然后您可以使用 DATE_ADD 并从 CURRENT_STAMP 中减去一个小时,因此 where 子句将类似于:

WHERE from_unixtime("timestamp"/1000e0) >= DATE_ADD('hour', -1, CURRENT_TIMESTAMP)