パーティションテーブル内のデータを含む最大レベル 1 パーティションの名前を返し、このパーティションのデータを読み取ります。この関数は、パーティションをアルファベット順にソートすることで最大のパーティションを決定します。
使用上の注意
MAX_PT
関数が使用されている文の代わりに、標準 SQL 文を使用することもできます。たとえば、SELECT * FROM table WHERE pt = (SELECT MAX(pt) FROM table);
の代わりにSELECT * FROM table WHERE pt=MAX_PT("table");
を使用できます。説明MaxCompute は
MIN_PT
関数を提供していません。パーティションテーブル内でデータ量が最も少ないパーティションを取得する必要がある場合は、SQL 文SELECT * FROM table WHERE pt=MIN_PT("table");
を使用することはできません。代わりに、標準 SQL 文SELECT * FROM table WHERE pt= (SELECT MIN(pt) FROM table);
を使用して、MAX_PT
関数と同様の効果を得ることができます。テーブル内のすべてのパーティションが空の場合、
MAX_PT
関数は実行に失敗します。少なくとも 1 つのパーティションが空でないことを確認する必要があります。OSS 外部テーブルも
MAX_PT
関数をサポートしており、その動作は内部テーブルと一致します。
構文
MAX_PT(<table_full_name>)
パラメーター
table_full_name: 必須。STRING 型の値。このパラメーターは、テーブルの名前を指定します。テーブルに対する読み取り権限が必要です。
戻り値
最大レベル 1 パーティションの名前が返されます。
ALTER TABLE
文を使用してパーティションが作成され、そのパーティションにデータが含まれていない場合、このパーティションは返されません。
例
例 1: tbl テーブルはパーティションテーブルです。テーブル内のパーティションは 20120901 と 20120902 で、どちらもデータを含んでいます。次の文を実行すると、
MAX_PT
関数は'20120902'
を返し、MaxCompute SQL 文は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));
関連関数
詳細については、「その他の関数」をご参照ください。