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)
我在 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)