微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带时区的雅典娜表时间戳不可能?

如何解决带时区的雅典娜表时间戳不可能?

我正在尝试创建一个带有时区信息的时间戳列的 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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。