什么';在HIVE中编写if/else if/else if/else的最佳方法是什么?

什么';在HIVE中编写if/else if/else if/else的最佳方法是什么?,hive,hql,Hive,Hql,Hive使用IF(条件、表达式、表达式),因此当我想执行IF/else IF/else IF/else时,我必须执行以下操作: IF(a, 1, IF(b, 2, IF(c, 3, 4))) 有没有更好的方法更具可读性 寻找与标准类似的东西 if (a) { 1 } else if (b) { 2 } else if (c) { 3 } else { 4 } 您可以对if-else场景使用Hive条件CASE-WHEN功能。CASE语句将为您提供更好的可读性和相同的功能 CA

Hive使用IF(条件、表达式、表达式),因此当我想执行IF/else IF/else IF/else时,我必须执行以下操作:

IF(a, 1, IF(b, 2, IF(c, 3, 4)))
有没有更好的方法更具可读性

寻找与标准类似的东西

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

您可以对if-else场景使用Hive条件
CASE-WHEN
功能。
CASE语句
将为您提供更好的可读性和相同的功能

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

处理if-else的最佳方法是为特定列编写自定义UDF。

在使用CASE-WHEN语句时,您可以很容易地实现这一点

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

有关更多信息,请参阅官方文件,网址为

IDK这将如何工作?如果我们已经有了函数,那么最好使用它。我会牺牲代码的可读性来提高执行速度。UDF通常跨越边界-从配置单元到UDF程序。如果可能的话,在配置单元中尝试在配置单元功能中完成此操作。如果需要更改,则在结束后会有一个额外的“)”