如何在BigQuery中编写SQL为表添加MAX(OrderDate)计算字段
BigQuery 实现新增全局最大订单日期字段方案
分两种常见场景提供实现代码:
场景1:仅查询时返回MaxOrderDate,不修改原表结构
直接用窗口函数计算全表最大OrderDate,查询结果会自动带出该字段,不会改动原表数据:
SELECT Id, Customer, OrderDate, MAX(OrderDate) OVER () AS MaxOrderDate FROM `你的项目ID.你的数据集ID.你的表名`
说明:OVER() 不加分区规则时,会计算整个结果集的最大值,每行都会返回全表统一的最大OrderDate。
场景2:实际给原表新增MaxOrderDate字段并回填值
分两步操作:
步骤1:给原表新增MaxOrderDate字段
ALTER TABLE `你的项目ID.你的数据集ID.你的表名` ADD COLUMN MaxOrderDate DATE;
步骤2:全表回填该字段值为全表最大OrderDate
UPDATE `你的项目ID.你的数据集ID.你的表名` SET MaxOrderDate = (SELECT MAX(OrderDate) FROM `你的项目ID.你的数据集ID.你的表名`) WHERE 1=1 -- 匹配所有行执行更新
注意:如果你的表数据量较大,全表UPDATE会产生对应的扫描、写入成本,操作前建议先备份原表,或先取小批量数据验证逻辑正确性。
内容的提问来源于stack exchange,提问作者Davout
相关产品推荐
相关产品推荐

