问题描述
我有一个很大的事实表,其中包含按年和月(yyyymm)划分的一个分区,我需要删除一个月中的所有数据,并且我想删除并重新创建该分区以使我的工作更加轻松。我的表有+ 200kk行,并且拖放分区更有意义。
我阅读了这篇Microsoft's
文章Load new data into partitions that contain data in one step,但不清楚如何删除分区并重新创建另一个空分区以加载新数据。
有没有这样做的策略?
解决方法
按照我们在这种情况下使用的过程进行操作:
- 我们确定要更改的分区范围
- 接下来,我们对要加载到分区中的数据执行
CREAT TABLE ... AS SELECT...
。必须使用与目标表完全相同的结构来创建此表,并且该表的分区范围应与要更改的分区相同 - 此外,我们创建一个具有与所需分区相同的结构和分区范围的新表,但不包含任何数据
- 在接下来的步骤中,我们执行从目标表到空表的分区切换,然后执行从每个CTAS创建的表到目标表的分区切换。
- 最后但并非最不重要的一点是,我们删除了两个“单个分区”表(一个包含我们要切入的数据的表,而前一个空表现在包含了我们要切出的数据)。