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

时间:2018-11-16 11:41:24

标签: sql floating-point impala

在使用Impala时,我想获取值的模数,并且我知道abs()函数。当我这样使用时

select abs(value) from table

它返回一个舍入到最接近整数的值。找到的文档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()以返回float

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

如果要返回特定类型,则需要传递该类型,也许要转换为特定类型。

文档为:

  

abs(数字类型a)

     

目的:返回参数的绝对值。

     

返回类型:与输入值相同

诚然,这确实看起来像类型应该是函数调用的一部分。但这实际上是使用编程语言样式的声明来显示所需的类型。