我正在使用 Firebase Extension Stream Firestore to BigQuery 将数据导出到 BQ。 它工作得很好,我已经使用它好几年了。 但是,表大小开始变大,导致查询成本增加。 我有由此和 npx @firebaseextensions/fs-bq-schema-views 创建的下表:
mytable_schema_latest 表中的单个 SELECT 现在可以处理 3.2GB
我能想到的选项是
我希望选择选项 1 - 暂时删除旧行,因为这似乎是最简单的。 有推荐的方法或任何关于如何执行此操作的指南吗?
我只想删除在文档更新后的特定日期之前发生的旧历史更改。
在删除它们之前将它们复制到历史表中也可能是一个好主意,以防我将来需要它们。
要创建给定表的“备份”,您只需运行查询,然后使用 保存结果 >> BigQuery Table 即可保存到新表。现在您有了一个“备份”,如果出现问题,您可以从这个新表中恢复。
我认为以下 SQL 语句可能会为您删除“旧”行:
DELETE FROM your_dataset.your_table
WHERE STRUCT(document_id, timestamp) NOT IN (
SELECT AS STRUCT document_id, MAX(timestamp) AS timestamp
FROM your_dataset.your_table
GROUP BY document_id
)