我想在使用Impala时取一个值的模,并且我知道abs()
函数。当我像这样使用时
select abs(value) from table
它返回一个四舍五入到最近整数的值。这里找到的文档指出,我需要定义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
吗?
这应该适用于SELECT cast(Abs(-243.5) as float) AS AbsNum
我认为您误解了语法。您将函数调用为abs(val)
。返回类型与输入类型相同。它应该适用于整数、小数和浮点运算。
如果您希望返回一个特定的类型,那么您需要传入该类型,也许可以转换为特定的类型。
文件是:
abs(numeric_type a(
目的:返回参数的绝对值。
返回类型:与输入值相同
诚然,这看起来确实应该是函数调用的一部分。但它实际上是在使用编程语言样式声明来显示预期的类型。