MAX_PT

返回分区表的一级分区中有数据的分区的最大值,按字母排序,且读取该分区下对应的数据。

注意事项

  • 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是分区表,该表对应的分区为2012090120120902,且都有数据。则以下语句中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函数属于其他函数,更多其他业务场景的函数请参见其他函数