ODPS SQL采用类似SQL的语法,适用于海量数据(TB级)但实时性要求不高的分布式处理场景。
前提条件
您在工作空间配置页面添加MaxCompute计算引擎实例后,当前页面才会显示MaxCompute目录。详情请参见创建并管理工作空间。背景信息
因为每个作业从前期准备到提交等阶段都需要花费较长时间,因此如果要求处理几千至数万笔事务的业务,您可以使用ODPS SQL顺利完成。ODPS SQL是主要面向吞吐量的OLAP应用,详情请参见与标准SQL的主要区别及解决方法。
使用限制
ODPS SQL节点的使用限制如下:
- ODPS SQL不支持单独使用set、use语句,必须和具体的SQL语句一起执行,示例如下。
set a=b; create table name(id string);
- ODPS SQL不支持关键字(set、use)语句后单独加注释,示例如下。
create table name(id string); set a=b; --注释 //ODPS SQL不支持在set语句后添加“--注释”。 create table name1(id string);
- ODPS SQL不支持在已完结的语句结尾加注释,示例如下。 说明 SQL语句后添加英文分号(;),表示语句已完结。
select * --注释 //“select *”语句未完结,因此“--注释”这个注释可以添加。 from dual;--注释 //“from dual;”语句已完结,因此“--注释”这个注释不支持添加。 show tables;
- 数据开发与调度运行的区别如下:
- 数据开发:合并当前任务代码内所有的关键字(set、use)语句,作为所有SQL的前置语句。
- 调度运行:按照顺序执行。
set a=b; create table name1(id string); set c=d; create table name2(id string);
运行结果如下表所示。执行SQL 数据开发 调度运行 第一条SQL语句 set a=b; set c=d; create table name1(id string);
set a=b; create table name1(id string);
第二条SQL语句 set a=b; set c=d; create table name2(id string);
set c=d; create table name2(id string);
- 调度参数配置必须是
key=value
的格式,且(=)前后不支持空格,示例如下。time={yyyymmdd hh:mm:ss} --错误 a =b --错误
- 如果设置bizdate、date等关键字作为调度参数变量,格式必须是yyyymmdd。如果需要其它格式,请使用其它变量名称,避免冲突,示例如下。
bizdate=201908 --错误,不支持。
- 数据开发需要查询结果,仅支持select和with起始的SQL语句,否则无结果输出。
- 执行多条SQL语句时,请用分号(;)分隔,且需要换行。
- 错误示例
create table1;create table2
- 正确示例
create table1; create table2;
- 错误示例
- MaxCompute 2.0扩展函数使用到新数据类型时,您需要在该函数的SQL语句前加
set odps.sql.type.system.odps2=true;
,并与SQL一起提交运行,以便正常使用新数据类型。 - SQL语句中添加注释时,不支持在注释中使用英文分号(;)。错误示例:
create table1; --创建表格table1;再创建表格table2 create table2;
- 使用ODPS SQL节点进行SQL任务开发时,SQL代码大小不能超过128KB,SQL命令条数不能超过200条。
操作步骤
- 进入数据开发页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的数据开发。
- 鼠标悬停至
图标,单击 。
您也可以找到相应的业务流程,右键单击MaxCompute,选择 。 - 在新建节点对话框中,输入节点名称,并选择目标文件夹。
- 单击提交。
- 在节点的编辑页面,编辑并运行代码。新建节点成功后,编写符合语法的ODPS SQL代码,SQL语法请参见SQL概述。说明 由于国际标准化组织发布的中国时区信息调整,通过DataWorks执行相关SQL时,日期显示某些时间段会存在时间差异:1900~1928年的日期时间差异5分52秒,1900年之前的日期时间差异9秒。DataWorks不允许节点代码中仅包含
set
语句。如果您需要运行SET语句,可以和其它SQL语句一起执行,如下所示。set odps.sql.allow.fullscan=true; select 1;
SET语句的详情请参见SET操作。
以创建一张表并向表中插入数据,查询结果为例,操作如下:
- 单击节点编辑区域右侧的调度配置,配置节点的调度属性。详情请参见配置基础属性。
- 提交节点。重要 您需要设置节点的重跑属性和依赖的上游节点,才可以提交节点。如果您使用的是标准模式的工作空间,提交成功后,请单击右上角的发布。具体操作请参见发布任务。
- 任务运维,详情请参见周期任务运维概述。