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