在使用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
?
答案 0 :(得分:1)
这应该有效SELECT cast(Abs(-243.5) as float) AS AbsNum
答案 1 :(得分:0)
我认为您误解了语法。您将函数称为abs(val)
。返回类型与输入类型相同。它应该适用于整数,小数和浮点数。
如果要返回特定类型,则需要传递该类型,也许要转换为特定类型。
文档为:
abs(数字类型a)
目的:返回参数的绝对值。
返回类型:与输入值相同
诚然,这确实看起来像类型应该是函数调用的一部分。但这实际上是使用编程语言样式的声明来显示所需的类型。