AnalysisException:第 1 行中的语法错误:在 Impala 中使用 abs() 取模值时出错

AnalysisException: Syntax error in line 1: error when taking modulus of a value using abs() in Impala

我想在使用 Impala 时取一个值的模,我知道 abs() 函数。当我使用它时,就像这样

select abs(value) from table

它return是一个四舍五入到最接近的整数的值。找到的文档 here 声明我需要定义 numeric_type。试过这个

select abs(float value) from table

但这给了我以下错误

AnalysisException: Syntax error in line 1: ... abs(float value) from table ^ Encountered: FLOAT Expected: ALL, CASE, CAST, DEFAULT, DISTINCT, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, TRUNCATE, TRUE, IDENTIFIER CAUSED BY: Exception: Syntax error

知道如何将 abs() 设置为 return 和 float 吗?

我认为您误解了语法。您将该函数称为 abs(val)。 return 类型与输入类型相同。它应该适用于整数、小数和浮点数。

如果您希望特定类型被 returned,那么您需要传入该类型,也许转换为特定类型。

文档是:

abs(numeric_type a)

Purpose: Returns the absolute value of the argument.

Return type: Same as the input value

不可否认,这看起来确实应该是函数调用的一部分。但它实际上是使用编程语言风格的声明来显示预期的类型。

这应该有效 SELECT cast(Abs(-243.5) as float) AS AbsNum