我在 AWS Athena 表中有一些資料行,我正在嘗試獲取過去 1 小時的資料。我正在使用awswrangler,我將在下面發布我的片段。基本上,我不想查詢所有資料,然后只用 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",但這將以日期格式回傳時間戳。為了獲得最后 1 小時,我的想法是將 1 小時也轉換為毫秒,然后從當前時間戳的毫秒中減去它并將其用作過濾器。
筆記!timestamp表中以毫秒為單位。
uj5u.com熱心網友回復:
一種選擇是轉換時間戳,然后從當前時間減去一個小時進行過濾。
假設時間戳中的值是自紀元以來的毫秒數,您可以使用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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464354.html
標籤:sql 亚马逊网络服务 亚马逊-s3 aws胶水 亚马逊-雅典娜
上一篇:在Python中將字串轉換為物件
下一篇:Terraform資源已更改
