[英]AWS Athena query to find Date column has String or not satisfying timestamp format
[英]AWS Athena mis-interpreting timestamp column
我正在處理 CSV 個文件,在 AWS Lambda function 中使用 Pandas 輸出鑲木地板文件,將數據保存到 S3 存儲桶以使用 Athena 進行查詢。 Lambda function 的 RAW 輸入格式為 CSV,UTC 時間戳為 unix,如下所示:
Timestamp,DeviceName,DeviceUUID,SignalName,SignalValueRaw,SignalValueScaled,SignalType,Valid
1605074410110,F2016B1E.CAP.0 - 41840982B40192,323da038-bb49-4f3a-a045-925194364e5b,X.ALM.FLG,0,0,INTEGER,true
我像這樣解析時間戳:
df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
df.head()
Timestamp DeviceName DeviceUUID SignalName SignalValueRaw SignalValueScaled SignalType SubstationId StationBankId FeederId year month day hour DeviceNameClean DeviceType
0 2020-11-11 06:00:10.110 F2016B2W.MLR.0 - 41841005000073 3c4839b1-ab99-4164-b415-4653948360ef CVR_X_ENGAGED_A 0 0 BOOLEAN Kenton FR2016B2 F2016B2W 2020 11 11 6 MLR.0 - 41841005000073 MLR
我在 Lambda function 和 output 一個鑲木地板文件中進一步處理數據。 然后,我針對此腳本輸出的鑲木地板文件運行 Glue 爬蟲,在 S3 中,可以很好地查詢數據:
2020-11-14T05:00:43.609Z,02703ee8-b08a-4c49-9581-706f905aa192,FR22607.REG.0,REG,REG.0,ROSS,FR22607,,0,0,0,0,0,0,0,0,,0.0,,,,0.0,,,,1.0,,
膠水爬蟲正確地將列識別為時間戳:
CREATE EXTERNAL TABLE `cvr_event_log`(
`timestamp` timestamp,
`deviceuuid` string,
`devicename` string,
`devicetype` string,
...
但是當我隨后在 Athena 中查詢表時,我得到了這個日期:
"timestamp","deviceuuid","devicename","devicetype",
"+52840-11-19 16:56:55.000","0ca4ed37-930d-4778-b3a8-f49d9b498364","FR22606.REG.0","REG",
是什么讓雅典娜對時間戳如此困惑?
要在 Athena 中使用TIMESTAMP
列,您需要使用特定格式,不幸的是,它不是 ISO 8601。它看起來像這樣:“2020-11-14 20:33:42”。
您可以使用from_iso8601_timestamp(ts)
來解析查詢中的 ISO 8601 時間戳。
可悲的是,膠水爬蟲經常誤解事物並創建不能與 Athena 正常工作的表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.