返回分區表的一級分區中有資料的分區的最大值,按字母排序,且讀取該分區下對應的資料。
注意事項
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函數屬於其他函數,更多其他業務情境的函數請參見其他函數。