Fungsi GET_DATA_FROM_OSS membaca seluruh atau sebagian isi objek dan mengembalikannya sebagai nilai biner.
Kasus penggunaan
MaxCompute menyediakan fitur Object Table yang memungkinkan mesin komputasi mengakses data tidak terstruktur dan metadata-nya yang disimpan di OSS. Untuk informasi lebih lanjut, lihat Definisi OBJECT TABLE.
Object Table menyimpan metadata objek OSS dalam path tertentu. Anda dapat menggunakan fungsi GET_DATA_FROM_OSS untuk memuat secara dinamis konten biner dari objek OSS yang ditentukan.
Sintaksis
BINARY GET_DATA_FROM_OSS (
STRING <full_object_table_name>,
STRING <key>
[, BIGINT <offset>]
[, BIGINT <length>]
[, STRING <object_not_found_policy>]
)Parameter
Parameter | Diperlukan | Tipe data | Deskripsi | Nilai default |
full_object_table_name | Ya | STRING | Path lengkap ke OBJECT TABLE dalam model tiga lapis, termasuk nama Proyek dan Skema, seperti Jika Anda menggunakan RoleARN untuk otentikasi saat membuat tabel, parameter ini membantu menghasilkan token Security Token Service (STS) secara otomatis untuk mengakses OSS. | Tidak ada |
key | Ya | STRING | Nama objek yang diakses dalam Object Table. Untuk informasi lebih lanjut, lihat deskripsi parameter `key` dalam tanggapan yang dijelaskan di Lihat properti OBJECT TABLE. | Tidak ada |
offset | Tidak | BIGINT | Posisi awal dari mana akan membaca isi objek. Nilainya harus lebih besar dari atau sama dengan 0. | 0. Ini berarti operasi baca dimulai dari awal objek. |
length | Tidak | BIGINT | Jumlah byte yang akan dibaca. | -1. Ini berarti panjang tidak dibatasi. |
object_not_found_policy | Tidak | STRING | Menentukan bagaimana MaxCompute mengembalikan hasil pemanggilan fungsi jika kunci objek ada dalam data cache tetapi objek tersebut sudah tidak ada di OSS. Nilai valid:
| Nilai default adalah OUTPUT_NULL. |
Nilai kembali
Mengembalikan nilai tipe BINARY.
Contoh
Dalam contoh berikut, ganti parameter project_name dengan nama proyek MaxCompute Anda yang sebenarnya.
Persiapkan data
Masuk ke Konsol OSS, dan unggah data uji signedget.txt ke folder
object-table-test/object_table_folder. Untuk informasi lebih lanjut, lihat Unggah file.Anda dapat menggunakan klien lokal (odpscmd) atau membuat node SQL MaxCompute di DataWorks untuk membuat Object Table dan menyegarkan cache metadata. Untuk informasi selengkapnya, lihat Membuat OBJECT TABLE. Dalam contoh ini, OBJECT TABLE diberi nama
ot_demo_day.-- Fitur Object Table dalam proyek MaxCompute mendukung skema. Aktifkan model tiga lapis. SET odps.namespace.schema=true; -- Pilih proyek MaxCompute. USE <project_name>; -- Pilih skema. USE SCHEMA <schema_name>; -- Fitur Object Table dalam proyek MaxCompute mendukung sistem tipe data 2.0. SET odps.sql.type.system.odps2=true; -- Buat Object Table. CREATE OBJECT TABLE ot_demo_day WITH serdeproperties ( 'odps.properties.rolearn'='acs:ram::xxxxxx:role/aliyunodpsdefaultrole') LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/object-table-test/object_table_folder'; -- Segarkan cache tabel. ALTER TABLE ot_demo_day REFRESH METADATA;
Contoh 1
Baca semua isi Object Table dan kembalikan sebagai nilai biner. Path lengkap Object Table adalah <project_name>.default.ot_demo_day. Kode berikut menunjukkan kombinasi parameter yang berbeda.
-- Format lengkap.
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, -1, 'OUTPUT_NULL') FROM ot_demo_day;
-- Pernyataan berikut setara dengan get_data_from_oss('<project_name>.default.ot_demo_day', key, 0, -1, 'OUTPUT_NULL').
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key) FROM ot_demo_day;
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0) FROM ot_demo_day;
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, -1) FROM ot_demo_day;
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 'OUTPUT_NULL') FROM ot_demo_day;
SELECT GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, 'OUTPUT_NULL') FROM ot_demo_day;Hasil berikut dikembalikan:
+------+
| _c0 |
+------+
| test=20maxcompute=20download=20files=20by=20url=20 |
+------+Contoh 2
Untuk mengeluarkan hasil dari fungsi GET_DATA_FROM_OSS sebagai tipe STRING, sarangkan di dalam fungsi `STRING`.
SELECT STRING(
GET_DATA_FROM_OSS('<project_name>.default.ot_demo_day', key, 0, -1, 'OUTPUT_NULL')
)
FROM ot_demo_day;Hasil berikut dikembalikan:
+-----+
| _c0 |
+-----+
| test maxcompute download files by url |
+-----+Fungsi terkait
Fungsi GET_DATA_FROM_OSS digunakan untuk memproses data tidak terstruktur. Untuk informasi lebih lanjut tentang fungsi yang memproses data tidak terstruktur, lihat Fungsi untuk pemrosesan data tidak terstruktur.