对于大数据中的大多数存储格式 支持随机更新非常复杂。它需要扫描大型文件 MaxCompute推出了最新的功能Transactional表可以支持update和delete语句 但是update和delete功能不适用于高频更新、删除数据或实时写入目标表场景 同时对于非Transactional表无法执行update和delete。本文主要讲解如何通过insert overwrite更新数据。
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开发者社区钉钉群 或点击链接 申请加入。
客户简介 深圳盒子信息科技有限公司成立于2011年,是国家高新技术企业、深圳市高...
发布会传送门 : https://yqh.aliyun.com/live/aiotfa 近日,阿里云AIoT春季产品...
1、智能语音点餐机解决方案方案架构 架构特点 基于达摩院特有的多模态交互技术 ...
怎么防御udp攻击?UDP Flood是日渐猖厥的流量型 ddos 攻击。常见的情况是利用大...
2020年7月9日,2020年世界人工智能大会(the World Artificial Intelligence Con...
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上所...
3月Techo Youth高校公开课Demo实操演练 【活动已结束】 3月Techo Youth高校公开...
在过去的一年中,云计算已经成为组织应对冠状病毒疫情对其业务不利影响的关键技...
MongoDB是一个基于分布式文件存储的数据库。 由C++语言编写。旨在为WEB应用提供...
中台有机衔接稳定的后台系统和灵活多变的前端业务场景 通过抽取后台系统的数据 ...