【发布时间】:2021-10-11 19:49:38
【问题描述】:
我有一个在 BigQuery 中创建的表。
在该表中,我在字段中有一些占位符值。
然后我想我可以简单地更新占位符值,所以我写了一个小临时函数
CREATE TEMP FUNCTION getBoroughFromCoords(longitude FLOAT64, latitude FLOAT64 )
RETURNS STRING
AS ((SELECT CAST(UPPER(tz_loc.borough)as STRING) FROM `bigquery-public-data.new_york_taxi_trips.taxi_zone_geom` tz_loc WHERE (ST_DWithin(tz_loc.zone_geom, ST_GeogPoint(longitude, latitude),0)) )
);
并像这样sql select getBoroughFromCoords(-73.95908, 40.705246) 对其进行了测试,它返回了“BROOKLYN”——这很棒。
但是当我尝试更新一个值(并且我在这里专门针对单行进行测试)时,使用:
UPDATE `project-id.datasetid.collated_data`
SET NEIGHBORHOOD = (select getBoroughFromCoords(LONG, LAT))
WHERE collision_date = "2019-10-27" AND LAT = 40.705246 AND LONG = -73.95908
我收到错误“如果没有连接两侧的字段相等的条件,就不能使用 LEFT OUTER JOIN。”
我不明白为什么?我的意思是,这个功能是独立的,对吗?它只接受 2 个参数并返回一个字符串,那为什么突然要加入呢?
【问题讨论】:
标签: google-bigquery