Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ApacheBeam中进行SQL转换时如何将int转换为boolean_Java_Sql_Apache Beam_Apache Calcite_Beam Sql - Fatal编程技术网

Java 在ApacheBeam中进行SQL转换时如何将int转换为boolean

Java 在ApacheBeam中进行SQL转换时如何将int转换为boolean,java,sql,apache-beam,apache-calcite,beam-sql,Java,Sql,Apache Beam,Apache Calcite,Beam Sql,我正在尝试使用方解石SQL语法对ApacheBeam进行SQL转换。我正在做一个整型到布尔型的转换。我的sql如下所示: ,CASE WHEN cast(IsService as BOOLEAN) THEN CASE WHEN IsEligible THEN 1 ELSE 0 END ELSE NULL END AS Reported 其中IsService是一个指示符int,IsEligible是一个布尔值 根据这个例子,从int到boolean的显式转换是可以的。 但是,我在运行管道时遇

我正在尝试使用方解石SQL语法对ApacheBeam进行SQL转换。我正在做一个整型到布尔型的转换。我的sql如下所示:

,CASE WHEN cast(IsService as BOOLEAN) THEN CASE WHEN IsEligible THEN 1 ELSE 0 END ELSE NULL END AS Reported

其中IsService是一个指示符int,IsEligible是一个布尔值

根据这个例子,从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

有人能解释我为什么会出错吗?

要立即解决您的问题,您可以使用
IsService>0
而不是
CAST
。在我看来,更清楚的是什么是转换。我不喜欢依赖“虚假”值。

底层数据库是什么?@JimGarrison我在读卡夫卡的一篇文章为什么不直接使用
IsService=[int]
,这里绝对需要它?@t.Peter你说得对,它可以工作,但我的sql是在其他地方自动生成的,这是一个让人头疼的问题。我只是好奇为什么我会看到这个错误。梁是在一个相当古老的方解石版本上,所以可能就是它。不过,我将添加另一个答案来解决您的问题。使用
>0
可以解决问题,但这需要更改自动生成的sql,这是一个很大的麻烦