如何在BigQuery中获取数据表的最后更新记录
实现每个_id的最新更新记录查询(BigQuery SQL)
针对你的需求——获取每个_id对应的最后更新记录,排除旧版本数据,这里提供两种在BigQuery中可行的SQL实现方式:
方法一:使用ROW_NUMBER()窗口函数
通过子查询给每个_id组内的记录按更新时间倒序排名,再筛选排名第一的记录:
WITH ranked_records AS ( SELECT _id, hours, dateUpdated, -- 按_id分组,dateUpdated倒序排序,最新记录排第1 ROW_NUMBER() OVER (PARTITION BY _id ORDER BY dateUpdated DESC) AS rn FROM `你的项目ID.你的数据集ID.你的表名` -- 替换为实际的表路径 ) SELECT _id, hours, dateUpdated FROM ranked_records WHERE rn = 1;
方法二:使用QUALIFY子句(BigQuery简洁写法)
BigQuery支持QUALIFY子句,可以直接基于窗口函数的结果过滤数据,无需子查询:
SELECT _id, hours, dateUpdated FROM `你的项目ID.你的数据集ID.你的表名` -- 替换为实际的表路径 QUALIFY ROW_NUMBER() OVER (PARTITION BY _id ORDER BY dateUpdated DESC) = 1;
补充说明
- 如果同一
_id存在多条同一更新时间的记录,ROW_NUMBER()会随机保留一条;若需要保留所有同时间的记录,可将ROW_NUMBER()替换为RANK()或DENSE_RANK()。
内容的提问来源于stack exchange,提问作者user2570135
相关产品推荐
相关产品推荐

