Node MaxCompute SQL di DataWorks memungkinkan Anda menjadwalkan tugas MaxCompute SQL secara berkala. Tugas-tugas ini dapat diintegrasikan dengan jenis node lain dalam satu alur kerja terpadu. MaxCompute SQL menggunakan sintaks mirip SQL, sehingga ideal untuk pemrosesan data skala besar (tingkat TB) secara terdistribusi ketika hasil real-time tidak krusial. Topik ini menjelaskan cara mengembangkan tugas node MaxCompute SQL di DataWorks.
Pendahuluan
MaxCompute SQL digunakan untuk memproses dan mengkueri data di MaxCompute. Fitur ini mendukung operasi SQL umum seperti SELECT, INSERT, UPDATE, dan DELETE, serta sintaks dan fungsi khusus MaxCompute. Anda dapat mengkueri dan memproses data dengan menulis pernyataan mirip SQL tanpa perlu pemrograman kompleks. 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 Menambahkan anggota ke ruang kerja.
CatatanJika Anda menggunakan Akun Alibaba Cloud, Anda dapat melewati langkah ini.
Batasan
Node MaxCompute SQL memiliki batasan berikut untuk pengembangan SQL:
Kategori | Deskripsi |
Komentar | Hanya komentar satu baris yang dimulai dengan Untuk informasi lebih lanjut, lihat Komentar MaxCompute SQL. Batasan berikut juga berlaku untuk komentar:
|
Pengiriman SQL | ODPS SQL tidak mendukung penggunaan pernyataan SET dan USE secara independen; keduanya harus dieksekusi bersama pernyataan SQL tertentu. |
Pengembangan SQL | Ukuran kode SQL tidak boleh melebihi 128 KB, dan jumlah perintah SQL tidak boleh melebihi 200. |
Hasil kueri | Hanya pernyataan yang dimulai dengan Batasan berikut berlaku untuk hasil kueri:
Catatan Jika Anda mengalami batasan ini, Anda dapat mengunduh hasil kueri dengan salah satu metode berikut:
|
Catatan penggunaan
Pastikan akun yang digunakan untuk menjalankan tugas MaxCompute SQL memiliki izin yang diperlukan pada proyek MaxCompute terkait. Untuk detailnya, lihat Kontrol akses DataWorks On MaxCompute dan Izin MaxCompute.
Tugas MaxCompute SQL mengonsumsi kuota komputasi. Jika tugas berjalan lama, buka konsol MaxCompute untuk memantau konsumsi kuota dan pastikan sumber daya yang cukup tersedia untuk menjalankan tugas tersebut. Untuk informasi lebih lanjut, lihat Sumber daya komputasi—manajemen kuota.
Saat mengembangkan tugas node MaxCompute SQL, parameter khusus seperti alamat Object Storage Service (OSS) harus diapit tanda kutip ganda (""). Jika tidak ditambahkan tanda kutip, tugas mungkin gagal mengurai dan menjalankan.
Urutan eksekusi pernyataan yang mengandung kata kunci seperti
SETdanUSEbervariasi tergantung lingkungan DataWorks. 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.
Buat node MaxCompute SQL
Untuk petunjuknya, lihat Membuat node MaxCompute SQL.
Mengembangkan node MaxCompute SQL
Di halaman pengeditan node, lakukan operasi pengembangan berikut.
Kembangkan kode SQL
DataWorks menyediakan parameter penjadwalan untuk meneruskan nilai secara dinamis ke kode Anda saat waktu proses. Di node MaxCompute SQL, Anda dapat mendefinisikan variabel dengan format ${variable_name} dan memberikan nilainya di bagian Scheduling Parameters pada panel Scheduling Settings. Untuk informasi tentang format parameter penjadwalan yang didukung, lihat Sumber dan ekspresi untuk parameter penjadwalan. Perintah MaxCompute SQL mirip dengan sintaks SQL standar dan mendukung pernyataan Data Definition Language (DDL), Data Manipulation Language (DML), dan Data Query Language (DQL), serta sintaks khusus MaxCompute. Untuk sintaks dan contoh lengkap, lihat Ikhtisar SQL.
Bagian berikut memberikan contoh untuk berbagai kasus penggunaan:
Jika Anda menggunakan tipe data baru dalam fungsi ekstensi MaxCompute 2.0, Anda harus menambahkan
SET odps.sql.type.system.odps2=true;sebelum pernyataan SQL fungsi tersebut dan mengirimkannya bersama. Perintah ini mengaktifkan tipe data baru untuk sesi tersebut. Untuk informasi lebih lanjut tentang tipe data 2.0, lihat Edisi tipe data (2.0).Urutan eksekusi pernyataan MaxCompute SQL berbeda antara 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 pernyataan SQL berikut:
-- 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 menimpa data ke tabel target. Untuk informasi lebih lanjut, lihat Memasukkan atau menimpa data (INSERT INTO | INSERT OVERWRITE).
Hindari penggunaan pernyataanINSERT INTOkarena dapat menyebabkan duplikasi data yang tidak diinginkan. Kami menyarankan Anda menggunakanINSERT OVERWRITE. Untuk informasi lebih lanjut, lihat Memasukkan atau menimpa data.
Kode berikut merupakan contohnya:
-- Masukkan data.
INSERT OVERWRITE students PARTITION(gender='boy') VALUES (1,'ZhangSan',15,DATE '2008-05-15') ;Pernyataan INSERT dapat memicu perbandingan bidang DDL untuk membandingkan pernyataan SQL dalam klausa SELECT dengan bidang tabel target.
Fitur ini tidak didukung jika model skema tiga lapis diaktifkan untuk proyek MaxCompute tetapi tidak di tingkat penyewa.
-- Bandingkan bidang 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
-- Klausul FROM/JOIN dihilangkan di sini. Tambahkan sesuai logika bisnis Anda.
;Kueri data
Anda dapat menggunakan pernyataan SELECT untuk melakukan operasi seperti kueri bersarang, kueri berkelompok, dan pengurutan. Untuk informasi lebih lanjut, lihat Sintaks SELECT. Berikut contoh SQL-nya:
-- (Opsional) Aktifkan pemindaian tabel penuh di tingkat proyek. Operasi ini memerlukan hak istimewa tinggi.
-- SETPROJECT odps.sql.allow.fullscan=true;
-- Aktifkan pemindaian tabel penuh di tingkat sesi. 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;Secara default, pengguna RAM tidak dapat mengkueri tabel produksi. Untuk mendapatkan izin ini, Anda harus mengajukannya di Security Center. Untuk informasi tentang preset izin data dan kontrol akses MaxCompute di DataWorks, lihat Detail kontrol izin data untuk MaxCompute. Untuk informasi tentang cara memberikan izin menggunakan perintah di MaxCompute, lihat Mengelola izin pengguna menggunakan perintah.
Gunakan fungsi SQL
MaxCompute mendukung fungsi bawaan dan user-defined function (UDF) untuk pengembangan dan analisis data. 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 MaxCompute. Contoh berikut menjelaskan cara menggunakan fungsi SQL.
Fungsi bawaan: Fungsi bawaan adalah fungsi yang disediakan oleh MaxCompute. Anda dapat memanggilnya langsung. Berdasarkan contoh sebelumnya tentang membuat tabel, memasukkan data, dan mengkueri data, perintah contoh berikut menggunakan fungsi
dateadduntuk memodifikasi kolombirthberdasarkan unit dan jumlah tertentu:-- Aktifkan pemindaian tabel penuh di tingkat sesi. Ini hanya berlaku untuk sesi saat 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, mengunggah kode sebagai resource, lalu mendaftarkan fungsi tersebut. Untuk langkah-langkah spesifiknya, lihat Resource Management.
Debug node MaxCompute SQL
Di editor node, konfigurasikan parameter di panel Run Configuration di sebelah kanan.
Parameter
Deskripsi
Compute Engine
Pilih mesin komputasi MaxCompute yang telah diikat ke ruang kerja Anda.
Kuota komputasi
Pilih kuota komputasi yang telah Anda buat. Kuota ini menyediakan sumber daya komputasi yang diperlukan, seperti CPU dan memori, untuk pekerjaan komputasi.
Jika tidak tersedia kuota komputasi, klik Create Computing Quota dalam daftar drop-down untuk membuka konsol MaxCompute dan mengonfigurasi kuota.
Kelompok sumber daya
Pilih kelompok sumber daya penjadwalan yang dapat terhubung ke mesin komputasi. Untuk informasi lebih lanjut, lihat Solusi koneksi jaringan.
Di kotak dialog parameter pada bilah alat, pilih sumber data MaxCompute yang telah dibuat dan klik Run untuk menjalankan tugas MaxCompute SQL.
Lihat hasil
Anda dapat membuka hasil dalam spreadsheet atau menyalin kontennya ke file lokal.
CatatanKarena penyesuaian zona waktu historis untuk Tiongkok, kueri SQL di DataWorks mungkin mengembalikan hasil dengan offset waktu untuk periode tertentu. Offset-nya adalah 5 menit 52 detik untuk tanggal dan waktu dari tahun 1900 hingga 1928, dan 9 detik untuk tanggal dan waktu sebelum tahun 1900.
Untuk melihat log eksekusi, klik tautan LogView di tab
. Untuk informasi lebih lanjut, lihat Melihat informasi pekerjaan menggunakan Logview 2.0.Untuk mengurutkan hasil, klik panah drop-down di header kolom, pilih urutan ascending atau descending dari daftar Sort, lalu klik OK.
Untuk melihat bidang BLOB, klik ganda sel BLOB di hasil eksekusi. MaxCompute mendukung tipe data BLOB untuk menyimpan objek biner seperti gambar dan file audio. Di jendela Current Field Value yang muncul, Anda dapat melihat pratinjau kontennya. Gambar ditampilkan langsung, sedangkan teks ditampilkan dalam format read-only. Anda dapat beralih antara Blob View, Text View, dan JSON View menggunakan tombol di bagian bawah jendela.
Langkah berikutnya
Konfigurasi penjadwalan node: Jika node dalam direktori proyek perlu dijalankan secara berkala, Anda perlu mengatur Scheduling Policy dan mengonfigurasi properti penjadwalan terkait di bagian Scheduling Settings di sisi kanan node.
Menerbitkan node: Jika Anda perlu menerbitkan tugas ke lingkungan produksi untuk dieksekusi, klik ikon
untuk memulai proses penerbitan. Node dalam direktori proyek hanya dijadwalkan secara berkala setelah diterbitkan ke lingkungan produksi.
Lampiran 1: Urutan eksekusi SQL di lingkungan berbeda
Urutan eksekusi pernyataan yang mengandung kata kunci seperti SET dan USE dalam node MaxCompute SQL bervariasi tergantung lingkungan DataWorks.
Di Data Studio: Semua pernyataan
SETdanUSEdalam kode Anda digabungkan dan dieksekusi sebelum pernyataan SQL lainnya.Di Operation Center (untuk penjadwalan dan O&M): Pernyataan dieksekusi sesuai urutan penulisannya.
Asumsikan kode berikut didefinisikan dalam node.
SET a=b;
CREATE TABLE name1(id string);
SET c=d;
CREATE TABLE name2(id string);Urutan eksekusi di lingkungan berbeda adalah sebagai berikut:
Pernyataan SQL | Data Studio | Scheduling and O&M |
Pernyataan SQL pertama | | |
Pernyataan SQL kedua | | |
Lampiran 2: Praktik danau data terpadu
Untuk membaca data dari atau menulis data ke tabel Data Lake Formation (DLF) dalam tugas MaxCompute SQL, Anda dapat menggunakan MaxCompute External Project. External Project memungkinkan akses real-time ke metadata dan data dengan memetakan katalog DLF. Fitur ini mendelegasikan pengelolaan izin ke DLF dan mendukung akses serta manipulasi metadata untuk data yang disimpan di OSS yang dikelola DLF. Untuk informasi lebih lanjut, lihat Paimon DLF External Project.
Topik terkait
Untuk contoh tambahan tugas MaxCompute SQL, lihat topik-topik berikut: