我的分区看起来像这样
event_year=2019/event_week=37/event_date=2019-09-10
event_year=2019/event_week=42/event_date=2019-10-13
event_year=2019/event_week=8/event_date=2019-02-20
event_year=2020/event_week=24/event_date=2020-06-15
像这样有1500个分区,如何一次性删除所有分区?
它没有在任何地方记录,但有时在 athena 中,您可以使用
删除所有分区ALTER TABLE table_name DROP PARTITION (not_a_column=NULL)
如果您有一个在多个维度上分区的表,这似乎是只能指定一个分区的副作用。
如果上述方法不起作用,那么我会转而使用
awswrangler
python 库 https://aws-sdk-pandas.readthedocs.io/en/stable/stubs/awswrangler.catalog.delete_partitions.html
对我来说这个选择
DROP PARTITION (not_a_column=NULL)
过去曾经工作过。我必须找到一种新的方法来做到这一点。我使用了以下查询:
SELECT * FROM my_db."my_table$partitions"
然后我使用一些代码来迭代结果并找到第一个分区的唯一值并构建以下sql:
ALTER TABLE my_db.my_table DROP
PARTITION (name='value1'),
PARTITION (name='value2'),
...
它适用于 int / string 类型,也适用于具有多个分区的表