如何解决方解石 SQL 无法识别 Apache Beam 中的 CONVERT_TIMEZONE
SELECT CONVERT_TIMEZONE('America/New York','UTC',(TIMESTAMP '1970-01-01 00:00:00' + OriginalTZ * INTERVAL '1' SECOND)) as MyUTC FROM PCOLLECTION
但我收到错误:
No match found for function signature CONVERT_TIMEZONE(<CHaraCTER>,<CHaraCTER>,<TIMESTAMP>)
但根据 Calcite 文档,语法就是这样。
我使用的是 Apache Beam 2.29 版。但是里面的Calcite sql版本好像是2019年的旧版本2.20。
如何在我的 Calcite sql 中使用 CONVERT_TIMEZONE?
解决方法
Apache Beam 目前使用 Calcite SQL 1.20,而 CONVERT_TIMEZONE
已添加到 1.21。
一种解决方法是使用普通 ParDo 或 Map 来转换时区。如果您使用的是 Python,一些示例:Python Timezone conversion.
,我确认这不起作用:https://github.com/apache/beam/pull/15010/files
但是,您可以使用 SqlTransform#registerUdf
添加自己的代码(如果您愿意,也可以使用 Calcite 的 Apache 2.0 许可代码)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。