【发布时间】:2021-04-13 18:29:16
【问题描述】:
我正在尝试使用 Calcite SQL 语法对 Apache Beam 进行 SQL 转换。我正在做一个 int 到布尔转换。我的 sql 是这样的:
,CASE WHEN cast(IsService as BOOLEAN) THEN CASE WHEN IsEligible THEN 1 ELSE 0 END ELSE NULL END AS Reported
IsService 是 int 指标,IsEligible 是布尔值。
根据documentation,从 int 到 boolean 的显式转换很好。 但是,当我运行管道时出现以下错误:
Caused by: org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.sql.validate.SqlValidatorException: Cast function cannot convert value of type INTEGER to type BOOLEAN
谁能解释我为什么会收到错误消息?
【问题讨论】:
-
底层数据库是什么?
-
@JimGarrison 我正在阅读 Kafka 主题
-
为什么不直接使用
IsService = [int],这里需要强制转换吗? -
@T.Peter 你是对的,它会工作,但我的 sql 正在其他地方自动生成,改变它是一件很痛苦的事情。只是好奇为什么我会收到错误
-
看看。 Beam 是在相当旧的 Calcite 版本上,所以可能就是这样。不过,我将添加另一个答案来解决您的问题。
标签: java sql apache-beam apache-calcite beam-sql