开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

MaxCompute中drop掉A表的多个分区,但是要drop掉的A表的分区是B表有的分区?

问题一:我现在想在大数据计算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给删掉,这种情况如何弄?

展开
收起
天真无邪0928 2023-07-26 15:08:02 57 0
1 条回答
写回答
取消 提交回答
  • 您好,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 表的分区了。

    2023-09-26 11:43:18
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载
    大数据&AI实战派 第2期 立即下载