2016-05-12 3 views
0

Die folgende:ROUND zweites Argument nimmt nur konstant + hive

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; 

gibt diesen Fehler:

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

Seine Arbeit in Impalas in Ordnung.

Könnte jemand mir helfen, bitte darauf hinweisen, woher der Fehler kommt?

+1

Bitte fügen Sie eine Textbeschreibung hinzu. – wonko79

+0

Möchten Sie den Wert für val, digit abrunden? auch was ist round_test tabelle? Sie haben Werte in Tabelle t1 hinzugefügt. – AMITAVA

Antwort

0

Der Fehler besagt, dass das zweite Argument von ROUND ein Costant sein muss. d. h. mit der Struktur können Sie keine Spalte als zweites Argument für Ihre ROUND-Funktion verwenden. Wenn Sie das tun müssen, schlage ich vor, dass Sie UDF erstellen.

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

Vielen Dank für Ihre schnelle Antwort.

Ich habe bereits UDF verwendet, um dieses Problem zu lösen. Da dies ein bekanntes Problem ist HIVE-4523. Dachte, dass ein Patch bereits angewendet wurde.