Sebagian besar tipe node—termasuk node SQL dan node sinkronisasi batch—menggunakan metode yang sama untuk mendefinisikan dan mereferensikan parameter penjadwalan. Dua tipe node berperilaku berbeda: node PyODPS mengambil parameter melalui objek dictionary alih-alih penggantian string, sedangkan node Shell umum menggunakan variabel posisional alih-alih variabel bernama. Topik ini menyediakan contoh konfigurasi untuk setiap tipe node.
Node SQL dan node sinkronisasi batch
Node SQL (seperti ODPS SQL) dan node sinkronisasi batch menggunakan metode yang sama untuk mengonfigurasi parameter penjadwalan. Metode ini juga berlaku untuk sebagian besar tipe node lainnya. Topik ini menggunakan node ODPS SQL sebagai contoh untuk menunjukkan cara memberikan nilai ke variabel bawaan dan parameter kustom serta mereferensikannya dalam kode.
Beberapa node mungkin tidak mendukung parameter penjadwalan. Untuk informasi apakah tipe node tertentu mendukung parameter penjadwalan, lihat dokumentasi untuk tipe node tersebut.
Anda memberikan nilai ke parameter di area penugasan parameter, lalu mereferensikan variabel bawaan var1 dan var3, parameter kustom var2 dan var4, serta konstanta var5 di area kode. Contoh berikut menunjukkan cara memberikan nilai:
-
Berikan tanggal bisnis ke variabel bawaan var1:
var1=$bizdate -
Berikan waktu terjadwal ke variabel bawaan var3:
var3=$cyctime -
Berikan tanggal bisnis ke parameter kustom var2:
var2=${yyyymmdd} -
Berikan waktu terjadwal ke parameter kustom var4:
var4=$[yyyymmddhh24:mi:ss] -
Berikan konstanta abc ke var5:
var5=abc
Untuk memperoleh waktu relatif berdasarkan waktu terjadwal (misalnya, satu jam sebelumnya atau N menit yang lalu), Anda dapat menerapkan perhitungan offset ke parameter waktu terjadwal ($[...]): gunakan N/24 untuk offset jam dan N/24/60 untuk offset menit, dengan N adalah jumlah jam atau menit yang akan di-offset. Offset jam dan menit hanya didukung untuk waktu terjadwal. Tanggal bisnis (${...}) tidak mendukung offset ini. Contoh berikut menggunakan "ambil satu jam sebelumnya" sebagai ilustrasi:
-
Ambil satu jam sebelum waktu terjadwal (timestamp lengkap dalam format yyyymmddhh24miss):
$[yyyymmddhh24miss-1/24] -
Ambil hanya jam sebelumnya (format 24 jam):
$[hh24-1/24] -
Ambil jam, menit, dan detik dari satu jam sebelumnya:
$[hh24miss-1/24] -
Ambil tanggal dalam format yyyymmdd untuk satu jam sebelumnya:
$[yyyymmdd-1/24] -
Ambil tanggal untuk hari sebelumnya dan satu jam sebelumnya:
$[yyyymmdd-1-1/24] -
Ambil waktu terjadwal dikurangi 15 menit:
$[yyyymmddhh24miss-15/24/60]
Perhitungan offset jam dan menit dapat menghasilkan skenario lintas hari. Untuk daftar lengkap format penugasan yang didukung dan informasi tentang penanganan lintas hari, lihat Format parameter penjadwalan yang didukung.
Node PyODPS
Untuk mencegah injeksi kode, node PyODPS tidak mendukung pendefinisian variabel dengan sintaks penggantian string ${param_name} secara langsung dalam kode. Sebelum menjalankan kode, Anda harus mengambil parameter penjadwalan dari variabel global args, yang bertipe dict (objek dictionary). Metode penugasan parameter sama seperti pada tipe node lainnya.
Dalam editor kode node PyODPS, gunakan dictionary args untuk mereferensikan parameter penjadwalan (seperti args['var1'], args['var2'], dan args['var3']), dan gunakan fungsi print untuk menampilkan nilai parameter. Di panel Scheduling Configuration di sisi kanan, berikan nilai ke parameter tersebut di bagian Scheduling Parameters.
Anda memberikan nilai ke parameter di area penugasan parameter, lalu mereferensikan parameter bawaan var1 dan parameter kustom var2 serta var3 di area kode. Setelah objek dictionary ditambahkan, parameter tersebut menjadi args['var1'], args['var2'], dan args['var3']. Contoh berikut menunjukkan cara memberikan nilai:
-
Berikan tanggal bisnis ke parameter bawaan var1:
var1=$bizdate -
Berikan tanggal bisnis ke parameter kustom var2:
var2=${yyyymmdd} -
Berikan tanggal bisnis ke parameter kustom var3:
var3=$[yyyymmdd]
Contoh konfigurasi node Shell umum
Variabel dalam node Shell umum tidak dapat memiliki nama kustom. Variabel tersebut harus diberi nama $1, $2, $3, dan seterusnya (diberi nomor secara berurutan naik). Ketika jumlah parameter melebihi 10, gunakan sintaks ${10} untuk mendeklarasikan variabel tersebut.
Untuk parameter ke-10 dan seterusnya dalam node Shell, gunakan format ${10} untuk mereferensikannya (misalnya, echo ${10}).
Anda memberikan nilai ke parameter di area penugasan parameter, lalu mereferensikan parameter bawaan $1 dan parameter kustom $2 serta $3 di area kode. Contoh berikut menunjukkan cara memberikan nilai:
Node Shell umum hanya mendukung penugasan parameter berbasis ekspresi. Pisahkan beberapa penugasan parameter dengan spasi. Nilai-nilai tersebut sesuai dengan parameter sesuai urutan pendefinisian. Misalnya, parameter pertama yang didefinisikan dalam node Shell adalah $1, sehingga nilai pertama di area penugasan parameter ($bizdate) diberikan ke $1.
-
Berikan tanggal bisnis ke parameter bawaan $1:
$bizdate -
Berikan tanggal bisnis ke parameter kustom $2:
${yyyymmdd} -
Berikan waktu terjadwal ke parameter kustom $3:
$[yyyymmdd]
Untuk format penugasan parameter penjadwalan lainnya yang didukung, lihat Format parameter penjadwalan yang didukung. Untuk alur kerja lengkap mengenai konfigurasi dan penggunaan parameter penjadwalan, lihat Konfigurasi dan gunakan parameter penjadwalan.
Contoh sinkronisasi batch
Untuk skenario umum penggunaan parameter penjadwalan dalam Data Integration, lihat Gunakan parameter penjadwalan dalam tugas sinkronisasi batch.