BigQuery UPDATE语句SET子句出现‘未识别名称’问题排查求助
问题原因及解决方案
BigQuery的UPDATE语句仅支持修改已存在列的数值,无法直接新增列。你遇到的「Unrecognized name: start_geo_concat」报错,本质是目标表中还不存在这个列,UPDATE无法识别它。之前在另一张表成功,大概率是那张表已提前创建该列,或是用了CREATE TABLE ... AS SELECT(CTAS)这类能直接生成新列的语法,而非UPDATE。
解决步骤
方法一:先新增列再更新值
- 用
ALTER TABLE给目标表添加start_geo_concat列,指定匹配CONCAT返回结果的STRING类型:
ALTER TABLE `red-freedom-357915.CyclisticBikeShare.BikeGeoData` ADD COLUMN start_geo_concat STRING;
- 再执行原UPDATE语句填充值:
UPDATE `red-freedom-357915.CyclisticBikeShare.BikeGeoData` SET start_geo_concat = CONCAT(slat_round, " , ", slng_round) WHERE ride_id IS NOT NULL;
方法二:用CTAS语句一次性生成带新列的表
如果允许替换原表(或创建新表),可以用CREATE OR REPLACE TABLE直接生成包含新列的表,省去两步操作:
CREATE OR REPLACE TABLE `red-freedom-357915.CyclisticBikeShare.BikeGeoData` AS SELECT *, CONCAT(slat_round, " , ", slng_round) AS start_geo_concat FROM `red-freedom-357915.CyclisticBikeShare.BikeGeoData` -- 若需保留所有行,删除下方WHERE条件 WHERE ride_id IS NOT NULL;
内容的提问来源于stack exchange,提问作者LeoLmx
相关产品推荐
相关产品推荐

