如何进行 Hive SQL IF/ELSE 查询?

问题描述

在我的 Hive sql 脚本中我想做:

IF {$user_choice = 1} 从表 1 中选择 a、b、c; 别的 从表 1 中选择 d,e,f;

其中 user_choice 是 Hive 在查询运行时提示的参数。

请问正确的语法是什么?或者,如果我想错了,还有其他方法可以实现相同的目标吗?

我正在尝试通过 Hue 编辑器执行此操作,如果这有所不同的话。 谢谢

解决方法

如果列类型相同,可以在 Hive 中使用 CASE 语句或 UNION ALL:

SELECT 
      case when ${user_choice} = 1 the a else d end col1 
      case when ${user_choice} = 1 the b else e end col2 
      case when ${user_choice} = 1 the c else f end col3 
  FROM table1;

SELECT  a,b,c FROM table1 WHERE ${user_choice} = 1
UNION ALL
SELECT  d,e,f FROM table1 WHERE ${user_choice} = 2

如果列的数据类型不同,或者完全不同的脚本,则从shell调用hive

if if [[ ${user_choice}  == "1" ]] ; then 
  hive -e "query one"
else 
  hive -e "query two" 
fi

列名也可以参数化:https://stackoverflow.com/a/55805764/2700344