如何从Google BigQuery筛选最近7天数据并导出?SQL报错求助
解决Google BigQuery中导出最近7天数据的SQL问题
首先,你原SQL的错误核心是:聚合函数(比如MAX)不能直接放在WHERE子句中——WHERE用于过滤单条行级数据,而聚合函数是对多行数据做统计计算,两者执行逻辑的时机不匹配。
根据你的需求,分两种常见场景给出解决方案:
场景1:以当前系统日期为基准取最近7天数据
如果要获取包含今天在内的最近7天数据,用CURRENT_DATE()结合DATE_SUB计算时间范围即可:
SELECT * FROM log WHERE DATE >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
若不需要包含今天,将>=替换为>即可。
场景2:以表中DATE列的最大日期为基准取前7天数据
如果你原本用MAX(DATE)是想以表内最新日期为起点往前推7天,可以通过子查询先获取最大日期,再做过滤:
SELECT * FROM log WHERE DATE >= DATE_SUB((SELECT MAX(DATE) FROM log), INTERVAL 7 DAY)
也可以用更简洁的直接加减写法:
SELECT * FROM log WHERE DATE >= (SELECT MAX(DATE) FROM log) - INTERVAL 7 DAY
补充说明
- 若你的日期列是
DATETIME或TIMESTAMP类型,需要先转换为DATE类型再比较,示例:
SELECT * FROM log WHERE DATE(timestamp_column) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
内容的提问来源于stack exchange,提问作者Simon Kim
相关产品推荐
相关产品推荐

