一、创建和查看表
运行客户端工具bin目录下的MaxCompute客户端(Linux系统下运行./bin/odpscmd,Windows下运行./bin/odpscmd.bat)登录。首先确认进入的项目空间名称是否正确。项目空间可切换。
useqvanalyse;--使用分析库
本文中,需要创建lintt_bank_data_test用于存储业务数据。
CREATETABLEIFNOTEXISTSlintt_bank_data_test(ageBIGINTCOMMENT'年龄',job STRINGCOMMENT'工作类型',marital STRINGCOMMENT'婚否',education STRINGCOMMENT'教育程度',defaultSTRINGCOMMENT'是否有信用卡',housing STRINGCOMMENT'房贷',loan STRINGCOMMENT'贷款',contact STRINGCOMMENT'联系途径',monthSTRINGCOMMENT'月份',day_of_week STRINGCOMMENT'星期几',duration STRINGCOMMENT'持续时间',campaignBIGINTCOMMENT'本次活动联系的次数',pdaysDOUBLECOMMENT'与上一次联系的时间间隔',previousDOUBLECOMMENT'之前与客户联系的次数',poutcome STRINGCOMMENT'之前市场活动的结果',emp_var_rateDOUBLECOMMENT'就业变化速率',cons_price_idxDOUBLECOMMENT'消费者物价指数',cons_conf_idxDOUBLECOMMENT'消费者信心指数',euribor3mDOUBLECOMMENT'欧元存款利率',nr_employedDOUBLECOMMENT'职工人数',yBIGINTCOMMENT'是否有定期存款');
desc<table_name>;
将测试数据存放至本地路径为 /Users/lintt/Desktop/小影工作/odpscmd_public/test_data/。使用的测试数据为banking.txt,主要用于记录各人员的年龄、工作、房贷等信息,选取其中前三条数据展示如下。
44,blue-collar,married,basic.4y,unknown,yes,no,cellular,aug,thu,210,1,999,0,nonexistent,1.4,93.444,-36.1,4.963,5228.1,0
53,technician,married,unknown,no,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,no,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
第一部分创建查看表中已说明。
tunnel upload/Users/lintt/Desktop/小影工作/odpscmd_public/test_data/banking.txt lintt_bank_data_test;
其中,/Users/lintt/Desktop/小影工作/odpscmd_public/test_data/banking.txt是需要上传文件的本地路径。 lintt_bank_data_test为将要导入的表名称。
执行成功后,您可以使用如下语句查看表bank_data的数据条数,验证是否完成所有数据上传。
SELECTCOUNT(*)FROMlintt_bank_data_test;SELECT*FROMlintt_bank_data_test;
当数据导入到MaxCompute后,可以在MaxCompute上运行SQL来处理数据。
[1] 各类运算符。
[2] 通过DDL语句对表、分区以及视图进行管理。
[3] 通过SELECT语句查询表中的记录,通过WHERE语句过滤表中的记录。
[4] 通过INSERT语句插入数据、更新数据。
[5] 通过等值连接JOIN操作,支持两张表的关联,并支持多张小表的MapJOIN。
[6] 通过内置函数和自定义函数来进行计算。
[7] 正则表达式。
tunnel download result_table/Users/lintt/Desktop/小影工作/odpscmd_public/test_data/result.txt;
其中,result_table为需要导出的表,/Users/lintt/Desktop/小影工作/odpscmd_public/test_data/result.txt为导出后保存的路径及名称。更多Tunnel命令,请参考Tunnel命令参考。
限制项最大值/限制条件分类说明
表名长度128字节长度限制表名、列名中不能有特殊字符,以字母开头,且只能用英文小写字母(a-z)、英文大写字母(A-Z)、数字和下划线(_)。
注释长度1024字节长度限制长度不超过1024字节的有效字符串。
表的列定义1200个数量限制单表的列定义个数最多为1200个。
单表分区数60000个数量限制单表的分区个数最多为60000个。
表的分区层级6级数量限制在表中创建的分区层次不能超过6级。
屏显10000行数量限制SELECT语句屏显最多输出10000行。
INSERT目标个数256个数量限制MULTI-INSERT场景,目标表的数量限制为256个。
UNION ALL256个数量限制UNION ALL场景,最多允许合并256个表。
MAPJOIN128个数量限制MAPJOIN场景,最多允许连接128个小表。
MAPJOIN内存限制512 MB数量限制MAPJOIN场景,所有小表的内存不能超过512 MB。
窗口函数5个数量限制单个SELECT语句中最多允许存在5个窗口函数。
ptinsubq1000行数量限制子查询中存在分区列时,子查询的返回结果不能超过1000行。
SQL语句长度2 MB长度限制SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。
WHERE子句条件个数256个数量限制WHERE子句中的条件个数最大为256个。
列记录长度8 MB数量限制表中单个单元的最大长度为8 MB。
IN的参数个数1024数量限制IN的最大参数限制,例如in (1,2,3….,1024)。如果in(…)的参数过多,会影响编译性能。1024为建议值,不是限制值。
jobconf.json1 MB长度限制jobconf.json的大小为1 MB。当表包含的分区数量较多时,大小可能超过jobconf.json,超过1 MB。
视图不可写操作限制视图不支持写入,不支持INSERT操作。
列的数据类型不可修改操作限制不允许修改列的数据类型及列位置。
Java UDF函数不允许为ABSTRACT或者STATIC。操作限制Java UDF函数不能为ABSTRACT或STATIC。
最多查询分区个数10000个数量限制最多查询分区个数不能超过10000个。
SQL执行计划长度1 MB长度限制MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发FAILED: ODPS-0010000:System internal error - The Size of Plan is too large报错。
运算符说明
A=B如果A或B为NULL,返回NULL;如果A等于B,返回TRUE,否则返回FALSE。
A<>B如果A或B为NULL,返回NULL;如果A不等于B,返回TRUE,否则返回FALSE。
A<B如果A或B为NULL,返回NULL;如果A小于B,返回TRUE,否则返回FALSE。
A<=B如果A或B为NULL,返回NULL;如果A小于等于B,返回TRUE,否则返回FALSE。
A>B如果A或B为NULL,返回NULL;如果A大于B,返回TRUE,否则返回FALSE。
A>=B如果A或B为NULL,返回NULL;如果A大于等于B,返回TRUE,否则返FALSE。
A IS NULL如果A为NULL,返回TRUE,否则返回FALSE。
A IS NOT NULL如果A不为NULL,返回TRUE,否则返回FALSE。
A LIKE B如果A或B为NULL,返回NULL,A为字符串,B为要匹配的模式, 如果匹配,返回TRUE,否则返回FALSE。 (%)匹配任意多个字符。 ()匹配单个字符。 要匹配(%)或()要用转义符表示(‘%’)或(‘_’)。 ‘aaa’ like ‘a__’= TRUE ‘aaa’ like ‘a%’ = TRUE ‘aaa’ like ‘aab’= FALSE ‘a%b’ like ‘a\%b’= TRUE ‘axb’ like ‘a\%b’= FALSE
A RLIKE BA是字符串,B是字符串常量或者正则表达式。如果匹配成功,返回TRUE,否则返回FALSE。如果B为空串会报错退出。如果A或B为NULL,返回NULL。
A IN BB为一个集合,如果A在B中则返回TRUE,否则返回FALSE。 如果A为NULL,返回NULL。 如果B仅包含一个NULL元素,即A IN(NULL),则返回NULL。 B必须是常数集合且至少包含一个项,且所有项的数据类型需一致。 说明 如果B集合中包含NULL元素同时也包含其它元素,则将NULL视为与B集合中其它元素的数据类型一致。。
BETWEEN AND表达式为A [NOT] BETWEEN B AND C。如果A、B或C为空,则为空。如果A大于或等于B且小于或等于C,则为TRUE,否则为FALSE。
IS [NOT] DISTINCT FROM表达式A IS DISTINCT FROM B 相当于NOT(A<=>B);A IS NOT DISTINCT FROM B相当于A<=>B 。
在进行部分关系运算之前,您需要首先进行类型转换,否则可能返回NULL。如下举例,'2019-02-16 00:00:01’为DATETIME类型,而’2019-02-16’为STRING类型,在进行比较关系运算前需首先完成显示类型转换。
selectcast('2019-02-16 00:00:01'ASstring)>'2019-02-16';selectcast('2019-02-16 00:00:02'ASdatetime)>'2019-02-16 00:00:01';
运算符说明
A + B如果A或B为NULL,返回NULL;否则返回A + B的结果。
A – B如果A或B为NULL,返回NULL;否则返回A – B的结果。
A * B如果A或B为NULL,返回NULL;否则返回A * B的结果。
A / B如果A或B为NULL,返回NULL;否则返回A / B的结果。 说明 如果A和B为BIGINT类型,返回结果为DOUBLE类型。
A % B如果A或B为NULL,返回NULL;否则返回A模B的结果。
+A仍然返回A。
-A如果A为NULL,返回NULL,否则返回-A。
selectage+10,age-10,age%10,-age,age*age,age/10fromuser;
运算符说明
A & B返回A与B进行按位与的结果。例如1&2返回0,1&3返回1,NULL与任何值按位与都为NULL。A和B必须为BIGINT类型。
A | B返回A与B进行按位或的结果。例如1 |2返回3,1 |3返回3,NULL与任何值按位或都为NULL。A和B必须为BIGINT类型。
A || B字符串连接操作符。例如a || b || c 相当于concat(a, b, c)。
注:位运算符不支持隐式转换,只允许BIGINT类型。
运算符说明
A and BTRUE and TRUE=TRUE
TRUE and FALSE=FALSE
FALSE and TRUE=FALSE
FALSE and NULL=FALSE
NULL and FALSE=FALSE
TRUE and NULL=NULL
NULL and TRUE=NULL
NULL and NULL=NULL
A or BTRUE or TRUE=TRUE
TRUE or FALSE=TRUE
FALSE or TRUE=TRUE
FALSE or NULL=NULL
NULL or FALSE=NULL
TRUE or NULL=TRUE
NULL or TRUE=TRUE
NULL or NULL=NULL
NOT A如果A是NULL,返回NULL
如果A是TRUE,返回FALSE
如果A是FALSE,返回TRUE
注:逻辑运算符只允许BOOLEAN类型参与运算,不支持隐式类型转换。
网友评论