【问题标题】:Why does WHERE work in Web UI but not in gsutil?为什么 WHERE 在 Web UI 中有效,但在 gsutil 中无效?
【发布时间】:2018-09-01 10:18:26
【问题描述】:

当我使用bigquery web ui 查询表时,以下工作:

select * from my_table where record_datetime > '2017-01-01 00:00:00' limit 10

但是当我使用bq 运行相同的命令时,它会中断:

bq query  --use_legacy_sql=false select * FROM `mlp-1385.data.historical_bk`  where record_datetime > '2017-01-01 00:00:00' limit 10

我得到了错误:

Error in query string: Error processing job
'mlp-1385:bqjob_XXXXXXXX': WHERE clause should return
WHERE clause should return
type BOOL, but returns FLOAT64

当我删除 where 子句时,一切都在 webui 和 gsutil 中运行。

如何修复我的命令行查询?

【问题讨论】:

    标签: google-bigquery gsutil


    【解决方案1】:

    在 google 的 gsutil 中运行查询时,您必须使用 ^ 运算符转义 <>,否则命令行会将它们视为重定向。

    例如,< 变为 ^<> 变为 ^>

    所以我的命令行命令应该是:

    bq query  --use_legacy_sql=false select * FROM `mlp-1385.data.historical_bk`  where record_datetime ^> '2017-01-01 00:00:00' limit 10
    

    【讨论】:

    • 您还可以通过管道从文件中输入输入,这通常是一种更好的方法,因此您无需担心转义。 bq query --use_legacy_sql=false < my_query.sql
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2015-09-12
    • 2011-07-19
    • 2014-11-13
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多