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:
Membuat node ODPS SQL. Untuk informasi selengkapnya, lihat Buat dan kelola node ODPS.
Batasan
| Constraint | Limit |
|---|---|
| Ukuran kode node | 128 KB |
| Jumlah pernyataan SQL per node | 200 |
| Jumlah baris hasil kueri yang ditampilkan | 10.000 |
| Data hasil kueri yang dikembalikan | 10 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 SQL | DataStudio | Lingkungan penjadwalan |
|---|---|---|
| Pertama | SET a=b; SET c=d; CREATE TABLE name1(id STRING); | SET a=b; CREATE TABLE name1(id STRING); |
| Kedua | SET 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');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: