优化(2)MaxCompute 实现增量数据推送(全量比对增量逻辑)

简介: MaxCompute(ODPS2.0) - 试用新的集合操作命令 EXCEPT & 增量识别

ODPS 2.0 支持了很多新的集合命令(专有云升级到3版本后陆续支持),简化了日常工作中求集合操作的繁琐程度。增加的SQL语法包括:UNOIN ALL、UNION DISTINCT并集,INTERSECT ALL、INTERSECT
DISTINCT交集,EXCEPT ALL、EXCEPT DISTINCT补集。
语法格式如下:

select_statement UNION ALL select_statement;
select_statement UNION [DISTINCT] select_statement;
select_statement INTERSECT ALL select_statement;
select_statement INTERSECT [DISTINCT] select_statement;
select_statement EXCEPT ALL select_statement;
select_statement EXCEPT [DISTINCT] select_statement;
select_statement MINUS ALL select_statement;
select_statement MINUS [DISTINCT] select_statement;

用途:分别求两个数据集的并集、交集以及求第二个数据集在第一个数据集中的补集。
参数说明:
• UNION: 求两个数据集的并集,即将两个数据集合并成一个数据集。
• INTERSECT:求两个数据集的交集。即输出两个数据集均包含的记录。
• EXCEPT: 求第二个数据集在第一个数据集中的补集。即输出第一个数据集包含而第二个数据集不
包含的记录。
• MINUS: 等同于EXCEPT。

具体语法参考:
https://help.aliyun.com/document_detail/73782.html?spm=5176.11065259.1996646101.searchclickresult.718d3520fmmOJ0

实际项目中有一个利用两日全量数据,比对出增量的需求(推送全量数据速度很慢,ADB/DRDS等产品数据量超过1亿,建议试用增量同步)。我按照旧的JOIN方法和新的集合方法做了下比对验证,试用了下新的集合命令EXCEPT ALL。
测试

-- 方法一:JOIN
-- other_columns 代表很多列
create table tmp_opcode1 as
select * from(
select uuid,other_columns,opcode2
from(
-- 今日新增+今日变化
select
 t1.uuid
,t1.other_columns
,case when t2.uuid is null then 'I' else 'U' end AS opcode2
  from            prject1.table1 t1
  left outer join prject1.table1 t2
    on t1.uuid=t2.uuid
   and t2.dt='20200730'
 where t1.dt='20200731'
   and(t2.uuid is null
    or coalesce(t1.other_columns,'')<>coalesce(t2.other_columns,''))

union all
-- 今日删除
select
 t2.uuid
,t2.other_columns
,'D' as opcode2
  from            prject1.table1 t2
  left outer join prject1.table1 t1
    on t1.uuid=t2.uuid
   and t1.dt='20200731'
 where t2.dt='20200730'
   and t1.uuid is null)t3)t4
;
Summary:
resource cost: cpu 13.37 Core * Min, memory 30.48 GB * Min
inputs:
prject1.table1/dt=20200730: 32530802 (946172216 bytes)
prject1.table1/dt=20200731: 32533538 (947161664 bytes)
outputs:
prject1.tmp_opcode1: 4506 (271632 bytes)
Job run time: 26.000
-- 方法二:集合
-- other_columns 代表很多列
create table  tmp_opcode2 as
select * from(
select t3.*
from(
-- 今日新增+今日变化
select uuid,other_columns,'I' as opcode2
from(
select uuid,other_columns
from prject1.table1
where dt = '20200731'

except all
select uuid,other_columns
from prject1.table1
where dt = '20200730')t

union all
-- 今日删除
select
 t2.uuid
,t2.other_columns
,'D' as opcode2
  from            prject1.table1 t2
  left outer join prject1.table1 t1
    on t1.uuid=t2.uuid
   and t1.dt='20200731'
 where t2.dt='20200730'
   and t1.uuid is null)t3)t4
;
Summary:
resource cost: cpu 35.92 Core * Min, memory 74.26 GB * Min
inputs:
prject1.table1/rfq=20200730: 32530802 (946172216 bytes)
prject1.table1/rfq=20200731: 32533538 (947161664 bytes)
outputs:
prject1.tmp_opcode2: 4506 (259416 bytes)
Job run time: 66.000

性能
集合的方法与JOIN的方法相比,在资源(1倍)使用和时间(1倍)上都有较多的劣势。建议实际使用JOIN方法。
结果
通过多种方法比对验证,两种方法的增量识别均正确,可以向下游提供增量数据。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
2月前
|
分布式计算 DataWorks IDE
MaxCompute数据问题之忽略脏数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
47 0
|
2月前
|
SQL 存储 分布式计算
MaxCompute问题之下载数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0
|
2月前
|
分布式计算 关系型数据库 MySQL
MaxCompute问题之数据归属分区如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
35 0
|
2月前
|
分布式计算 DataWorks BI
MaxCompute数据问题之运行报错如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 1
|
2月前
|
分布式计算 关系型数据库 数据库连接
MaxCompute数据问题之数据迁移如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
35 0
|
2月前
|
分布式计算 Cloud Native MaxCompute
MaxCompute数据问题之没有访问权限如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0
|
1天前
|
分布式计算 监控 调度
给技术新人的ODPS优化建议
数据开发基本都是从陌生到熟悉,但是写多了就会发现各种好用的工具/函数,也会发现各种坑,本文分享了作者从拿到数据到数据开发到数据监控的一些实操经验。
|
3天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
10天前
|
数据采集 搜索推荐 大数据
大数据中的人为数据
【4月更文挑战第11天】人为数据,源于人类活动,如在线行为和社交互动,是大数据的关键部分,用于理解人类行为、预测趋势和策略制定。数据具多样性、实时性和动态性,广泛应用于市场营销和社交媒体分析。然而,数据真实性、用户隐私和处理复杂性构成挑战。解决策略包括数据质量控制、采用先进技术、强化数据安全和培养专业人才,以充分发挥其潜力。
14 3
|
13天前
|
运维 供应链 大数据
数据之势丨从“看数”到“用数”,百年制造企业用大数据实现“降本增效”
目前,松下中国旗下的64家法人公司已经有21家加入了新的IT架构中,为松下集团在中国及东北亚地区节约了超过30%的总成本,减少了近50%的交付时间,同时,大幅降低了系统的故障率。

相关产品

  • 云原生大数据计算服务 MaxCompute