AWS Athena:删除日期范围之间的分区

sak*_*vas 4 amazon-web-services presto amazon-athena

我有一个基于日期的分区 athena 表,如下所示:

20190218
Run Code Online (Sandbox Code Playgroud)

我想删除去年创建的所有分区。

我尝试了以下查询,但没有奏效。

ALTER TABLE tblname DROP PARTITION (partition1 < '20181231');

ALTER TABLE tblname DROP PARTITION (partition1 > '20181010'), Partition (partition1 < '20181231');
Run Code Online (Sandbox Code Playgroud)

Pio*_*sen 5

根据https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.htmlALTER TABLE tblname DROP PARTITION采用分区规范,因此不允许使用范围。

在 Presto 中,您可以这样做DELETE FROM tblname WHERE ...,但DELETEAthena 也不支持。

由于这些原因,您需要利用一些外部解决方案。

例如:

  1. 列出/sf/answers/3417706141/中的文件
  2. 删除文件和包含目录
  3. 更新分区信息(https://docs.aws.amazon.com/athena/latest/ug/msck-repair-table.html应该会有所帮助)

  • 另请务必注意,“alter table drop partition”不会删除任何数据,只会删除分区元数据对象。删除文件是一项独立的操作,如果需要,可以按任何顺序完成。 (3认同)