You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery SQL:如何基于最大last_modified去除重复记录?

解决BigQuery保留最大last_modified记录的问题

你可以用BigQuery的QUALIFY子句来实现,不用依赖ROW_NUMBER()过滤,适合处理频繁出现的重复数据场景:

SELECT 
  id,
  publishedat AS post_date,
  lastmodifiedat AS last_modified,
  extaction_timestamp AS extraction_date
  -- 这里放你需要的其他字段
FROM [你的表名或数据源]
WHERE DATE(extaction_timestamp) = CURRENT_DATE()
QUALIFY MAX(lastmodifiedat) OVER (PARTITION BY id) = lastmodifiedat

原理说明

  • PARTITION BY id:按id分组,把相同id的记录归为一组
  • MAX(lastmodifiedat) OVER (...):计算每个id组内的最大lastmodifiedat值
  • QUALIFY:直接过滤出当前行lastmodifiedat等于组内最大值的记录,自动保留每个id对应的最新那条

你之前的写法问题在于用DISTINCT搭配聚合函数但没加GROUP BY,逻辑混乱导致无法精准筛选。如果你的其他字段(比如publishedat)在同一id下完全一致,也可以用GROUP BY写法:

SELECT 
  id,
  publishedat AS post_date,
  MAX(lastmodifiedat) AS last_modified,
  extaction_timestamp AS extraction_date
  -- 其他相同字段也要加到GROUP BY里
FROM [你的表名或数据源]
WHERE DATE(extaction_timestamp) = CURRENT_DATE()
GROUP BY id, publishedat, extaction_timestamp -- 所有非聚合字段都要分组

但QUALIFY的写法更灵活,哪怕后续其他字段出现差异,也能准确拿到对应最大lastmodifiedat的整行数据,更适配你源数据频繁重复的场景。

内容的提问来源于stack exchange,提问作者DataAnalytics_Rookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:32:17