You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery执行SQL报Cannot access field 2类型错误如何解决

问题原因

报错出在第5行的ROUND函数写法错误:你误将函数两个参数之间的英文逗号,写成了点.,导致BigQuery解析逻辑出错。
BigQuery执行到这段代码时,会把AVG(cast(tripduration as int64)/60).2识别为「从AVG函数返回的FLOAT64类型数值上访问名为2的结构体字段」,但FLOAT64是基础数值类型,不存在嵌套字段,因此抛出Cannot access field 2 on a value with type FLOAT64的错误。
你原本的逻辑是计算平均骑行时长(换算为分钟)后保留2位小数,ROUND函数的正确传参格式是ROUND(待计算数值, 保留小数位数),参数间必须用逗号分隔。
另外原代码还有一处兼容性问题:SELECT子句中用CONCAT拼接生成了别名为route的字段,但GROUP BY子句没有直接引用这个计算字段,部分SQL校验规则下会触发「非聚合字段不在GROUP BY中」的报错,建议同步调整。

修正后完整代码
SELECT  
  usertype,
  CONCAT(start_station_name, " to ", end_station_name) AS route,
  COUNT(*) as num_trips,
  ROUND(AVG(cast(tripduration as int64)/60), 2) AS avg_trip_duration_min
FROM
  `bigquery-public-data.new_york_citibike.citibike_trips` 
GROUP BY
  usertype, route
ORDER BY
  num_trips DESC
LIMIT 10
修正点说明
  • 将ROUND函数参数间的错误.替换为英文逗号,,符合函数传参语法,保留2位小数的逻辑可以正常执行
  • 给平均骑行时长的计算结果增加明确别名avg_trip_duration_min,避免查询结果出现无列名的字段
  • 调整GROUP BY子句为usertype, route,和SELECT中的非聚合字段完全对应,兼容所有SQL引擎的校验规则

内容的提问来源于stack exchange,提问作者Olamide Olumide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:45:47