问题描述
在我的 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