本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

MAX_PT

更新時間:2025-02-17 19:15

返回分區表的一級分區中有資料的分區的最大值,按字母排序,且讀取該分區下對應的資料。

注意事項

  • 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函數屬於其他函數,更多其他業務情境的函數請參見其他函數

  • 本頁導讀 (1, M)
  • 注意事項
  • 命令格式
  • 參數說明
  • 傳回值說明
  • 使用樣本
  • 相關函數
文檔反饋