BigQuery命令行 - 如何在查询字符串中使用参数?

时间:2015-11-12 19:10:45

标签: linux bash google-bigquery gcloud

我正在编写一个shell脚本,它涉及bq命令以查询现有表并将结果保存到目标表。

但是,由于我的脚本将定期运行,因此我有一个参数,用于查询应运行的日期。

例如,我的脚本如下所示:

DATE_FORMATTED=$(date +%Y%m%d)

bq query --destination_table=Desttables.abc_$DATE_FORMATTED "select hits_eventInfo_eventLabel from TABLE_DATE_RANGE([mydata.table_],TIMESTAMP($DATE_FORMATTED),TIMESTAMP($DATE_FORMATTED)) where customDimensions_index = 4"

我收到以下错误:

Error in query string: Error processing job 'pro-cn:bqjob_r5437894379_1': FROM clause with table wildcards matches no table

我怎样才能将变量$ DATE_FORMATTED传递给Bigquery的TABLE_DATE_RANGE函数以帮助执行我的查询?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可能缺少TIMESTAMP函数中$ DATE_FORMATTED值周围的单引号。没有引号,它将默认为EPOCH时间

试试 TIMESTAMP( '$ DATE_FORMATTED'),时间标记( '$ DATE_FORMATTED')

答案 1 :(得分:0)

使用双引号"" +单引号''。例如,在您的情况下:

TIMESTAMP("'$DATE_FORMATTED'")  

select "'$variable'" as dummy from your_table