【发布时间】:2021-01-26 17:16:12
【问题描述】:
在我想要做的 Hive SQL 脚本中:
如果 {$user_choice = 1} 从表 1 中选择 a、b、c; 别的 从表 1 中选择 d,e,f;
其中 user_choice 是 Hive 在运行查询时提示输入的参数。
请问正确的语法是什么?或者如果我想错了,还有其他方法可以实现同样的目标吗?
我正在尝试通过 Hue 编辑器执行此操作,如果这会有所不同的话。 谢谢
【问题讨论】:
在我想要做的 Hive SQL 脚本中:
如果 {$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
【讨论】: