[英]Amazon Athena table creation issue
我在 Athena 中有一張表,其中有 S3 作為源。
表列“Col1”之一的數據類型為字符串。
Col1
2019-11-21T12:26:13.422Z
2019-11-21T17:12:49.812Z
2019-11-21T17:51:38.299Z
我希望將此列轉換為timestamp
的數據類型。
我運行了以下查詢:
SELECT
from_iso8601_timestamp(col1) AS ABC
FROM "testtest"."layer2_keywords"
然后我得到一個帶有時間戳數據類型的列:
col1
col1
1 2019-11-12 10:11:08.017 UTC
2 2019-11-21 09:19:58.937 UTC
3 2019-11-22 09:23:47.786 UTC
我想用這個表輸出創建一個新表。
我嘗試了以下查詢:
CREATE TABLE NEW_TABLE AS
SLECT
from_iso8601_timestamp(col1) AS ABC
FROM layer2_keywords
但是這個命令不是創建一個新表。
它拋出如下錯誤:
NOT_SUPPORTED:不支持的 Hive 類型:帶時區的時間戳。 在重試之前,您可能需要手動清理位置 's3://athena-query-results-layer2/XXXXXXXXXX/' 處的數據。 Athena 不會刪除您帳戶中的數據。
任何人都可以指導我如何從 AWS Athena 中的選擇查詢中獲取新表以進行字符串到時間戳的轉換?
我必須依賴 Athena,因為 Glue crawler 和 Glue ETL 都沒有將字符串轉換為時間戳轉換。
我得到了答案。
我使用CREATE TABLE AS SELECT
(CTAS)。
請參閱: 在另一個查詢中使用 Amazon Athena 查詢的結果
但是有沒有一種方法可以在數據保存到 S3 之前使用,比如 GROK 表達式? 如果是,請任何人都可以提供一個分步程序來針對這個特定問題在 Glue 中編寫 GROK 嗎?
字符串到時間戳
字符串:2019-11-21T12:26:13.422Z
您可以使用 CAST() 函數如下:
CREATE TABLE NEW_TABLE AS
SLECT
CAST(from_iso8601_timestamp(col1) AS TIMESTAMP) AS ABC
FROM layer2_keywords
我希望它能幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.