全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:MAX_PT

更新时间:Sep 30, 2024

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

注意事项

  • 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函数属于其他函数,更多其他业务场景的函数请参见其他函数