首页 > 解决方案 > 在插入表之前删除数据

问题描述

我在 bigquery 中有一个表,其中包含一些按日期分段的基本数据(main_table)。然后我有一个新表,其中包含最近 5 天的数据(daily_transfer_table)。

我每天都希望从我的 main_table 中删除最后 5 天的数据,然后再从 daily_transfer_table 中插入最近 5 天的数据。

这样做的原因是最近的数据可能存在问题,所以我总是想刷新过去 5 天,而不仅仅是昨天。

我不确定这是否可以通过删除和插入来完成,或者我是否应该使用其他结构?

非常感谢您的帮助。

标记

标签: sqlgoogle-bigquery

解决方案


这里可能有几个选项,请考虑以下方法:

  1. 正如 OjtamOjtam 所说,执行合并。取决于有多少数据,虽然这可能比它的价值更多。
  2. 在插入之前执行截断,这将删除行但保持架构完整。这可能是最简单的方法,但如果架构更改可能不是您最好的方法。
  3. 将表作为一个整体删除并重新创建。与截断非常相似,最大的区别是您需要重新创建表。如果您认为架构可能会更改,这可能会有所帮助。
  4. 按摄取时间对表进行分区并不断插入,可能会使用数据过期策略。这将使您能够非常轻松地查询表,只需根据分区日期进行过滤,并允许您的数据过期策略清除旧数据。同样,这会受到模式演变的影响,但对您来说可能非常有效。

一些有用的链接:


推荐阅读