2016-05-12 2 views
0

Ниже:КРУГЛЫЙ второй аргумент занимает постоянная + улей

hive> create table t1 (val double, digit int); 
hive> insert into t1 values(10,2); 
hive> insert into t1 values(156660,3); 
hive> insert into t1 values(8765450,4); 
hive> select round(val, digit) from round_test; 

дает эту ошибку:

FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments 'digit': ROUND second argument only takes constant

его рабочих штрафа в импала.

Может ли кто-нибудь помочь мне, пожалуйста, укажите, откуда исходит ошибка?

+1

Пожалуйста, добавьте текстовое описание. – wonko79

+0

Вы хотите округлить значение для val, digit? также какая таблица round_test? вы добавили значения в таблицу t1. – AMITAVA

ответ

0

Ошибка говорит о том, что неотъемлемый аргумент ROUND должен быть состоятельным. т. е. с улей вы не можете использовать столбец в качестве аргумента secund для вашей функции ROUND. Если вам нужно это сделать, я предлагаю вам создать UDF.

1
BigDecimal a = new BigDecimal(value); 
    BigDecimal roundOff = a.setScale(places, BigDecimal.ROUND_HALF_EVEN); 
    return roundOff.doubleValue(); 

благодарит за ваш быстрый ответ.

Я уже использовал UDF для решения этой проблемы. Поскольку это известная проблема ВИЧ-4523. Думал, что некоторые исправления уже применяются.