【问题标题】:BigQuery Command Line - How to use parameters in the query string?BigQuery 命令行 - 如何在查询字符串中使用参数?
【发布时间】:2015-11-12 19:10:44
【问题描述】:

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

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

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

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 函数以帮助执行我的查询?

【问题讨论】:

  • 这里的参数扩展看起来是正确的(如果你的时间戳真的是 20151112 而不是实际的 POSIX 时间戳)。您确定错误是由于参数扩展引起的吗?在我看来不是这样。问题似乎是错误消息中所说的:“带有表通配符的 FROM 子句与表不匹配”。

标签: linux bash google-bigquery gcloud


【解决方案1】:

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

TIMESTAMP("'$DATE_FORMATTED'")  

select "'$variable'" as dummy from your_table

【讨论】:

    【解决方案2】:

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

    尝试:

    TIMESTAMP('$DATE_FORMATTED'),TIMESTAMP('$DATE_FORMATTED')
    

    【讨论】:

    • 我也尝试使用单引号 - 得到了同样的错误。
    • 还将破折号添加到您的字符串 DATE_FORMATTED=$(date +%Y-%m-%d)
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多