全部产品
Search
文档中心

MaxCompute:GET_DATA_FROM_OSS

更新时间:Nov 03, 2025

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 project.schema.object_table.

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:

  • OUTPUT_NULL: Tidak melempar pengecualian. Output adalah NULL.

  • THROW_EXCEPTION: Melempar pengecualian dan menghentikan tugas saat ini.

  • WARN_AND_NULL: Tidak melempar pengecualian dan mengembalikan NULL. Entri log ditambahkan ke output waktu proses SQL untuk menunjukkan bahwa objek tidak ada. Jika ketidaksesuaian ini terjadi pada banyak objek, kinerja tugas keseluruhan mungkin terpengaruh.

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

  1. 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.

  2. 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.