Collect array of distinct values using collect_set
and concatenate it with delimiter ','
. This will produce list without outer quotes 2009-02-01','2009-04-01
and in the second script add outer quotes '
also, or you can add them in the first query. And when executing in inline sql (-e option) you do not need to pass hiveconf variable, direct shell variable substitution will work. Use hiveconf when you are executing script from file (-f option)
Working example (use your table instead of stack):
date_list=$(hive -S -e "select concat_ws('\',\'',collect_set(substr(dt,0,10))) from (select stack (2,'2017-01', '2017-02')as dt)s ;")
hive -e "select * from (select stack (2,'2017-01', '2017-02')as dt)s where dt in ('${date_list}');"
Returns:
OK
2017-01
2017-02
Time taken: 1.221 seconds, Fetched: 2 row(s)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…