【发布时间】:2019-11-05 21:09:43
【问题描述】:
我的 Redshift 集群中有数据。当我重新运行作业时,我需要找到最好和最有效的方法来删除以前存储的数据。
我有这两列来确定以前的数据previous_key(对应于run_dt的列)和creat_ts(我们加载数据的时间)
到目前为止,我发现了两种方法,但它们不能有效地工作:
- 使用 sql DELETE 命令 - 可能会很慢,最终需要对表进行清理以回收存储空间并重新使用行
- 将表中的数据卸载到 S3 上的文件中,然后在过滤掉最大 clndr_key 的情况下重新加载表(截断和插入)。也不是很好,可能有风险。
请建议任何在 Redshift 集群上重新运行作业的好方法。 注意:分区功能不可用。
【问题讨论】:
-
删除/更新然后运行真空和分析有什么问题?桌子总是可用的吗?你在担心什么吗?请详细说明。
-
你能澄清一下你真正想要做什么吗?您只是想清除一列数据,还是尝试删除选择性行数据?
-
@johnRotenstein 我想根据加载日期删除选择性行。
-
@joscott 我们有大量数据,执行删除操作会很慢。这就是为什么我正在寻找可以有效删除数据的任何其他选项。是的,桌子总是可用的。
-
您能告诉我们更多有关您要删除的数据的信息吗?比如说,一整天的数据吗?表中存储了多少天的数据?
标签: python amazon-web-services pyspark bigdata amazon-redshift