What's the best way to write if/else if/else if/else in HIVE?

前端 未结 3 737
一向
一向 2020-12-15 08:05

Hive uses IF(condition, expression, expression), so when I want to do if / else if / else if / else, I have to do:

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

相关标签:
3条回答
  • 2020-12-15 08:26

    You can easily achieve this using CASE WHEN statements.

    CASE 
        WHEN a THEN 1
        WHEN b THEN 2
        WHEN c THEN 3
        ELSE 4
    END AS attribute_name
    

    For more information, refer official doc at https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions

    0 讨论(0)
  • 2020-12-15 08:27

    The best way to handle if else will be to write customize UDF for particular column.

    0 讨论(0)
  • 2020-12-15 08:43

    You can use Hive Conditional CASE WHEN function for if-else scenario. The CASE Statement will provide you better readability with the same functionality.

    CASE
      WHEN (condition1) THEN result1
      WHEN (condition2) THEN result2
      WHEN (condition3) THEN result3 
      WHEN (condition4) THEN result4
      ELSE result_default 
    END AS attribute_name
    
    0 讨论(0)
提交回复
热议问题