我正在尝试将日期列表作为参数传递给配置单元查询。
# !/bin/bash
echo "Executing the hive query - Get distinct dates"
var=`hive -S -e "select distinct substr(Transaction_date,0,10) from test_dev_db.TransactionUpdateTable;"`
echo $var
echo "Executing the hive query - Get the parition data"
hive -hiveconf paritionvalue=$var -e 'SELECT Product FROM test_dev_db.TransactionMainHistoryTable where tran_date in("${hiveconf:paritionvalue}");'
echo "Hive query - ends"
输出为:
Executing the hive query - Get distinct dates
2009-02-01 2009-04-01
Executing the hive query - Get the parition data
Logging initialized using configuration in file:/hive/conf/hive-log4j.properties
OK
Product1
Product1
Product1
Product1
Product1
Product1
Time taken: 0.523 seconds, Fetched: 6 row(s)
Hive query - ends
它只把第一次约会作为输入。我想通过我的日期('2009-02-01','2009-04-01')note:transactionmainhistorytable is 在字符串类型的事务日期列上分区。
1条答案
按热度按时间deyfvvtc1#
使用收集不同值的数组
collect_set
并用分隔符连接它','
. 这将生成不带外引号的列表2009-02-01','2009-04-01
在第二个脚本中加上外引号'
另外,也可以在第一个查询中添加它们。在内联sql(-e选项)中执行时,不需要传递hiveconf变量,直接shell变量替换就可以了。从文件执行脚本时使用hiveconf(-f选项)工作示例:
退货:
好 啊