BigQuery中如何将查询生成的trip_duration列添加至原表
解决方法(针对BigQuery环境)
你之前的问题在于只做了一半操作:要么只加了空列没填充数据,要么用错了INSERT(INSERT是新增行而非给现有行填充列值)。针对你的需求,提供两种可行方案:
方案一:直接修改原表(两步走)
- 先给原表新增空的
trip_duration列
ALTER TABLE `coursera-practice-356200.Cyclistic_data.cycledata_202202-202301` ADD COLUMN trip_duration INT64;
这里选INT64是因为TIMESTAMP_DIFF返回的是整数分钟数,匹配BigQuery的整数类型。
- 填充计算好的时长到新列
UPDATE `coursera-practice-356200.Cyclistic_data.cycledata_202202-202301` SET trip_duration = TIMESTAMP_DIFF(ended_at, started_at, MINUTE);
⚠️ 注意:BigQuery的UPDATE会扫描全表,如果你的数据量很大,要留意执行成本和耗时。
方案二:创建带新列的新表(更安全)
如果不想改动原表数据,推荐直接生成包含trip_duration的新表,避免误操作:
CREATE TABLE `coursera-practice-356200.Cyclistic_data.cycledata_with_duration` AS SELECT *, TIMESTAMP_DIFF(ended_at, started_at, MINUTE) AS trip_duration FROM `coursera-practice-356200.Cyclistic_data.cycledata_202202-202301`;
内容的提问来源于stack exchange,提问作者YellingYeti
相关产品推荐
相关产品推荐

