sql - 在插入表之前删除数据
问题描述
我在 bigquery 中有一个表,其中包含一些按日期分段的基本数据(main_table)。然后我有一个新表,其中包含最近 5 天的数据(daily_transfer_table)。
我每天都希望从我的 main_table 中删除最后 5 天的数据,然后再从 daily_transfer_table 中插入最近 5 天的数据。
这样做的原因是最近的数据可能存在问题,所以我总是想刷新过去 5 天,而不仅仅是昨天。
我不确定这是否可以通过删除和插入来完成,或者我是否应该使用其他结构?
非常感谢您的帮助。
标记
解决方案
这里可能有几个选项,请考虑以下方法:
- 正如 OjtamOjtam 所说,执行合并。取决于有多少数据,虽然这可能比它的价值更多。
- 在插入之前执行截断,这将删除行但保持架构完整。这可能是最简单的方法,但如果架构更改可能不是您最好的方法。
- 将表作为一个整体删除并重新创建。与截断非常相似,最大的区别是您需要重新创建表。如果您认为架构可能会更改,这可能会有所帮助。
- 按摄取时间对表进行分区并不断插入,可能会使用数据过期策略。这将使您能够非常轻松地查询表,只需根据分区日期进行过滤,并允许您的数据过期策略清除旧数据。同样,这会受到模式演变的影响,但对您来说可能非常有效。
一些有用的链接:
推荐阅读
- javascript - 如何在 res.download 选项中提及文件大小
- android - 更新 android 应用程序的包名称
- java - Java中的多个字符
- xamarin.forms - Xamarin.Forms 编译绑定生成错误
- azure-ad-b2c - 避免在登录后针对联合身份提供者验证会话
- data-structures - 反转时间复杂度 O(1) 的链表
- sdn - Ryu SDN 多路径
- python - Python 。唯一订购商品列表
- javascript - 如何在 Google Earth Engine 中累积 CHIRPS 每日提供的每日降雨量?
- sql - 按组计算唯一值的数量