【发布时间】:2021-11-15 11:46:01
【问题描述】:
我有一个 BQ 表,其中包含相同 ad_id 的重复(x2 次)行。
我想删除 ts > 120 分钟的旧行,其中存在具有相同 ad_id 的新行(架构包含 timestamp, ad_id, value. But there is not rowId)。
这是我的尝试,有更好的方法吗?
DELETE FROM {table_full_name} o
WHERE timestamp < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 120 MINUTE) AND timestamp in (
SELECT MIN(timestamp)
FROM {table_full_name} i
WHERE i.ad_id=o.ad_id
GROUP BY ad_id)
数据示例:
`ad-id` | `ts` | `value` |
`1` | Sep-1-2021 12:01 | `Scanned` |
`2` | Sep-1-2021 12:02 | `Error` |
`1` | Sep-1-2021 12:03 | `Removed` |
我想把它清理成:
`ad-id` | `ts` | `value` |
`2` | Sep-1-2021 12:02 | `Error` |
`1` | Sep-1-2021 12:03 | `Removed` |
我看到了这个post,但是 BQ 不支持 row-id 的自动递增。
我看到了这个post。但是如何在没有 ts 间隔的情况下修改它(因为它是未知的)。
【问题讨论】:
-
请详细说明问题。附上数据样本以在什么条件下删除。
-
解决了我的问题。
-
嗨,OP。让我们知道答案是否有帮助。如果它有用,请考虑支持它。如果它回答了你的问题,那么请接受它。这样其他人就知道你得到了(足够的)帮助。
标签: sql google-bigquery timestamp sql-delete bq