我在“ part”列上有一个分区的配置单元表。该表具有两个分区值part ='good'和part ='bad'。
我需要将记录从“坏”分区移动到“好”分区,并覆盖“坏”分区以删除该移动的记录。更为复杂的是,我正在寻找一种在单个查询中执行此操作的方法,否则将很难处理异常。
我试图用多表插入来做到这一点,如下所示,在同一张表上有两个插入查询,
from tbl_partition
insert into tbl_partition partition (part='good') select a,b,c where a='a' and part='bad' -- this is where a record is moved from bad to good
insert overwrite table tbl_partition partition (part='bad') select a,b,c where part='bad' and a not in ('a'); -- Overwrite the bad partition excluding already moved record
但是上面的查询总是向其中插入,而不是一个插入而另一个覆盖!!
我什至尝试使用公用表表达式,并使用公用表同时插入到该表中,但是没有运气!
在单个查询中还有其他方法可以实现吗?还是在上述步骤中我做错了什么?
请注意,我正在使用配置单元1.2的HDP集群上执行此操作