全部产品
Search
文档中心

MaxCompute:Kembangkan tugas SQL MaxCompute

更新时间:Jul 02, 2025

DataWorks menyediakan node SQL ODPS untuk menjadwalkan tugas SQL MaxCompute secara berkala, mengintegrasikan node SQL ODPS dengan jenis node lainnya, dan menjadwalkannya bersama. Tugas SQL MaxCompute dapat memproses terabyte data dalam skenario terdistribusi tanpa pemrosesan real-time menggunakan sintaksis mirip SQL. Topik ini menjelaskan tindakan pencegahan dan panduan pengembangan tugas SQL MaxCompute di DataWorks.

Prasyarat

Node SQL ODPS telah dibuat. Untuk informasi lebih lanjut, lihat Buat dan Kelola Node ODPS.

Informasi latar belakang

MaxCompute SQL digunakan untuk memproses dan menanyakan data di MaxCompute. MaxCompute SQL mendukung pernyataan SQL umum seperti SELECT, INSERT, UPDATE, dan DELETE, serta sintaksis dan fungsi spesifik MaxCompute. Anda dapat menggunakan MaxCompute SQL untuk menulis pernyataan mirip SQL guna menanyakan dan memproses data tanpa perlu logika pemrosesan data yang kompleks. Untuk informasi lebih lanjut tentang sintaksis SQL, lihat Ikhtisar MaxCompute SQL.

Batasan

Tabel berikut menjelaskan batasan pada pengembangan tugas SQL MaxCompute di DataWorks.

Item

Deskripsi

Penggunaan komentar

Anda tidak dapat menambahkan komentar secara terpisah ke pernyataan SET atau USE.

Anda tidak dapat menggunakan titik koma (;) dalam komentar.

Anda tidak dapat menambahkan komentar di akhir pernyataan lengkap. Jika titik koma (;) ditambahkan di akhir pernyataan SQL, pernyataan SQL dianggap lengkap.

Eksekusi pernyataan SQL

Anda tidak dapat menggunakan pernyataan SET atau USE secara terpisah dalam kode node SQL ODPS. Mereka harus dieksekusi bersama dengan pernyataan SQL lainnya.

Pengembangan SQL

Kode node SQL ODPS tidak boleh melebihi 128 KB ukuran atau berisi lebih dari 200 pernyataan SQL.

Hasil kueri

Anda hanya dapat menggunakan pernyataan yang dimulai dengan SELECT atau WITH untuk mengembalikan set hasil yang diformat. Maksimal 10.000 baris data hasil dapat ditampilkan, dan maksimal 10 MB data hasil dapat dikembalikan.

Tindakan pencegahan

Urutan eksekusi pernyataan SET dan USE dalam kode node SQL ODPS bervariasi berdasarkan lingkungan di DataWorks.

  • DataStudio: Pernyataan SET dan USE digabungkan dalam kode node dan dieksekusi sebelum pernyataan SQL lainnya dijalankan.

  • Lingkungan Penjadwalan: Semua pernyataan dieksekusi secara berurutan.

Contoh kode yang didefinisikan dalam node SQL ODPS:

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

Tabel berikut menjelaskan urutan eksekusi pernyataan di atas dalam lingkungan yang berbeda.

Pernyataan SQL

DataStudio

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);

Contoh pengeditan kode sederhana

Pernyataan SQL

Sintaksis SQL MaxCompute mirip dengan sintaksis SQL standar. DDL, DML, dan pernyataan DQL serta pernyataan spesifik MaxCompute didukung. Untuk informasi tentang persyaratan sintaksis dan contoh penggunaan setiap pernyataan SQL, lihat Ikhtisar MaxCompute SQL. Contoh berikut menunjukkan cara menulis dan mengeksekusi pernyataan SQL.

Catatan
  • Jika tipe data baru digunakan untuk fungsi tambahan MaxCompute V2.0, Anda harus menambahkan SET odps.sql.type.system.odps2=true; sebelum pernyataan SQL yang menggunakan fungsi tersebut, lalu melakukan commit dan mengeksekusi pernyataan SET bersama dengan pernyataan SQL. Untuk informasi lebih lanjut tentang tipe data di MaxCompute V2.0, lihat Edisi Tipe Data MaxCompute V2.0.

  • DataWorks menyediakan parameter penjadwalan. Untuk mengaktifkan parameter agar dapat dilewatkan secara dinamis dalam kode node SQL ODPS, Anda dapat mendefinisikan variabel dalam format ${Nama Variabel}, lalu menetapkan parameter ke variabel sebagai nilai di bagian Parameter Penjadwalan tab Properti pada konfigurasi node SQL ODPS. Untuk informasi tentang format yang didukung dari parameter penjadwalan, lihat Format yang Didukung dari Parameter Penjadwalan.

  • Buat Tabel

    Anda dapat mengeksekusi pernyataan CREATE TABLE untuk membuat tabel non-partisi, tabel partisi, tabel eksternal, atau tabel terkluster. Untuk informasi lebih lanjut, lihat CREATE TABLE. Contoh pernyataan SQL:

    -- Buat tabel partisi bernama test1.
    CREATE TABLE if NOT EXISTS students
    ( id BIGINT,
      name STRING,
      age BIGINT,
      birth DATE)
    partitioned BY (gender STRING); 
  • Masukkan Data

    Anda dapat mengeksekusi pernyataan INSERT INTO atau INSERT OVERWRITE untuk memasukkan data ke dalam tabel tujuan. Untuk informasi lebih lanjut, lihat Masukkan Data ke dalam atau Timpa Data dalam Tabel atau Partisi Statis (INSERT INTO dan INSERT OVERWRITE). Contoh pernyataan SQL:

    -- Masukkan data.
    INSERT INTO students PARTITION(gender='boy') VALUES (1,'John',15,DATE '2008-05-15') ;
    INSERT INTO students PARTITION(gender='boy') VALUES (2,'Jack',17,DATE '2006-07-20') ;
    INSERT INTO students PARTITION(gender='girl') VALUES (3,'Alice',20,DATE '2003-04-20') ;
    INSERT INTO students PARTITION(gender='girl') VALUES (4,'Lily',21,DATE '2002-01-08') ;
    INSERT INTO students PARTITION(gender='boy') VALUES (5,'Bob',17,DATE '2006-09-12') ;
    Penting

    Pernyataan INSERT INTO dapat mengakibatkan duplikasi data yang tidak diinginkan. Kami merekomendasikan agar Anda mengeksekusi pernyataan INSERT OVERWRITE daripada pernyataan INSERT INTO. Untuk informasi lebih lanjut, lihat Masukkan Data ke dalam atau Timpa Data dalam Tabel atau Partisi Statis (INSERT INTO dan INSERT OVERWRITE).

  • Kueri Data

    Anda dapat mengeksekusi pernyataan SELECT untuk melakukan operasi seperti kueri bersarang, pengurutan, dan kueri berdasarkan grup. Untuk informasi lebih lanjut, lihat Sintaksis SELECT. Contoh pernyataan SQL:

    -- Aktifkan fitur pemindaian tabel penuh, yang hanya valid untuk sesi saat ini.
    SET odps.sql.allow.fullscan=true; 
    
    -- Kueri informasi tentang semua anak laki-laki dan urutkan informasi berdasarkan ID secara menaik.
    SELECT * FROM students WHERE gender='boy' ORDER BY id;
    Catatan

    Secara default, pengguna RAM tidak memiliki izin yang diperlukan untuk menanyakan tabel MaxCompute di lingkungan produksi. Jika Anda ingin menanyakan tabel MaxCompute di lingkungan produksi sebagai pengguna RAM, Anda harus meminta izin yang diperlukan untuk pengguna RAM di Pusat Keamanan di konsol DataWorks. Untuk informasi tentang izin peran tingkat ruang kerja bawaan pada data MaxCompute dan cara mengelola izin, lihat Kelola Izin pada Data dalam Instance Mesin Komputasi MaxCompute. Untuk informasi tentang cara memberikan izin kepada pengguna dengan menjalankan perintah, lihat Kelola Izin Pengguna dengan Menggunakan Perintah.

Fungsi SQL

MaxCompute memungkinkan Anda menggunakan fungsi bawaan dan fungsi yang ditentukan pengguna (UDF) untuk pengembangan dan analisis data. Untuk informasi tentang fungsi bawaan, lihat Ikhtisar Fungsi Bawaan. Untuk informasi tentang UDF, lihat Ikhtisar UDF. Contoh berikut menunjukkan cara menggunakan fungsi SQL.

  • Fungsi Bawaan

    MaxCompute menyediakan sejumlah besar fungsi bawaan yang dapat langsung dipanggil. Anda dapat menggunakan fungsi dateadd untuk mengubah data dalam kolom birth berdasarkan unit dan interval tertentu sesuai contoh di bagian sebelumnya. Contoh pernyataan SQL:

    -- Aktifkan fitur pemindaian tabel penuh, yang hanya valid untuk sesi saat ini.
    SET odps.sql.allow.fullscan=true; 
    SELECT id, name, age, birth, dateadd(birth,1,'mm') AS birth_dateadd FROM students;
  • Fungsi yang Didefinisikan Pengguna (UDF)

    Untuk menggunakan UDF, Anda harus menulis kode, mengunggah kode sebagai sumber daya, dan mendaftarkan fungsi. Untuk informasi lebih lanjut, lihat Buat dan Gunakan UDF MaxCompute.

Hasil eksekusi dan data yang dikembalikan

  • Hasil eksekusi ditampilkan dalam workbook. Anda dapat melakukan operasi pada hasil eksekusi di DataWorks, melihat atau mengelola hasil eksekusi dalam workbook, atau menyalin hasil eksekusi ke file Excel di mesin lokal Anda. Untuk informasi lebih lanjut, lihat Prosedur Debugging.

    Catatan

    Karena penyesuaian yang dilakukan oleh Organisasi Internasional untuk Standardisasi (ISO) pada zona waktu UTC+8, terdapat perbedaan antara waktu aktual dan waktu keluaran ketika Anda mengeksekusi pernyataan SQL terkait di DataWorks. Dalam satu tahun dari 1900 hingga 1928, selisih waktunya adalah 352 detik. Sebelum tahun 1900, selisih waktunya adalah 9 detik.

  • Log Operasi: Anda dapat mengklik tab Log Runtime untuk melihat log operasi di LogView. Untuk informasi lebih lanjut, lihat Gunakan LogView V2.0 untuk Melihat Informasi Pekerjaan.

  • Data yang Dikembalikan:

    • Kueri informasi tentang semua anak laki-laki dan urutkan informasi berdasarkan ID secara menaik.

      +------------+------------+------------+------------+------------+
      | id         | name       | age        | birth      | gender        |
      +------------+------------+------------+------------+------------+
      | 1          | John         | 15         | 2008-05-15 | boy        |
      | 2          | Jack         | 17         | 2006-07-20 | boy        |
      | 5          | Bob         | 17         | 2006-09-12 | boy        |
      +------------+------------+------------+------------+------------+
    • Ubah data dalam kolom birth berdasarkan unit dan interval tertentu.

      +------------+------------+------------+------------+---------------+
      | id         | name       | age        | birth      | birth_dateadd |
      +------------+------------+------------+------------+---------------+
      | 4          | Lily         | 21         | 2002-01-08 | 2002-02-08    |
      | 3          | Alice         | 20         | 2003-04-20 | 2003-05-20    |
      | 2          | Jack         | 17         | 2006-07-20 | 2006-08-20    |
      | 1          | John         | 15         | 2008-05-15 | 2008-06-15    |
      | 5          | Bob         | 17         | 2006-09-12 | 2006-10-12    |
      +------------+------------+------------+------------+---------------+

    Di tab Hasil, Anda dapat mengurutkan data hasil berdasarkan bidang tertentu dan melakukan operasi seperti unduh pada data hasil. Untuk informasi lebih lanjut, lihat Proses Hasil Kueri.

Contoh pengeditan kode lanjutan

Untuk informasi lebih lanjut, lihat topik berikut: