All Products
Search
Document Center

MaxCompute:Kembangkan node ODPS SQL

Last Updated:Mar 26, 2026

Node ODPS SQL memungkinkan Anda menjalankan tugas MaxCompute SQL sesuai jadwal di DataWorks dan mengintegrasikannya dengan jenis node lain dalam alur kerja yang sama. MaxCompute SQL menangani pemrosesan data skala terabyte dalam skenario terdistribusi non-real-time menggunakan sintaks mirip SQL.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Batasan

ConstraintLimit
Ukuran kode node128 KB
Jumlah pernyataan SQL per node200
Jumlah baris hasil kueri yang ditampilkan10.000
Data hasil kueri yang dikembalikan10 MB

Batasan komentar:

  • Jangan tambahkan komentar pada pernyataan SET atau USE yang berdiri sendiri.

  • Jangan gunakan titik koma (;) di dalam komentar.

  • Jangan tambahkan komentar di akhir pernyataan SQL lengkap. Titik koma menandai akhir pernyataan.

Batasan pernyataan SET dan USE:

  • Jangan gunakan pernyataan SET atau USE secara terpisah dalam node ODPS SQL. Jalankan bersama dengan pernyataan SQL lainnya.

  • Hanya pernyataan SELECT atau WITH yang mengembalikan set hasil terformat.

Cara eksekusi pernyataan SET dan USE

Pernyataan SET dan USE berperilaku berbeda tergantung lingkungan.

Kode contoh node:

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

Tabel berikut menunjukkan cara pengelompokan dan eksekusi pernyataan tersebut di masing-masing lingkungan:

Pernyataan SQLDataStudioLingkungan penjadwalan
PertamaSET a=b; SET c=d; CREATE TABLE name1(id STRING);SET a=b; CREATE TABLE name1(id STRING);
KeduaSET a=b; SET c=d; CREATE TABLE name2(id STRING);SET c=d; CREATE TABLE name2(id STRING);
  • DataStudio: Semua pernyataan SET dan USE dalam node digabungkan dan dijalankan sebelum pernyataan SQL lainnya.

  • Lingkungan penjadwalan: Semua pernyataan dijalankan secara berurutan sesuai urutan kemunculannya.

Tulis pernyataan SQL

MaxCompute SQL mendukung pernyataan DDL, DML, dan DQL serta sintaks khusus MaxCompute. Pernyataan SQL umum seperti SELECT, INSERT, UPDATE, dan DELETE didukung. Untuk referensi sintaks lengkap, lihat Ikhtisar MaxCompute SQL.

Buat tabel

Gunakan CREATE TABLE untuk membuat tabel non-partisi, partisi, eksternal, atau terkluster. Untuk sintaks lengkap, lihat CREATE TABLE.

-- Buat tabel partisi.
CREATE TABLE IF NOT EXISTS students
  (id BIGINT, name STRING, age BIGINT, birth DATE)
PARTITIONED BY (gender STRING);

Masukkan data

Gunakan INSERT INTO atau INSERT OVERWRITE untuk memuat data ke dalam tabel. Untuk detail sintaks, lihat INSERT INTO dan INSERT OVERWRITE.

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

INSERT INTO dapat menghasilkan baris duplikat. Gunakan INSERT OVERWRITE untuk mengganti data partisi yang sudah ada.

Kueri data

Gunakan SELECT untuk kueri bersarang, pengurutan, dan kueri berkelompok. Untuk detail sintaks, lihat Sintaks SELECT.

-- Aktifkan pemindaian tabel penuh untuk sesi ini.
SET odps.sql.allow.fullscan=true;

-- Kueri semua siswa dalam partisi 'boy', diurutkan berdasarkan ID.
SELECT * FROM students WHERE gender='boy' ORDER BY id;
Pengguna RAM tidak memiliki izin untuk mengkueri tabel MaxCompute di lingkungan produksi secara default. Untuk memberikan akses, ajukan izin yang diperlukan di Security Center di konsol DataWorks. Untuk detailnya, lihat Kelola izin pada data di instans mesin komputasi MaxCompute dan Kelola izin pengguna menggunakan perintah.

Gunakan parameter penjadwalan

Untuk meneruskan nilai dinamis ke kode node saat waktu proses, definisikan variabel dalam format ${Nama Variabel}, lalu tetapkan nilainya di bagian Scheduling Parameter pada tab Properties. Untuk format yang didukung, lihat Format yang didukung untuk parameter penjadwalan.

Gunakan tipe data MaxCompute V2.0

Jika SQL Anda menggunakan fungsi yang bergantung pada tipe data MaxCompute V2.0, tambahkan SET odps.sql.type.system.odps2=true; sebelum pernyataan tersebut dan kirimkan keduanya bersamaan. Untuk detailnya, lihat Edisi tipe data MaxCompute V2.0.

Gunakan fungsi SQL

MaxCompute mendukung fungsi bawaan dan user-defined function (UDF) untuk pemrosesan dan analisis data.

Fungsi bawaan

Panggil fungsi bawaan secara langsung tanpa perlu pengaturan tambahan. Contoh berikut menggunakan fungsi dateadd untuk menambahkan satu bulan ke setiap nilai dalam kolom birth.

-- Aktifkan pemindaian tabel penuh untuk sesi ini.
SET odps.sql.allow.fullscan=true;

SELECT id, name, age, birth, dateadd(birth, 1, 'mm') AS birth_dateadd
FROM students;

Untuk daftar lengkap fungsi bawaan, lihat Ikhtisar fungsi bawaan.

User-defined function (UDF)

Untuk menggunakan UDF, tulis kode fungsi, unggah sebagai resource, lalu daftarkan fungsinya. Untuk petunjuk langkah demi langkah, lihat Buat dan gunakan UDF MaxCompute.

Lihat hasil eksekusi dan log

Setelah menjalankan kueri, hasilnya muncul di buku kerja. Maksimal 10.000 baris dan 10 MB data hasil dapat dikembalikan.

Contoh output — siswa dalam partisi 'boy', diurutkan berdasarkan ID:

+----+------+-----+------------+--------+
| 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    |
+----+------+-----+------------+--------+

Contoh output — kolom birth dengan fungsi `dateadd` diterapkan:

+----+-------+-----+------------+---------------+
| 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    |
+----+-------+-----+------------+---------------+

Pada tab Result, urutkan hasil berdasarkan kolom atau unduh hasilnya. Untuk detailnya, lihat Proses hasil kueri.

Untuk melihat log operasi, klik tab Runtime Log. Log akan dibuka di LogView. Untuk detailnya, lihat Gunakan LogView V2.0 untuk melihat informasi pekerjaan.

Karena penyesuaian oleh International Organization for Standardization (ISO) terhadap zona waktu UTC+8, stempel waktu untuk tahun antara 1900 dan 1928 berbeda dari waktu aktual sebesar 352 detik, dan stempel waktu sebelum tahun 1900 berbeda sebesar 9 detik.

Langkah berikutnya

Jelajahi kasus penggunaan lanjutan lainnya dengan node ODPS SQL: