问题描述
我正在尝试创建一个带有时区信息的时间戳列的 athena 表。 create sql 看起来像这样:
CREATE EXTERNAL TABLE `tmp_123` (
`event_datehour_tz` timestamp with time zone
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetoutputFormat'
LOCATION
's3://...'
TBLPROPERTIES (
'Classification'='parquet'
)
当我运行这个时,我收到错误:
第 1:8 行:不匹配的输入“外部”。期望:'or'、'schema'、'table'、'view'(服务:amazonathena;状态代码:400;错误代码:invalidrequestexception;请求 ID:b7fa4045-a77e-4151-84d7-1b43db2b68f2;代理:null)
如果我删除 with time zone
,它将创建表。我试过这个和timestamptz
。是否无法在 athena 中创建具有 timestamp with time zone
列的表?
解决方法
不幸的是Athena does not support timestamp with time zone。
您可以在该函数调用周围使用 CAST()
函数,这会将类型从 timestamp with time zone
更改为 timestamp
。
或者,您可以将其另存为 timestamp
并使用 AT TIME STAMP 运算符,如下所示:
SELECT event_datehour_tz AT TIME ZONE 'America/Los_Angeles' AS la_time;