返回分区表的一级分区中有数据的分区的最大值,按字母排序,且读取该分区下对应的数据。
注意事项
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('myproject.tbl'); --等效于如下语句。 select * from tbl where pt = (select max(pt) from myproject.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函数属于其他函数,更多其他业务场景的函数请参见其他函数。