当前位置:主页 > 查看内容

MaxCompute非事务表如何更新数据

发布时间:2021-05-20 00:00| 位朋友查看

简介:背景 对于大数据中的大多数存储格式 支持随机更新非常复杂。它需要扫描大型文件 MaxCompute推出了最新的功能Transactional表可以支持update和delete语句 但是update和delete功能不适用于高频更新、删除数据或实时写入目标表场景 同时对于非Transactional表无……
背景

对于大数据中的大多数存储格式 支持随机更新非常复杂。它需要扫描大型文件 MaxCompute推出了最新的功能Transactional表可以支持update和delete语句 但是update和delete功能不适用于高频更新、删除数据或实时写入目标表场景 同时对于非Transactional表无法执行update和delete。本文主要讲解如何通过insert overwrite更新数据。



1.建表插入数据
create table update_table(ID int,
 tranValue string,
 last_update_user string) PARTITIONED by(dt STRING ) LIFECYCLE 1;
INSERT INTO update_table PARTITION (dt 20210510 ) VALUES
(1, value_01 , creation ),
(2, value_02 , creation ),
(3, value_03 , creation ),
(4, value_04 , creation ),
(5, value_05 , creation ),
(6, value_06 , creation ),
(7, value_07 , creation ),
(8, value_08 , creation ),
(9, value_09 , creation ),
(10, value_10 , creation );
2.更新一条数据

当id是1的时候更新成value_011

--更新一条数据
INSERT OVERWRITE TABLE update_table PARTITION( dt)
SELECT id
 ,CASE WHEN id 1 THEN value_011 
 ELSE TranValue 
 END TranValue
 ,last_update_user
FROM update_table
WHERE dt 20210510 
;
3.更新多条数据

根据增量表更新,首先创建增量表插入数据

create table update_table_inc(ID int,
 TranValue string,
 last_update_user string) LIFECYCLE 1;
INSERT INTO update_table_inc VALUES 
(5, value_11 , creation ),
(6, NULL, 20170410 ),
(7, value22 , 20170413 );

id是5和7更新TranValue 由于6的TranValue是null不更新

INSERT OVERWRITE TABLE update_table PARTITION( dt)
SELECT a.id
 ,CASE WHEN a.id b.id and b.TranValue is not null THEN b.TranValue 
 ELSE a.TranValue 
 END TranValue
 ,CASE WHEN a.id b.id and b.TranValue is not null THEN b.last_update_user 
 ELSE a.last_update_user 
 END last_update_user
FROM update_table a
LEFT JOIN update_table_inc b
ON a.id b.id
WHERE a.dt 20210510 
;
4.删除数据
--删除数据
INSERT OVERWRITE TABLE update_table PARTITION( dt)
SELECT *
FROM update_table
WHERE dt 20210510 and id ! 4
;


大家如果对MaxCompute有更多咨询或者建议 欢迎扫码加入 MaxCompute开发者社区钉钉群 或点击链接 申请加入。

image.png


本文转自网络,原文链接:https://developer.aliyun.com/article/784216
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐