为啥 WHERE 在 Web UI 中有效,但在 gsutil 中无效?
Posted
技术标签:
【中文标题】为啥 WHERE 在 Web UI 中有效,但在 gsutil 中无效?【英文标题】: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
中运行。
如何修复我的命令行查询?
【问题讨论】:
【参考方案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
以上是关于为啥 WHERE 在 Web UI 中有效,但在 gsutil 中无效?的主要内容,如果未能解决你的问题,请参考以下文章
测试在 UI 中更新但在控制台中没有更新,为啥?谁能告诉为啥控制台不更新?
为啥 JPA 提交在应用程序中失败,但在 JUnit 中有效?
为啥在 User::first() 上调用方法有效,但 User::where(...) 无效?