问题一:我现在想在大数据计算MaxCompute中drop掉A表的多个分区,但是要drop掉的A表的分区是B表有的分区, 比方说
alter table A drop if exists partition(A.ds IN (SELECT ds from B where ds >=202304)); 但是这个写法是错的,请问这种情况该怎么办?
问题二:MaxCompute中想删去A表中所有包含B 表中的DS 的分区,比方说B表有202303,202304,2023053个DS,A表就要删掉这3个,而我不确定B表有多少个DS,要自动取出来,然后把A表对应的DS给删掉,这种情况如何弄?
您好,MaxCompute 中不能删除 A 表的多个分区,但是要 drop 掉的 A 表的分区是 B 表有的分区。
如果您要删除 A 表的多个分区,可以使用以下语句:
DROP PARTITIONS (part1, part2) ON table;
如果您要删除 A 表的多个分区,但是要 drop 掉的 A 表的分区是 B 表有的分区,则需要先将 A 表和 B 表合并,然后再删除 A 表的分区。
以下是合并 A 表和 B 表的语句:
MERGE INTO table AS A USING table AS B ON (A.key = B.key)
WHEN MATCHED THEN
UPDATE SET
A.value = B.value
WHEN NOT MATCHED THEN
INSERT (A.key, A.value)
VALUES (B.key, B.value);
合并完成后,您就可以删除 A 表的分区了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。