Google BigQuery标准SQL - IN子句在BigQuery中工作但不是命令行

时间:2018-06-18 03:04:04

标签: sql google-bigquery standard-sql

我有一个标准的SQL查询,我试图在bq命令行工具中运行。查询在Google BigQuery网络应用程序(即www.bigquery.cloud.google.com)中完美执行,但在使用bq命令行工具时则无法执行。

我在网络应用中添加的查询是:

SELECT EXTRACT(HOUR FROM start_date) AS ride_hour, COUNT(*) AS count_rides FROM `aerobic-mile-205223.bike_trip_data.bike_trip_weekdays` WHERE ((weekday_name_abbreviated IN ('Mon', 'Tue', 'Wed', 'Thu', 'Fri')) AND (EXTRACT(HOUR FROM start_date) <= 12)) GROUP BY ride_hour ORDER BY count_rides DESC (“使用旧版SQL”标志设置为False)

使用命令行工具时,语法为:

bq query --use_legacy_sql=false 'SELECT EXTRACT(HOUR FROM start_date) AS ride_hour, COUNT(*) AS count_rides FROM `aerobic-mile-205223.bike_trip_data.bike_trip_weekdays` WHERE ((weekday_name_abbreviated IN ('Mon', 'Tue', 'Wed', 'Thu', 'Fri')) AND (EXTRACT(HOUR FROM start_date) <= 12)) GROUP BY ride_hour ORDER BY count_rides DESC'

当我在命令行中运行它时,我收到错误:

  

查询字符串出错:处理作业时出错'aerobic-mile-205223:bqjob_r6cad99b97a68c167_0000016410bbe9d9_1':无法识别的名称:Mon [1:176]

有关为什么IN子句在Web应用程序中而不是在命令行中正确执行的任何见解?有没有有效的替代方案?提前谢谢!

1 个答案:

答案 0 :(得分:1)

尝试以下

bq query --use_legacy_sql=false "SELECT EXTRACT(HOUR FROM start_date) AS ride_hour, COUNT(*) AS count_rides FROM \`aerobic-mile-205223.bike_trip_data.bike_trip_weekdays\` WHERE ((weekday_name_abbreviated IN ('Mon', 'Tue', 'Wed', 'Thu', 'Fri')) AND (EXTRACT(HOUR FROM start_date) <= 12)) GROUP BY ride_hour ORDER BY count_rides DESC"