我有一个标准的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应用程序中而不是在命令行中正确执行的任何见解?有没有有效的替代方案?提前谢谢!
答案 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"