Topik ini menjelaskan cara mengelola partisi untuk tabel eksternal OSS, mencakup memuat partisi, menambahkan partisi, menulis data ke partisi, menghapus partisi, serta menggunakan fitur Keyless Partition yang memungkinkan pembuatan path partisi tanpa menyertakan nama kunci partisi.
Kasus penggunaan
Saat membuat tabel eksternal OSS terpartisi, Anda juga harus memuat data partisinya.
Untuk mengurai struktur direktori OSS secara otomatis, mengidentifikasi partisi, dan menambahkan metadata partisi ke tabel eksternal OSS, lihat Load partitions (MSCK).
Untuk menambahkan metadata partisi secara manual ke tabel eksternal OSS, lihat Add partitions.
Untuk menulis data ke partisi dalam tabel eksternal OSS, lihat Menulis data ke partisi.
Untuk drop satu atau beberapa partisi dari tabel eksternal OSS, lihat Drop partitions.
Untuk menulis data ke path partisi OSS yang tidak menyertakan kunci partisi menggunakan tabel eksternal OSS, lihat Keyless Partition.
Untuk retrieve data dari maximum partition tabel eksternal OSS, lihat Use the MAX_PT function.
Load partitions (MSCK)
Skenario
Saat membuat tabel eksternal OSS terpartisi, Anda juga harus memuat data partisinya. MaxCompute secara otomatis menemukan partisi dengan mengurai struktur direktori OSS dan menambahkan metadata partisi ke tabel eksternal.
Perintah MSCK sesuai untuk operasi satu kali guna memuat semua partisi historis. MaxCompute secara otomatis menemukan dan menambahkan partisi ke tabel eksternal OSS berdasarkan direktori partisi yang ditentukan saat pembuatan tabel, sehingga menghilangkan kebutuhan untuk menambahkannya satu per satu.
Jika hanya beberapa partisi baru yang ditambahkan ke tabel yang sudah memiliki banyak partisi, menjalankan perintah MSCK berulang kali tidak efisien karena akan memindai seluruh direktori OSS berulang kali dan memicu pembaruan metadata, yang berdampak negatif pada performa. Untuk pembaruan partisi inkremental, disarankan untuk add partitions secara manual.
Sintaks
MSCK REPAIR TABLE <mc_oss_extable_name>;
MSCK REPAIR TABLE <mc_oss_extable_name> ADD PARTITIONS [WITH PROPERTIES (key:VALUE, key:VALUE ...)];Contoh
Bagian ini menggunakan tabel eksternal CSV terpartisi sebagai contoh. Perintah MSCK digunakan dengan cara yang sama untuk format tabel eksternal OSS lainnya.
Persiapkan data partisi
Masuk ke Konsol Object Storage Service (OSS).
Di bucket tersebut, buat direktori
Demo2. Di dalam direktori ini, buat subdirektori berdasarkan kolom partisidirection(direction=N,direction=NE,direction=S,direction=SW, dandirection=W), lalu unggah file data yang sesuai (vehicle1.csv, vehicle2.csv, vehicle3.csv, vehicle4.csv, dan vehicle5.csv) ke masing-masing subdirektori. Untuk informasi lebih lanjut, lihat Appendix: Prepare sample data.
Buat tabel eksternal OSS terpartisi
CREATE EXTERNAL TABLE IF NOT EXISTS mc_oss_csv_external2 ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitude DOUBLE, locationLongitude DOUBLE, recordTime STRING ) PARTITIONED BY ( direction STRING ) STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole' ) LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/<bucket>/Demo2/';Muat partisi
MSCK REPAIR TABLE mc_oss_csv_external2 ADD PARTITIONS;Kueri tabel eksternal OSS
SELECT * FROM mc_oss_csv_external2 WHERE direction='NE'; -- Hasil berikut dikembalikan: +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/15/2014 0:00 | NE | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+
Add partitions
Skenario
Jika tabel eksternal OSS merupakan tabel partisi, Anda harus melakukan operasi tambahan untuk memuat data partisinya. Untuk menambahkan informasi partisi secara manual, gunakan perintah ALTER TABLE ADD PARTITION.
Metode ini ideal untuk menambahkan partisi baru secara berkala setelah partisi historis dimuat. Dengan menambahkan partisi sebelum menulis data ke dalamnya, Anda memastikan tabel eksternal dapat langsung membaca data baru tanpa perlu langkah refresh metadata terpisah.
Sintaks
ALTER TABLE <mc_oss_extable_name>
ADD PARTITION (<col_name>=<col_value>)[
PARTITION (<col_name>=<col_value>)...][location URL];Nilai
col_namedancol_valueharus sesuai dengan nama direktori yang berisi file data partisi. Satu klausaADD PARTITIONbersesuaian dengan satu subdirektori, dan diperlukan beberapa klausaADD PARTITIONuntuk beberapa subdirektori OSS.Sebagai contoh, dalam struktur direktori OSS untuk file data partisi,
col_namebersesuaian dengandirection, dancol_valuebersesuaian denganN,NE,S,SW, atauW.Demo2/ ├── direction=N/ ├── direction=NE/ ├── direction=S/ ├── direction=SW/ └── direction=W/
Contoh
Bagian ini menggunakan tabel eksternal CSV terpartisi sebagai contoh. Metode penambahan partisi sama untuk format tabel eksternal OSS lainnya.
Persiapkan data partisi
Masuk ke Konsol Object Storage Service (OSS).
Di bucket tersebut, buat direktori
Demo2. Di dalam direktori ini, buat subdirektori berdasarkan kolom partisidirection(direction=N,direction=NE,direction=S,direction=SW, dandirection=W), lalu unggah file data yang sesuai (vehicle1.csv, vehicle2.csv, vehicle3.csv, vehicle4.csv, dan vehicle5.csv) ke masing-masing subdirektori. Untuk informasi lebih lanjut, lihat Appendix: Prepare sample data.
Buat tabel eksternal OSS terpartisi
CREATE EXTERNAL TABLE IF NOT EXISTS mc_oss_csv_external3 ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitude DOUBLE, locationLongitude DOUBLE, recordTime STRING ) PARTITIONED BY ( direction STRING ) STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole' ) LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/<bucket>/Demo2/';Tambahkan partisi
ALTER TABLE mc_oss_csv_external3 ADD PARTITION (direction='N') PARTITION (direction='NE') PARTITION (direction='S') PARTITION (direction='SW') PARTITION (direction='W');Kueri tabel eksternal OSS
SELECT * FROM mc_oss_csv_external3 WHERE direction='NE'; -- Hasil berikut dikembalikan: +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/15/2014 0:00 | NE | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+
Write data to partitions
Static partition write
Skenario
Gunakan operasi berikut untuk menulis data ke tabel eksternal OSS menggunakan partisi statis. Untuk informasi lebih lanjut, lihat Insert or overwrite data (INSERT INTO | INSERT OVERWRITE).
Sintaks
INSERT {INTO|OVERWRITE} TABLE <mc_oss_extable_name>
PARTITION (<pt_spec>) [(<col_name> [,<col_name> ...)]]
<select_statement> FROM <from_statement>;Contoh
Bagian ini menggunakan tabel eksternal CSV terpartisi sebagai contoh. Metode penulisan data sama untuk format tabel eksternal OSS lainnya.
Buat tabel eksternal OSS terpartisi
CREATE EXTERNAL TABLE IF NOT EXISTS mc_oss_csv_external5 ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitude DOUBLE, locationLongitude DOUBLE, recordTime STRING ) PARTITIONED BY ( direction STRING ) STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole' ) LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/<bucket>/mc_oss_csv_external5';Tulis data ke partisi statis
INSERT INTO mc_oss_csv_external5 PARTITION (direction='SW') VALUES (1, 14, 76, 1, 46.81006, -92.08174, '9/14/2014 0:10'); INSERT INTO mc_oss_csv_external5 PARTITION (direction='S') VALUES (1, 89, 76, 1, 46.81006, -92.08174, '9/14/2014 0:10');Verifikasi hasil
SET odps.sql.allow.fullscan=true; SELECT * FROM mc_oss_csv_external5; -- Hasil berikut dikembalikan: +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | 1 | 89 | 76 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:10 | S | | 1 | 14 | 76 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:10 | SW | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+
Dynamic partition write
Skenario
Gunakan operasi berikut untuk menulis data ke tabel eksternal OSS menggunakan partisi dinamis. Untuk informasi lebih lanjut, lihat Insert or overwrite data into dynamic partitions (DYNAMIC PARTITION).
Sintaks
INSERT {INTO|OVERWRITE} TABLE <table_name> PARTITION (<ptcol_name>[, <ptcol_name> ...])
<select_statement> FROM <from_statement>;Contoh
Bagian ini menggunakan tabel eksternal CSV terpartisi sebagai contoh. Metode penulisan data sama untuk format tabel eksternal OSS lainnya.
Persiapkan tabel uji
CREATE TABLE IF NOT EXISTS vehicle_test ( vehicleid INT, recordid INT, patientid INT, calls INT, locationlatitude DOUBLE, locationlongitude DOUBLE, recordtime STRING, direction STRING ); INSERT INTO vehicle_test VALUES (1, 1, 51, 1, 46.81006, -92.08174, '9/14/2014 0:00', 'S'); INSERT INTO vehicle_test VALUES (1, 2, 13, 1, 46.81006, -92.08174, '9/14/2014 0:00', 'NE'); INSERT INTO vehicle_test VALUES (1, 3, 48, 1, 46.81006, -92.08174, '9/14/2014 0:00', 'NE'); INSERT INTO vehicle_test VALUES (1, 4, 30, 1, 46.81006, -92.08174, '9/14/2014 0:00', 'W'); INSERT INTO vehicle_test VALUES (1, 5, 47, 1, 46.81006, -92.08174, '9/14/2014 0:00', 'S');Buat tabel eksternal OSS terpartisi
CREATE EXTERNAL TABLE IF NOT EXISTS mc_oss_csv_external6 ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitude DOUBLE, locationLongitude DOUBLE, recordTime STRING ) PARTITIONED BY ( direction STRING ) STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole' ) LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/<bucket>/mc_oss_csv_external6';Tulis data menggunakan partisi dinamis
INSERT INTO mc_oss_csv_external6 PARTITION(direction) SELECT * FROM vehicle_test;Verifikasi hasil
SET odps.sql.allow.fullscan=true; SELECT * FROM mc_oss_csv_external6; -- Hasil berikut dikembalikan: +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+ | 1 | 4 | 30 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | W | | 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 1 | 51 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | | 1 | 5 | 47 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | +-----------+----------+-----------+-------+------------------+-------------------+------------+-----------+
Drop partitions
Skenario
Anda dapat menghapus satu atau beberapa partisi dari tabel eksternal OSS terpartisi. Untuk informasi lebih lanjut, lihat Partition operations.
Sintaks
ALTER TABLE <mc_oss_extable_name> DROP [IF EXISTS] PARTITION <pt_spec>[, PARTITION <pt_spec>...];Contoh
Lihat daftar partisi tabel sampel
mc_oss_csv_external3dari contoh Add a partition.SHOW PARTITIONS mc_oss_csv_external3; -- Hasil berikut dikembalikan: direction=N direction=NE direction=S direction=SW direction=W OKDrop partisi
direction=Sdandirection=SW.ALTER TABLE mc_oss_csv_external3 DROP IF EXISTS PARTITION (direction = 'S'), PARTITION (direction = 'SW');Lihat kembali daftar partisi untuk memastikan bahwa partisi
direction=Sdandirection=SWtelah dihapus.SHOW PARTITIONS mc_oss_csv_external3; -- Hasil berikut dikembalikan: direction=N direction=NE direction=W OK
Keyless Partition
Skenario
Dalam skenario ini, saat menulis data ke tabel eksternal OSS terpartisi, direktori partisi OSS yang dihasilkan biasanya mencakup kunci dan nilai partisi (misalnya, dt=20250724). Jika Anda ingin menulis ke path partisi OSS yang tidak menyertakan kunci partisi, Anda dapat menggunakan fitur Keyless Partition.
Batasan
Jika Anda menentukan nilai tetap
valuesaat menulis data ke tabel eksternal menggunakan partisi dinamis, parameter Keyless Partition tidak berpengaruh. Direktori OSS yang dihasilkan menggunakan format<pt_col_name>=<pt_col_value>, dan Anda tidak dapat membaca data dari direktori tersebut. Contohnya,INSERT OVERWRITE ext_tb PARTITION(dt) VALUES(1, 'xxx','20250724'), (2, 'xxx','20250724').Fitur ini tidak didukung untuk tabel eksternal Paimon, Hudi, dan Delta Lake.
Sintaks
Tambahkan parameter TBLPROPERTIES saat membuat tabel eksternal. Berikut adalah contoh untuk tabel eksternal CSV.
CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'com.aliyun.odps.CsvStorageHandler'
[WITH serdeproperties (
['<property_name>'='<property_value>',...]
)]
LOCATION '<oss_location>'
TBLPROPERTIES('odps.external.output.partition.keys.omitted' = 'true'); -- Saat parameter ini bernilai true, direktori partisi OSS output tidak menyertakan kunci partisi.Contoh
Bagian ini menggunakan tabel eksternal CSV terpartisi sebagai contoh. Metodenya sama untuk format lainnya.
Buat tabel eksternal CSV terpartisi
CREATE EXTERNAL TABLE ext_csv_test03 ( id INT, name STRING ) PARTITIONED BY (dt STRING) STORED BY 'com.aliyun.odps.CsvStorageHandler' LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/<bucket>/keyless_partition/ext_csv_test03/' TBLPROPERTIES('odps.external.output.partition.keys.omitted' = 'true');Tulis data konstan ke partisi statis
INSERT INTO ext_csv_test03 PARTITION (dt='20250724') VALUES (1, 'aaa'), (2, 'bbb'), (3, 'ccc'); SELECT * FROM ext_csv_test03; -- Hasil berikut dikembalikan: +------+------+----------+ | id | name | dt | +------+------+----------+ | 1 | aaa | 20250724 | | 2 | bbb | 20250724 | | 3 | ccc | 20250724 | +------+------+----------+Direktori yang dihasilkan oleh OSS adalah sebagai berikut: direktori
20250724tidak berisi kunci partisidt=.ext_csv_test03/ └── 20250724/Tulis data menggunakan satu nilai partisi dinamis
Secara formal, ini merupakan penulisan partisi dinamis, tetapi karena data untuk kolom partisi dalam klausa
valueshanya memiliki satu nilai,'xxx', maka dalam logika MaxCompute dianggap sebagai penulisan partisi yang sebagian statis dan sebagian dinamis.INSERT OVERWRITE ext_csv_test03 PARTITION(dt) VALUES (1, 'xxx','20250724'), (2, 'xxx','20250724'); SELECT * FROM ext_csv_test03; -- Hasil berikut dikembalikan: -- Karena direktori partisi OSS yang dihasilkan berada dalam format yang tidak diharapkan, data yang baru dimasukkan tidak dapat dikueri. Hanya data dari penulisan statis pada Langkah 2 yang dikembalikan. +------+------+----------+ | id | name | dt | +------+------+----------+ | 1 | aaa | 20250724 | | 2 | bbb | 20250724 | | 3 | ccc | 20250724 | +------+------+----------+Seperti terlihat pada direktori yang dihasilkan oleh OSS, direktori
dt=20250724yang dihasilkan berisi kunci partisidt, sehingga sintaks yang digunakan dalam skenario ini salah.ext_csv_test03/ ├── 20250724/ └── dt=20250724/Tulis data konstan menggunakan partisi dinamis
INSERT OVERWRITE ext_csv_test03 PARTITION(dt) VALUES (1, 'xxx','20250725'), (2, 'yyy','20250726'); SELECT * FROM ext_csv_test03; -- Hasil berikut dikembalikan: +------+------+----------+ | id | name | dt | +------+------+----------+ | 2 | yyy | 20250726 | | 1 | xxx | 20250725 | | 1 | aaa | 20250724 | | 2 | bbb | 20250724 | | 3 | ccc | 20250724 | +------+------+----------+Direktori yang dihasilkan oleh OSS adalah sebagai berikut. Direktori
20250725dan20250726yang dihasilkan tidak berisi kunci partisidt=.ext_csv_test03/ ├── 20250724/ ├── 20250725/ └── 20250726/Tulis data dari klausa SELECT menggunakan partisi dinamis.
Persiapkan tabel uji.
CREATE TABLE table03 (id INT, name STRING, dt STRING); INSERT INTO table03 VALUES (6, 'fff', '20250725'), (7, 'ggg', '20250725'), (8, 'hhh', '20250723');Tulis data dari tabel uji melalui klausa SELECT
INSERT OVERWRITE ext_csv_test03 PARTITION(dt) SELECT * FROM table03; SELECT * FROM ext_csv_test03; -- Hasil berikut dikembalikan: +------+------+----------+ | id | name | dt | +------+------+----------+ | 2 | yyy | 20250726 | | 8 | hhh | 20250723 | | 6 | fff | 20250725 | | 7 | ggg | 20250725 | | 1 | aaa | 20250724 | | 2 | bbb | 20250724 | | 3 | ccc | 20250724 | +------+------+----------+Seperti terlihat pada direktori yang dihasilkan oleh OSS, direktori
20250723dan20250725tidak berisi kunci partisidt=.ext_csv_test03/ ├── 20250723/ ├── 20250724/ ├── 20250725/ └── 20250726/
Use the MAX_PT function
Skenario
Anda dapat menggunakan fungsi MAX_PT untuk mengkueri data dari partisi maksimum yang berisi data dalam tabel eksternal OSS. Untuk informasi lebih lanjut, lihat MAX_PT.
Pertimbangan
Saat tabel eksternal OSS memiliki partisi multi-level,
MAX_PThanya mengembalikan nilai partisi maksimum di antara partisi level pertama yang berisi data, dan partisi tersebut dapat ditampilkan menggunakanSHOW PARTITIONS.Jika tidak ditemukan partisi yang berisi file di direktori OSS, fungsi
MAX_PTmengembalikan error.Menjalankan fungsi
MAX_PTpada tabel non-partisi akan menghasilkan error.
Sintaks
SELECT * FROM <mc_oss_extable_name>
WHERE <pt_col_name> = MAX_PT("<mc_oss_extable_name>");
-- Anda juga dapat menggunakan sintaks berikut.
SELECT * FROM <mc_oss_extable_name>
WHERE <pt_col_name> = (SELECT MAX(<pt_col_name>) FROM <mc_oss_extable_name>);Contoh
Bagian ini menggunakan tabel eksternal CSV terpartisi sebagai contoh. Fungsi MAX_PT bekerja dengan cara yang sama untuk format tabel eksternal OSS lainnya.
Buat tabel eksternal OSS terpartisi dan tulis data ke dalamnya
CREATE EXTERNAL TABLE IF NOT EXISTS mc_oss_csv_external9 ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitude DOUBLE, locationLongitude DOUBLE, recordTime STRING, direction STRING ) PARTITIONED BY ( y STRING, m STRING ) STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole' ) LOCATION 'oss://oss-cn-<region>-internal.aliyuncs.com/<bucket>/mc_oss_csv_external9'; INSERT INTO mc_oss_csv_external9 PARTITION(y='2023', m='03') VALUES (1, 89, 76, 1, 46.81606, -92.08174, '9/14/2014 0:10', 'SW'); INSERT INTO mc_oss_csv_external9 PARTITION(y='2023', m='02') VALUES (1, 14, 76, 1, 47.90836, -92.08174, '9/14/2014 0:10', 'W'); INSERT INTO mc_oss_csv_external9 PARTITION(y='2022', m='03') VALUES (1, 56, 76, 1, 48.81748, -92.08174, '9/14/2014 0:10', 'S'); INSERT INTO mc_oss_csv_external9 PARTITION(y='2022', m='02') VALUES (1, 78, 76, 1, 49.81678, -92.08174, '9/14/2014 0:10', 'SE');Direktori partisi OSS
mc_oss_csv_external9/ ├── y=2022/ ├── m=02/ └── d.csv └── m=03/ └── c.csv └── y=2023/ ├── m=02/ └── b.csv └── m=03/ └── a.csvUntuk tabel eksternal OSS dengan partisi multi-level, nilai kembali
MAX_PTbervariasi tergantung direktori mana yang kosong, sebagai berikut.Saat semua direktori partisi OSS tidak kosong, fungsi
MAX_PTmengembalikan partisi level pertama2023.-- Kueri partisi maksimum tabel eksternal. SELECT MAX_PT("mc_oss_csv_external9"); -- Hasil berikut dikembalikan: +-----+ | _c0 | +-----+ | 2023 | +-----+Saat bagian direktori tingkat atas dari direktori partisi OSS kosong, fungsi
MAX_PTmengembalikan partisi level pertama2023.mc_oss_csv_external9/ ├── y=2022/ ├── m=02/ └── d.csv └── m=03/ └── c.csv └── y=2023/ ├── m=02/ └── b.csv └── m=03/ -- Kosong-- Kueri partisi maksimum tabel eksternal. SELECT MAX_PT("mc_oss_csv_external9"); -- Hasil berikut dikembalikan: +-----+ | _c0 | +-----+ | 2023 | +-----+Saat direktori level pertama terbesar dari direktori partisi OSS benar-benar kosong, fungsi
MAX_PTmengembalikan partisi level pertama2022.mc_oss_csv_external9/ ├── y=2022/ ├── m=02/ └── d.csv └── m=03/ └── c.csv └── y=2023/ ├── m=02/ -- Kosong └── m=03/ -- Kosong-- Kueri partisi maksimum tabel eksternal. SELECT MAX_PT("mc_oss_csv_external9"); -- Hasil berikut dikembalikan: +-----+ | _c0 | +-----+ | 2022 | +-----+Saat semua direktori dalam direktori partisi benar-benar kosong, fungsi
MAX_PTmenghasilkan error.SELECT MAX_PT("mc_oss_csv_external9"); -- Error berikut dikembalikan: FAILED: ODPS-0130071:[1,8] Semantic analysis exception - encounter runtime exception while evaluating function MAX_PT, detailed message: table "project.default.mc_oss_csv_external9" has no partitions or none of the partitions have any data