AnalysisException: синтаксическая ошибка в строке 1: ошибка при получении модуля значения с использованием abs () в Impala - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу взять модуль значения при использовании 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?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Это должно работать SELECT cast(Abs(-243.5) as float) AS AbsNum

0 голосов
/ 16 ноября 2018

Я думаю, вы неправильно понимаете синтаксис. Вы вызываете функцию как abs(val). Тип возвращаемого значения совпадает с типом ввода. Он должен работать с целыми числами, десятичными числами и числами с плавающей запятой.

Если вы хотите, чтобы возвращался определенный тип, вам нужно передать этот тип, возможно приведение к конкретному типу.

Документация:

abs (numeric_type a)

Цель: Возвращает абсолютное значение аргумента.

Тип возвращаемого значения: То же, что и входное значение

Правда, похоже, что тип должен быть частью вызова функции. Но он действительно использует объявление в стиле языка программирования для отображения ожидаемых типов.

...