内建函数
MaxCompute 常用内建函数使用问题
1. MaxCompute中,判断一个表名是不是存在该怎么写?
2. MaxCompute中,固定长度字符串,不足前面补零,这个有函数吗?
可以使用 string lpad(string a, int len, string b),LPAD 函数。 可以参考官方文档。
3. MaxCompute 支持 mapreduce 进行 mapjoin 开发吗?
在 SQL 中有 mapjoin,可以参考官方文档,如果使用 MapReduce 实现 mapjoin 可以参考开源。
4. MaxCompute 是否支持 MD5 函数?支持,MxCompute 可以通过内建函数和 UDF 来实现业务计算需求,常见的日期函数、数学函数、字符串函数等,MaxCompute都是支持的,可以参考官方文档。
5. MaxCompute支持将 2010/1/3 这种格式转成 2010-01-03 吗?
如果是 2010/01/03 这种格式的话可以使用 to_char(TO_DATE(‘2019/04/02’, ‘yyyy/mm/dd’), ‘yyyy-mm-dd’)去进行转换, 如果是 2010/1/3 就需要去编写 UDF 函数去实现日期的转换。 更多日期函数请参考官方文档。
6. 请问 MySQL 中 IFNULL 对应到MaxCompute 中的函数是什么?
NVL,MaxCompute 中有内建函数可以使用,与 MySQL 和 Oracle 有对应的函数。可以参考官方文档。
7. 如何将 UNIX 时间转换为 MaxCompute 所需日期?
使用 MaxCompute 中的内建函数 FROM_UNIXTIME。此函数是将数字型的 UNIX 时间日期值 unixtime 转为日期值。 可参考官方文档。
8. 使用 MaxCompute 内建日期函 DATEPART 时报错:
FAILED:ODPS-0130121:[1,50] Invalid type STRING of argument 1 for function datepart, expect DATETIME。如何解决?
打开2.0 数据类型 odps.sql.type.system.odps2=true 时某些隐式类型转换会被禁用,包括 STRING-> BIGINT,STRING->DATETIME,DOUBLE->BIGINT,DECIMAL->DOUBLE,DECIMAL->BIGINT 都是有精度损失或者报错的风险。这种情况可以通过 cast 函数做强制转换的方式来解决或者关掉新类型flag。
例如:select datepart(cast('2019-12-02 00:00:30' as datetime),'yyyy'); set odps.sql.type.syste m.odps2=false;
9. MaxCompute表如何设置自增序列?
可以使用 ROW_NUMBER 函数去实现。例如:select ROW_NUMBER() OVER(),* from tablename;
10. 在 MaxCompute 中如何获取系统当前时间?
可以使用 MaxCompute 内建函数 GETDATE,可参考官方文档日期函数查看函数说明。
11. 使用日期函数 YEAR、QUARTER、MONTH、DAY 时报错信息如下:FAILED: ODPS-0130071:[1,8] Semantic analysis exception function or view 'year' cannot be resolved
YEAR、QUARTER、MONTH、DAY 为 MaxCompute2.0 扩展函数,如果用到的这些函数时,在使用新函数的 SQL 前,需要加一个 set 语句。
set odps.sql.type.system.odps2 = true; --开启新类型。示例:set odps.sql.type.system.odps2 = true;select year('2020-01-10 12:30:00') ;--返回 2020
12. MaxCompute中 string 转 array 有啥好的方法没?可以使用 from_json 函数。可以参考官方文档。
>>快来点击免费下载《阿里云MaxCompute百问百答》了解更多详情!<<