All Products
Search
Document Center

DataWorks:Node SQL MaxCompute

Last Updated:Aug 08, 2026

Node SQL MaxCompute di DataWorks menjadwalkan tugas SQL MaxCompute secara berkala dan mengintegrasikannya dengan jenis node lain dalam alur kerja terpadu. SQL MaxCompute menggunakan sintaks mirip SQL yang cocok untuk pemrosesan terdistribusi data berskala besar (tingkat TB) ketika hasil real-time tidak krusial.

Pendahuluan

SQL MaxCompute memproses dan mengkueri data di MaxCompute. Fitur ini mendukung operasi SQL umum seperti SELECT, INSERT, UPDATE, dan DELETE, serta sintaks dan fungsi khusus MaxCompute. Untuk informasi lebih lanjut tentang sintaks SQL, lihat Ikhtisar SQL.

Prasyarat

  • Anda telah mengikat mesin komputasi MaxCompute ke ruang kerja DataWorks.

  • (Opsional, untuk pengguna RAM) Pengguna RAM yang bertanggung jawab atas pengembangan tugas harus menjadi anggota ruang kerja dan memiliki peran Development atau Workspace Administrator. Peran Workspace Administrator mencakup izin yang luas dan harus diberikan dengan hati-hati. Untuk informasi lebih lanjut tentang cara menambahkan anggota ke ruang kerja, lihat Tambahkan anggota ke ruang kerja.

    Catatan

    Jika Anda menggunakan Akun Alibaba Cloud, Anda dapat melewati langkah ini.

Batasan

Batasan berikut berlaku untuk pengembangan SQL di node SQL MaxCompute:

Kategori

Deskripsi

Komentar

Hanya komentar satu baris yang diawali dengan -- yang didukung. Komentar multi-baris (/* ... */) tidak didukung.

Untuk informasi lebih lanjut, lihat Komentar SQL MaxCompute.

Batasan berikut juga berlaku untuk komentar:

  • Anda tidak dapat menambahkan komentar setelah pernyataan yang hanya berisi kata kunci, seperti SET atau USE.

  • Jangan gunakan titik koma (;) dalam komentar.

  • Jangan tambahkan komentar setelah pernyataan yang diakhiri dengan titik koma (;), yang menandai akhir pernyataan.

Pengiriman SQL

ODPS SQL tidak mendukung pernyataan SET atau USE mandiri. Pernyataan tersebut harus dieksekusi bersama dengan pernyataan SQL tertentu.

Pengembangan SQL

Ukuran kode SQL tidak boleh melebihi128 KB, dan jumlah pernyataan SQL tidak boleh melebihi200.

Hasil kueri

Hanya pernyataan SQL yang diawali dengan SELECT atau WITH yang dapat menghasilkan set hasil terformat.

Hasil kueri memiliki batasan berikut:

  • Jika hasil kueri melebihi 10.000 baris, maksimal hanya 10.000 baris yang ditampilkan.

  • Jika hasil kueri melebihi 10 MB, error Result is too large, exceed the limit size: 10MB dikembalikan.

Catatan

Jika Anda menghadapi batasan hasil kueri, Anda dapat mengunduh hasil kueri ke mesin lokal dengan metode berikut:

Catatan

  • Pastikan akun yang digunakan untuk menjalankan tugas SQL MaxCompute memiliki izin yang diperlukan pada proyek MaxCompute terkait. Untuk informasi lebih lanjut, lihat Kontrol akses DataWorks On MaxCompute dan Otorisasi MaxCompute.

  • Eksekusi tugas SQL MaxCompute bergantung pada kuota resource. Jika tugas Anda memerlukan waktu lama untuk dijalankan, buka konsol MaxCompute untuk memeriksa konsumsi kuota resource dan pastikan tersedia resource yang cukup untuk eksekusi tugas. Untuk informasi lebih lanjut, lihat Lihat konsumsi kuota resource.

  • Saat mengembangkan tugas node SQL MaxCompute, parameter khusus seperti path OSS harus diapit tanda kutip ganda. Kurangnya tanda kutip dapat menyebabkan exception parsing tugas, yang mengakibatkan kegagalan eksekusi tugas.

  • Saat menjalankan pernyataan terkait kata kunci (SET, USE) di lingkungan berbeda pada DataWorks, urutan eksekusi berbeda-beda. Untuk informasi lebih lanjut, lihat Lampiran 1: Urutan eksekusi SQL di lingkungan berbeda.

  • Dalam beberapa kasus ekstrem, seperti mati listrik server atau alih bencana primary/secondary, DataWorks mungkin tidak dapat sepenuhnya menghentikan tugas MaxCompute terkait. Dalam situasi ini, buka proyek MaxCompute terkait untuk menghentikan pekerjaan.

  • Saat tujuan utama tugas adalah membuat tabel baru (misalnya, DROP TABLE diikuti oleh CREATE TABLE AS SELECT), mesin MaxCompute melakukan pemeriksaan metadata sebelum eksekusi. Jika tabel sudah ada, error langsung dikembalikan. Untuk pembuatan tabel awal, gunakan CREATE TABLE IF NOT EXISTS. Untuk penulisan data selanjutnya, gunakan INSERT OVERWRITE TABLE ... SELECT ... sebagai gantinya.

  • Anda dapat mengontrol mode eksekusi SQL dengan mengatur parameter odps.task.sql.realtime. Tetapkan nilai ke true untuk mengaktifkan mode Online guna eksekusi real-time, atau tetapkan nilai ke false untuk memaksa mode Offline. Tempatkan parameter ini di awal kode SQL Anda, sebelum pernyataan SQL bisnis. Contoh:

    SET odps.task.sql.realtime=true;
    -- Pernyataan SQL bisnis Anda
    SELECT * FROM my_table;
  • Modifikasi langsung tipe data kolom dari STRING ke tipe kompleks seperti STRUCT tidak didukung. Jika error ODPS-0130071 dikembalikan, periksa apakah konversi tipe bidang mematuhi aturan semantik dan hindari operasi konversi tipe yang tidak didukung.

Buat node SQL MaxCompute

Untuk informasi tentang cara membuat node, lihat Buat node SQL MaxCompute.

Kembangkan node SQL MaxCompute

Di halaman pengeditan node SQL MaxCompute, lakukan operasi berikut.

Kembangkan kode SQL

DataWorks menyediakan parameter penjadwalan untuk meneruskan nilai secara dinamis ke kode dalam skenario penjadwalan. Anda dapat mendefinisikan variabel di node SQL MaxCompute dengan format ${variable_name}, lalu memberikan nilai ke variabel tersebut di bagian Scheduling Parameters pada Scheduling Settings. Untuk informasi lebih lanjut tentang format yang didukung, lihat Parameter penjadwalan. SQL MaxCompute menggunakan sintaks mirip SQL standar dan mendukung pernyataan DDL, DML, dan DQL, serta sintaks khusus MaxCompute. Untuk sintaks dan contoh lengkap, lihat Ikhtisar SQL.

Tiga contoh berikut disediakan untuk skenario berbeda:

Catatan
  • Saat fungsi ekstensi MaxCompute 2.0 menggunakan tipe data baru, Anda harus menambahkan SET odps.sql.type.system.odps2=true; sebelum pernyataan SQL yang berisi fungsi tersebut, lalu kirim dan jalankan bersama pernyataan SQL agar tipe data baru berfungsi dengan benar. Untuk informasi lebih lanjut tentang tipe data 2.0, lihat Tipe data MaxCompute 2.0.

  • Pernyataan SQL MaxCompute dieksekusi dalam urutan berbeda di lingkungan Data Studio dan Operation Center. Untuk informasi lebih lanjut, lihat Lampiran 1: Urutan eksekusi SQL di lingkungan berbeda.

Buat tabel

Anda dapat menggunakan pernyataan CREATE TABLE untuk membuat tabel non-partisi, tabel partisi, tabel eksternal, dan Tabel terkluster. Untuk informasi lebih lanjut, lihat CREATE TABLE. Contoh SQL berikut disediakan:

-- Buat tabel partisi bernama students
CREATE TABLE IF NOT EXISTS students
( id BIGINT,
  name STRING,
  age BIGINT,
  birth DATE)
partitioned BY (gender STRING); 
Masukkan data

Anda dapat menggunakan pernyataan INSERT INTO atau INSERT OVERWRITE untuk memasukkan atau memperbarui data di tabel tujuan. Untuk informasi lebih lanjut, lihat Masukkan atau timpa data.

Hindari penggunaan pernyataan INSERT INTO untuk memasukkan data karena dapat menyebabkan duplikasi data yang tidak diinginkan. Kami menyarankan Anda menggunakan INSERT OVERWRITE sebagai gantinya. Untuk informasi lebih lanjut, lihat Masukkan atau timpa data.

Contoh SQL berikut disediakan:

-- Masukkan data
INSERT OVERWRITE students PARTITION(gender='boy') VALUES (1,'ZhangSan',15,DATE '2008-05-15') ;

Pernyataan INSERT dapat memicu fitur Compare DDL Columns, yang memungkinkan Anda membandingkan kolom dalam klausa SELECT pernyataan SQL terhadap kolom tabel tujuan.

Fitur ini tidak didukung saat proyek MaxCompute memiliki model tiga lapis berbasis skema yang diaktifkan di tingkat proyek tetapi tidak di tingkat penyewa.
-- Bandingkan kolom DDL
INSERT OVERWRITE TABLE dws_user_info_all_di PARTITION (dt='${workflow.var}')
SELECT COALESCE(a.uid, b.uid) AS uid
    , b.gender
    , b.age_range
    , b.zodiac
    , a.region
    , a.device
    , a.identity
    , a.method
    , a.url
    , a.referer
    , a.time
-- ...Klausa FROM/JOIN dan lainnya dihilangkan di sini. Lengkapi sesuai kebutuhan bisnis aktual Anda.
;
Kueri data

Anda dapat menggunakan pernyataan SELECT untuk melakukan kueri bersarang, kueri grup, pengurutan, dan operasi lainnya. Untuk informasi lebih lanjut, lihat Sintaks SELECT. Contoh SQL berikut disediakan:

-- (Opsional) Aktifkan pemindaian tabel penuh di tingkat proyek. Operasi ini memerlukan izin tingkat tinggi.
-- SETPROJECT odps.sql.allow.fullscan=true;  
-- Aktifkan pemindaian tabel penuh di tingkat sesi. Pengaturan ini hanya berlaku untuk sesi saat ini.
SET odps.sql.allow.fullscan=true; 
-- Kueri informasi semua siswa laki-laki dan urutkan hasil berdasarkan ID secara ascending.
SELECT * FROM students WHERE gender='boy' ORDER BY id;
Catatan

Pengguna RAM tidak memiliki izin untuk mengkueri tabel produksi secara default. Untuk meminta izin kueri tabel produksi, buka Security Center. Untuk informasi lebih lanjut tentang preset izin data MaxCompute dan kontrol akses data di DataWorks, lihat Preset izin data MaxCompute dan kontrol akses. Untuk informasi lebih lanjut tentang otorisasi berbasis perintah MaxCompute, lihat Otorisasi MaxCompute.

Gunakan fungsi SQL

MaxCompute mendukung fungsi bawaan dan user-defined function (UDF). Anda dapat membuat dan menggunakan fungsi SQL sesuai kebutuhan bisnis. Untuk informasi lebih lanjut tentang fungsi bawaan, lihat Ikhtisar fungsi bawaan. Untuk informasi lebih lanjut tentang UDF, lihat Ikhtisar UDF. Contoh berikut menunjukkan cara menggunakan fungsi SQL.

  • Fungsi bawaan: Fungsi bawaan telah dipra-instal di MaxCompute dan dapat dipanggil langsung. Berdasarkan contoh sebelumnya tentang membuat tabel, memasukkan data, dan mengkueri data, Anda dapat menggunakan fungsi dateadd untuk memodifikasi kolom birth berdasarkan unit dan offset yang ditentukan. Contoh perintah berikut disediakan:

    --Aktifkan pemindaian tabel penuh di tingkat sesi. Hanya berlaku untuk sesi ini.
    SET odps.sql.allow.fullscan=true; 
    SELECT id, name, age, birth, dateadd(birth,1,'mm') AS birth_dateadd FROM students;
  • User-defined function (UDF): Untuk menggunakan UDF, Anda harus menulis kode fungsi, mengunggahnya sebagai resource, dan mendaftarkan fungsi tersebut. Untuk informasi lebih lanjut, lihat Buat UDF MaxCompute.

Debug node SQL MaxCompute

  1. Konfigurasikan parameter terkait di panel Run Configuration di sisi kanan halaman pengeditan node.

    Parameter

    Deskripsi

    Resource komputasi

    Pilih resource komputasi MaxCompute yang telah Anda asosiasikan dengan ruang kerja.

    Kuota komputasi

    Pilih kuota komputasi untuk menyediakan resource komputasi (CPU dan memori) yang diperlukan bagi pekerjaan komputasi.

    Jika tidak tersedia kuota komputasi, klik Create Compute Quota dalam daftar drop-down dan buat kuota di konsol MaxCompute. Untuk informasi lebih lanjut, lihat Buat kuota komputasi.

    Kelompok sumber daya

    Pilih kelompok sumber daya penjadwalan yang telah lulus uji konektivitas dengan resource komputasi. Untuk informasi lebih lanjut, lihat Kelompok sumber daya untuk penjadwalan.

  2. Di dialog parameter pada bilah alat, pilih sumber data MaxCompute yang telah Anda buat, lalu klik Run untuk menjalankan tugas SQL MaxCompute.

Catatan

Menjalankan node secara langsung di DataStudio merupakan mode debug. Dalam mode ini, node hanya memvalidasi logika SQL dan tidak bergantung pada konfigurasi penjadwalan. Jika Anda perlu menjalankan node dalam alur kerja (mode penjadwalan), Anda harus menyelesaikan konfigurasi berikut sebelum alur kerja dapat mengeksekusi node:

  1. Dalam konfigurasi run, pilih Compute resource yang diperlukan.

  2. Konfigurasikan properti Scheduling node.

  3. Deploy node ke lingkungan produksi.

Lihat hasil

  • Hasil ditampilkan dalam format spreadsheet. Anda dapat melakukan operasi di DataWorks, membuka hasil di spreadsheet, atau menyalin dan menempel konten ke file Excel lokal.

    Catatan

    Karena perubahan informasi zona waktu Tiongkok yang dirilis oleh Organisasi Internasional untuk Standardisasi (ISO), perbedaan tampilan tanggal dapat terjadi untuk periode waktu tertentu saat Anda menjalankan pernyataan SQL terkait melalui DataWorks: perbedaan 5 menit 52 detik untuk tanggal antara 1900 dan 1928, dan perbedaan 9 detik untuk tanggal sebelum 1900.

  • Log runtime: Di tab image hasil, klik tautan Logview untuk melihat log. Untuk informasi lebih lanjut, lihat LogView.

  • Urutkan hasil: Di halaman hasil, klik menu drop-down pada header kolom terkait, pilih urutan ascending atau descending di bagian Sort, lalu klik konfirmasi untuk mengurutkan hasil.

  • Lihat kolom BLOB: MaxCompute mendukung tipe data BLOB untuk menyimpan objek biner seperti gambar dan file audio. Di hasil, klik ganda sel dengan tipe data ini untuk melihat pratinjau konten di dialog Current Field Value (gambar dirender langsung; teks ditampilkan dalam mode read-only). Anda dapat beralih antara Blob View, Text View, dan JSON View menggunakan tombol di bagian bawah dialog.

  • Tampilan notasi ilmiah: Di lingkungan pengembangan data DataWorks, nilai numerik dalam hasil kueri mungkin ditampilkan dalam notasi ilmiah. Ini merupakan masalah tampilan frontend dan tidak memengaruhi nilai data aktual. Untuk memastikan nilai numerik ditampilkan sesuai harapan, gunakan fungsi CAST dalam SQL Anda untuk mengonversi tipe data secara manual. Misalnya, gunakan CAST(column_name AS STRING) untuk mengonversi nilai numerik ke string untuk tampilan. Anda juga dapat memverifikasi akurasi data di modul DataAnalysis.

Langkah selanjutnya

  • Konfigurasikan pengaturan jadwal: Jika node dalam direktori proyek perlu dijadwalkan secara berkala, konfigurasikan Scheduling Policy dan properti penjadwalan terkait di panel Scheduling Settings di sisi kanan node.

  • Deploy node: Jika tugas perlu diterapkan ke lingkungan produksi, klik ikon image di halaman untuk memulai proses deployment. Node dalam direktori proyek hanya dijadwalkan secara berkala setelah diterapkan ke lingkungan produksi.

Lampiran 1: Urutan eksekusi SQL di lingkungan berbeda

Saat Anda menjalankan pernyataan terkait kata kunci (SET, USE) di lingkungan DataWorks berbeda untuk node SQL MaxCompute, urutan eksekusi berbeda-beda.

  • Menjalankan di Data Studio: Semua pernyataan kata kunci (SET, USE) dalam kode tugas saat ini digabung dan ditempatkan di awal semua pernyataan SQL.

  • Menjalankan di lingkungan penjadwalan: Pernyataan dieksekusi sesuai urutan penulisannya.

Asumsikan kode berikut didefinisikan dalam sebuah node.

SET a=b;
CREATE TABLE name1(id string);
SET c=d;
CREATE TABLE name2(id string);

Urutan eksekusi berbeda-beda berdasarkan lingkungan sebagai berikut:

Pernyataan SQL

Data Studio

Lingkungan penjadwalan

Pernyataan SQL pertama

SET a=b;
SET c=d;
CREATE TABLE name1(id string);
SET a=b;
CREATE TABLE name1(id string);

Pernyataan SQL kedua

SET a=b;
SET c=d;
CREATE TABLE name2(id string);
SET c=d;
CREATE TABLE name2(id string);

Lampiran 2: Praktik Lakehouse

Untuk membaca dan menulis ke tabel data DLF dalam tugas SQL MaxCompute, gunakan proyek eksternal MaxCompute (External Project). Proyek eksternal memungkinkan akses real-time ke metadata dan data dengan memetakan katalog DLF. Fitur ini mendelegasikan pengelolaan izin ke DLF dan mendukung akses metadata serta operasi baca/tulis pada data yang dikelola DLF yang disimpan di OSS. Untuk informasi lebih lanjut, lihat Proyek eksternal MaxCompute.

FAQ

T: Apakah tabel tujuan dari tugas yang dipicu otomatis harus berupa tabel partisi?

J: Tidak. Tabel tujuan dari tugas yang dipicu otomatis tidak harus berupa tabel partisi. Jika Anda tidak menentukan bidang partisi saat membuat tabel, setiap eksekusi INSERT OVERWRITE akan menimpa seluruh tabel non-partisi.

T: Bagaimana cara menangani error MaxCompute ODPS-0429311?

J: Error ini mungkin terkait dengan parameter input dan cara penulisan SQL node. Penyebab umum adalah beberapa tugas secara konkuren mengeksekusi operasi DDL pada tabel yang sama, menyebabkan konflik metadata. Coba sesuaikan pengaturan terkait (misalnya, atur parameter konkurensi ke false) dan verifikasi apakah masalah telah teratasi.

Referensi

Untuk contoh tugas SQL MaxCompute lebih lanjut, lihat topik berikut: