返回分区表的一级分区中有数据的分区的最大值,按字母排序,且读取该分区下对应的数据。
注意事项
MAX_PT
函数也可以使用标准SQL实现,SELECT * FROM table WHERE pt=MAX_PT("table");
可以改写为SELECT * FROM table WHERE pt = (SELECT MAX(pt) FROM table);
。说明MaxCompute未提供
MIN_PT
函数。如果您需要获取分区表中有数据的最小分区,无法使用SQL语句SELECT * FROM table WHERE pt=MIN_PT("table");
实现与MAX_PT
函数类似的功能,但可以使用标准SQL语句SELECT * FROM table WHERE pt= (SELECT MIN(pt) FROM table);
实现相同的效果。若表中所有分区数据均为空,则
MAX_PT
函数将执行失败,请确保至少有一个分区数据不为空。OSS外部表同样支持MAX_PT函数,行为与内部表一致。
命令格式
MAX_PT(<table_full_name>)
参数说明
table_full_name:必填。STRING类型。指定表名。必须对表有读权限。
返回值说明
返回最大的一级分区的值。
说明
如果仅通过ALTER TABLE
的方式新建了一个分区,而该分区中并不存在任何数据,则该分区不会作为返回值。
使用示例
示例1:例如tbl是分区表,该表对应的分区为20120901和20120902,且都有数据。则以下语句中
MAX_PT
返回值为‘20120902’
。MaxCompute SQL语句会读出pt=‘20120902’
分区下的数据。命令示例如下。SELECT * FROM tbl WHERE pt= MAX_PT('tbl'); --等效于如下语句。 SELECT * FROM tbl WHERE pt= (SELECT MAX(pt) FROM tbl);
示例2:在多级分区场景,使用标准SQL实现获取最大分区下的数据。命令示例如下。
SELECT * FROM table WHERE pt1 = (SELECT MAX(pt1) FROM table) AND pt2 = (SELECT MAX(pt2) FROM table WHERE pt1= (SELECT MAX(pt1) FROM table));
相关函数
MAX_PT函数属于其他函数,更多其他业务场景的函数请参见其他函数。
该文章对您有帮助吗?