2015-09-09 19 views
5

Hive verwendet IF (Bedingung, Ausdruck, Ausdruck), so dass, wenn ich, wenn/sonst tun, wenn/else/else if, ich tun muß:Wie schreibe ich am besten if/else if/else if/else in HIVE?

IF(a, 1, IF(b, 2, IF(c, 3, 4))) 

Gibt es einen besseren Weg, dies zu tun, das ist lesbarer?

der Suche nach etwas ähnlich dem Standard

if (a) { 
    1 
} else if (b) { 
    2 
} else if (c) { 
    3 
} else { 
    4 
} 

Antwort

22

Sie Hive Conditional CASE WHEN Funktion für if-else-Szenario verwenden können. Die CASE Statement bietet Ihnen bessere Lesbarkeit mit der gleichen Funktionalität.

CASE 
    WHEN (condition1) THEN result1 
    WHEN (condition2) THEN result2 
    WHEN (condition3) THEN result3 
    WHEN (condition4) THEN result4 
    ELSE result_default 
END AS attribute_name 
+1

kosmetische Änderung benötigt, gibt es eine zusätzliche ')' nach dem END – venkata

0

Der beste Weg, wenn sonst zu behandeln, wäre benutzerdefinierte UDF für bestimmte Spalte zu schreiben.

+0

IDK wie das funktionieren würde? Wenn wir Funktionen bereits haben, dann besser, sie zu benutzen. – ChikuMiku

+0

Ich würde die Lesbarkeit von Code beeinträchtigen, um die Ausführung zu beschleunigen. UDF hat normalerweise Grenzen überschritten - aus dem Hive zum UDF-Programm. Wenn möglich in Hive versuchen Sie es in Hive-Funktionen zu erreichen – viru

Verwandte Themen