免费下载模板的网站有哪些,贺兰网站建设,ps教程自学网免费,网站特殊字体简介#xff1a; 本文主要讲解如何通过insert overwrite更新数据
背景
对于大数据中的大多数存储格式#xff0c;支持随机更新非常复杂。它需要扫描大型文件#xff0c;MaxCompute推出了最新的功能Transactional表可以支持update和delete语句#xff0c;但是update和dele…简介 本文主要讲解如何通过insert overwrite更新数据
背景
对于大数据中的大多数存储格式支持随机更新非常复杂。它需要扫描大型文件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 (dt20210510) 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 id1 THEN value_011 ELSE TranValue END TranValue,last_update_user,dt
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.idb.id and b.TranValue is not null THEN b.TranValue ELSE a.TranValue END TranValue,CASE WHEN a.idb.id and b.TranValue is not null THEN b.last_update_user ELSE a.last_update_user END last_update_user,dt
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
;
原文链接 本文为阿里云原创内容未经允许不得转载。