全部產品
Search
文件中心

MaxCompute:MAX_PT

更新時間:Oct 01, 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函數屬於其他函數,更多其他業務情境的函數請參見其他函數