阿里云-DataWorks- ODPS SQL开发

简介: 阿里云-DataWorks- ODPS SQL开发

ODPS SQL

用户最熟悉使用SQL对数据分析了。ODPS也支持SQL查询操作,而且语法类似于Hive 的HQL。
SQL操作的主要对象是表,数据量可在T级到P级。SQL中提供的功能有:
DLL:表、列、分区、视图、生命周期等操作 ;
DML:数据更新、多路输出以及动态分区输出 ;
Join:多表关联分析,支持 inner , left , right full join 以及mapjoin;
窗口函数:支持常见的窗口函数如avg,count 也支持滑动窗口;
UDF: 支持通过Java、Python编写UDF、UDAF和UDTF;

DataWorks数据开发增强了SQL编辑器功能

1、 实时语法检查,同时,支持MaxCompute 2.0语法,报错位置可以精确到行、列。
2、 在编辑器中显示具体的错误信息
3、自动补全 (关键字/project/表/字段)
在合适的地点出现关键字,project、表和字段;'from', 'xxx join', 'drop table/view', 'alter table / view' 提示表;’select', 'where', 'having', 'on', 'order by', 'partitioned by', 'distibute by', 'sort by', 'desc' 后 提示 相关表的字段;支持子查询的方式字段提示。

4、多种语言的语法高亮如 SQL、python、shell
新版编辑器功能范围支持SQL、python、Shell两种语言的语法高亮,以彩色标识出某种编程语言的关键。

5、快速定位问题,支持语法分析,为用户提示详细的报错信息。
实时语法检查,同时,支持MaxCompute 2.0语法,报错位置可以精确到行、列。
6、代码折叠
在写大量代码时往往会因为代码过多无法快速准确的找到哪些代码是一个功能模块,哪些代码是成对的标签块,这时,代码缩进折叠功能就显得非常重要了;点击-号,完成代码折叠。

ODPS-SQL开发过程中SQL优化

null
我们在进行=/<>/in/not in等判断时,null会不包含在这些判断条件中,所以在对null的处理时可以使用nvl或者coalesce函数对null进行默认转换。

select *
在数据开发或者线上任务时,尽可能提前对列进行剪裁,即使是全表字段都需要,也尽可能的把字段都写出来
(如果实在觉得麻烦,可以使用数据地图中表来生成select 功能)。
一、是减少了数据运算中不必要的数据读取,
二、是避免后期因为原表或者目标表字段增加,导致的任务报错。

multi insert
读取同一张表,但是因为粒度不同,需要插入多张表时,可以考虑使用 from () tab insert overwrite A insert overwrite B 的方式,减少资源的浪费。
当然,有些团队的数仓开发规范中会规定一个任务不能有两个目标表,具体情况可以视情况尽可能复用公共数据,如通过临时表的方式临时存储这部分逻辑。

分区限定

ODPS表大部分都是分区表,分区表又会根据业务规则分为增量表、全量表、快照表等。所以在做简单查询,或者数据探查时,我们一定要养成习惯先限定分区ds。经常会在jobhistory中看到很多好资源的任务都是因为分区限定不合理或者没有限定分区导致的。

limit的使用

临时查询或者数据探查时,养成习惯加上limit,会快速的查询出你想要的数据,且消耗更少的资源。

UDF函数的使用

尽可能把UDF的使用下沉到第一层子查询中,效率会有很大的提升。

行转列、列转行

collect_set 、lateral view函数可以实现行转列或者列转行的功能,好多大佬也都写过类似的ATA,可以参考。

窗口函数的使用

可以通过 row_number()/rank() over(partition by order by )的方式实现数据按照某个字段分组的排序,也可以通过 max(struct())的方式实现。

关联

左关联、内关联、右关联、left anti join 、left semi join等,可以实现不同情况下的多表关联。关联字段要确保字段类型的一致。

笛卡尔积的应用

有时会存在把一行数据翻N倍的诉求,这时候可以考虑自己创建一个维表,通过笛卡尔积操作;同时也可以通过LATERAL VIEW POSEXPLODE(split(REGEXP_REPLACE(space(end_num -start_num+1),' ','1,'),',')) t AS pos ,val的方式。

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
相关文章
|
数据采集 运维 DataWorks
DataWorks 千万级任务调度与全链路集成开发治理赋能智能驾驶技术突破
智能驾驶数据预处理面临数据孤岛、任务爆炸与开发运维一体化三大挑战。DataWorks提供一站式的解决方案,支持千万级任务调度、多源数据集成及全链路数据开发,助力智能驾驶模型数据处理与模型训练高效落地。
1289 0
|
存储 分布式计算 DataWorks
从MaxCompute到Milvus:通过DataWorks进行数据同步,实现海量数据高效相似性检索
如果您需要将存储在MaxCompute中的大规模结构化数据导入Milvus,以支持高效的向量检索和相似性分析,可以通过DataWorks的数据集成服务实现无缝同步。本文介绍如何利用DataWorks,快速完成从MaxCompute到Milvus的离线数据同步。
|
数据采集 SQL 人工智能
长文详解|DataWorks Data+AI一体化开发实战图谱
DataWorks是一站式智能大数据开发治理平台,内置阿里巴巴15年大数据建设方法论,深度适配阿里云MaxCompute、EMR、Hologres、Flink、PAI 等数十种大数据和AI计算服务,为数仓、数据湖、OpenLake湖仓一体数据架构提供智能化ETL开发、数据分析与主动式数据资产治理服务,助力“Data+AI”全生命周期的数据管理。
3923 5
|
SQL 容灾 关系型数据库
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。
1246 0
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
|
数据采集 机器学习/深度学习 DataWorks
DataWorks产品评测:大数据开发治理的深度体验
DataWorks产品评测:大数据开发治理的深度体验
790 1
|
SQL DataWorks 数据可视化
阿里云DataWorks评测:大数据开发治理平台的卓越表现
阿里云DataWorks是一款集数据集成、开发、分析与管理于一体的大数据平台,支持多种数据源无缝整合,提供可视化ETL工具和灵活的任务调度机制。其内置的安全体系和丰富的插件生态,确保了数据处理的高效性和安全性。通过实际测试,DataWorks展现了强大的计算能力和稳定性,适用于中小企业快速搭建稳定高效的BI系统。未来,DataWorks将继续优化功能,降低使用门槛,并推出更多灵活的定价方案,助力企业实现数据价值最大化。
|
分布式计算 DataWorks 搜索推荐
聊聊DataWorks这个大数据开发治理平台
聊聊DataWorks这个大数据开发治理平台
682 2
|
分布式计算 DataWorks 搜索推荐
DataWorks产品评测:大数据开发治理平台的最佳实践与体验
DataWorks是阿里云推出的一款大数据开发治理平台,集成了多种大数据引擎,支持数据集成、开发、分析和任务调度。本文通过用户画像分析的最佳实践,评测了DataWorks的功能和使用体验,并提出了优化建议。通过实践,DataWorks在数据整合、清洗及可视化方面表现出色,适合企业高效管理和分析数据。
753 0
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
767 14
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
1245 0