我在hive
中有一个表格,如下所示
id name sal
1 sam 2000
2 Ram 3000
3 Tim 4000
4 Ash 5000
我想从name
列中获取所有值作为变量。
我已经完成了以下操作
abc=`hive -e "select distinct name from db.tbl";`
当我喜欢下面的时候
echo $abc
我得到的结果是
Ash Ram Tim sam
我希望结果像
'Ash', 'Ram', 'Tim', 'sam'
我尝试如下
xyz=`hive -e "select concat_ws(',', collect_set(name)) from from db.tbl";`
echo $xyz
Ash,sam,Ram,Tim
我在这里是我想使用where in clause
我想实现的目标在下面
select * from db.tbl where name in (variable)
我该如何实现?
答案 0 :(得分:1)
您的查询
xyz=`hive -e "select concat_ws(',', collect_set(name)) from from db.tbl";`
在变量的每个项目前后添加双引号
xyz_list=echo "\"${xyz//,/\",\"}\""
查询变量
echo $xyz_list
"Ash", "Ram", "Tim", "sam"
所需查询
hive -e "select * from db.tbl where name in ($xyz_list)";
获得结果的另一种方法
abc=`hive -e "select collect_set(concat_ws(',', name)) from db.tbl";`
test=${abc:1:-1}
hive -e "select * from db.tbl where name in ($test)";