Parameter penjadwalan secara dinamis menggantikan nilai berbasis waktu dalam kode Anda pada waktu proses, sehingga menghilangkan kebutuhan untuk menyematkan tanggal secara langsung dalam alur kerja berulang. Topik ini menjelaskan format dan penggunaan yang didukung untuk nilai parameter.
Pastikan Anda memahami cara mengonfigurasi parameter penjadwalan. Untuk detailnya, lihat Konfigurasi dan gunakan parameter penjadwalan.
Konsep inti: Garis dasar waktu
Parameter waktu secara dinamis menggantikan string waktu pada waktu proses. Semua parameter waktu di DataWorks didasarkan pada dua garis dasar waktu inti berikut.
|
Konsep |
Deskripsi |
Bawaan |
Format kustom |
Presisi |
|
Tanggal bisnis |
Hari sebelum tanggal jadwal eksekusi task. Dalam skenario komputasi offline T+1, tanggal ini merepresentasikan tanggal data bisnis dihasilkan. Misalnya, jika Anda menjalankan task hari ini untuk menghitung pendapatan penjualan kemarin, "kemarin" merujuk pada tanggal transaksi terjadi, yaitu tanggal bisnis. |
|
|
Tahun-bulan-hari |
|
Waktu terjadwal |
scheduled time yang ditetapkan dalam konfigurasi penjadwalan task. Pada waktu proses, sistem menyelesaikannya menjadi hari saat ini. Ini merepresentasikan waktu teoretis eksekusi task dan tidak bergeser akibat antrian sumber daya atau keterlambatan. |
|
|
Tahun-bulan-hari-jam-menit-detik |
Rangkuman:
-
Tanggal bisnis ≈ Kemarin (tanggal data)
-
Waktu terjadwal ≈ Hari ini (waktu task dijalankan)
Task T+1 tipikal dimulai pada dini hari hari ini (waktu terjadwal) untuk memproses data dari kemarin (tanggal bisnis).
Ekspresi nilai parameter
Parameter penjadwalan mendukung jenis nilai berikut:
-
Parameter waktu kustom: Ekspresi seperti
${...}dan$[...]yang mentransformasi nilai berdasarkan dua garis dasar waktu: tanggal bisnis dan waktu terjadwal. Untuk informasi lebih lanjut, lihat Parameter waktu kustom. -
Parameter sistem bawaan: Variabel yang telah ditentukan sebelumnya, seperti
$bizdate,$bizmonth, dan$jobid, yang mengembalikan nilai seperti tanggal bisnis, bulan bisnis, atau ID alur kerja. Nilai-nilai ini tidak terbatas pada nilai berbasis waktu. Untuk informasi lebih lanjut, lihat Parameter sistem bawaan. -
Konstanta: Nilai literal, seperti
'123'dan'abc'.
Batasan karakter khusus: Ekspresi parameter tidak boleh mengandung spasi atau tanda sama dengan (=).
Penggunaan
Anda menentukan logika penugasan untuk parameter penjadwalan dengan menetapkan nama parameter dan nilai parameter di bagian . Setelah menentukan parameter tersebut, Anda dapat mereferensikannya dalam kode menggunakan sintaks ${nama parameter}. Untuk instruksi lengkap, lihat Konfigurasi dan gunakan parameter penjadwalan.
-
Gunakan parameter sistem bawaan
$bizdatedan$cyctimeuntuk merepresentasikan tanggal bisnis dan waktu terjadwal. Parameter-parameter ini diselesaikan menjadi nilai berikut:-
$bizdate=${yyyymmdd} -
$cyctime=$[yyyymmddhh24miss]

Contoh di atas menunjukkan definisi parameter untuk $bizdate (diselesaikan menjadi ${yyyymmdd}) dan $cyctime (diselesaikan menjadi $[yyyymmddhh24miss]), serta hasil pratinjau mereka ketika tanggal bisnis adalah 2025-10-16.
-
-
Jika nilai waktu dasar bawaan tidak memenuhi kebutuhan Anda, gunakan sintaks
${...}dan$[...]untuk mentransformasi dua waktu dasar tersebut menjadi parameter waktu kustom.
Parameter waktu kustom
DataWorks mendukung pengambilan tanggal bisnis dan waktu terjadwal menggunakan format ${...} dan $[...] masing-masing. Format-format ini memungkinkan Anda mentransformasi nilai waktu sesuai kebutuhan bisnis. Contoh berikut mengasumsikan sebuah node dijadwalkan berjalan setiap hari pukul 02:30:45 dan tanggal bisnis adalah 20251031. Waktu dasar adalah:
-
Tanggal bisnis: Nilai ${yyyymmdd} adalah 20251031.
-
Waktu terjadwal: Nilai $[yyyymmddhh24miss] adalah 20251101023045.
Perbedaan utama antara ${...} dan $[...]
Format ${...} dan $[...] berbeda dalam garis dasar waktu dan kemampuan perhitungan mereka. Menggabungkan keduanya dapat menyebabkan kesalahan data.
|
Perbandingan |
|
|
|
Garis dasar waktu |
Tanggal bisnis (T-1) |
Waktu terjadwal (T) |
|
Presisi waktu |
Hari (tahun, bulan, hari) |
Detik (tahun, bulan, hari, jam, menit, detik) |
|
Offset yang didukung |
Mendukung perhitungan offset untuk tahun, bulan, minggu, dan hari. |
Mendukung perhitungan offset untuk hari, jam, dan menit. |
|
Batasan utama |
Tidak mendukung pemformatan atau perhitungan offset untuk satuan waktu yang lebih kecil seperti jam, menit, atau detik. |
Offset tahun atau bulan langsung menggunakan sintaks seperti |
|
Parameter sistem ekuivalen |
|
|
Pemformatan waktu
Gunakan format ${...} atau $[...] untuk menghasilkan parameter waktu. Gabungkan kode format seperti yyyy, yy, mm, dan dd untuk menghasilkan tanggal yang N tahun, bulan, atau hari sebelum atau sesudah tanggal bisnis.
|
Kode |
Deskripsi |
|
|
||
|
Contoh |
Hasil |
Contoh |
Hasil |
||
|
|
Tahun 4 digit |
|
|
|
|
|
|
Bulan 2 digit |
|
|
|
|
|
|
Hari 2 digit |
|
|
|
|
|
|
Jam dalam format 24 jam |
Tidak didukung (presisi tingkat hari) |
- |
|
|
|
|
Jam dalam format 12 jam |
- |
|
|
|
|
|
Menit |
- |
|
|
|
|
|
Kedua |
- |
|
|
|
|
|
Tahun dan bulan |
|
|
|
|
|
|
Tanggal diformat dengan tanda hubung |
|
|
|
|
|
|
Tanggal dan waktu diformat dengan tanda hubung dan titik dua |
Tidak didukung (presisi tingkat hari) |
- |
Format ini dapat dicapai dengan menggunakan penggabungan string. Lihat Penggabungan string: Kasus 2. |
|
Perhitungan offset
Perhitungan offset memungkinkan Anda menambah atau mengurangi waktu dari tanggal bisnis atau waktu terjadwal. Anda dapat menerapkan offset sebesar N tahun, bulan, hari, jam, atau menit relatif terhadap garis dasar waktu. Offset jam dan menit hanya didukung untuk waktu terjadwal. Kemampuan offset ${...} dan $[...] berbeda karena mereka mendukung tingkat presisi waktu yang berbeda.
-
${...}perhitungan offset-
Kemampuan inti: Mendukung offset bilangan bulat untuk tahun, bulan, minggu, dan hari.
PentingOffset untuk jam dan menit tidak didukung. Misalnya, ${yyyy-mm-dd-1/24} adalah sintaks yang tidak valid.
-
Sintaks:
${<format_waktu><±N>}, di mana satuan N adalah satuan terkecil dalam format tersebut, sepertiyyyymmatauyyyymmdd.Kebutuhan
Satuan offset
Sintaks
Contoh
N tahun sebelum/setelah
Tahun
${yyyy±N}atau${yy±N}Dapatkan tahun sebelumnya:
${yyyy-1}N bulan sebelum/setelah
Bulan
${yyyymm±N}Dapatkan bulan sebelumnya:
${yyyymm-1}N minggu sebelum/setelah
Minggu
${yyyymmdd±7*N}Dapatkan minggu sebelumnya:
${yyyymmdd-7*1}N hari sebelum/setelah
Hari
${yyyymmdd±N}Dapatkan hari sebelumnya:
${yyyymmdd-1}
-
-
$[...]perhitungan offset-
Kemampuan inti: Mendukung offset pecahan untuk hari, jam, dan menit.
PentingFormat
$[...]tidak dapat menggunakan ekspresi seperti$[yyyy-N]atau$[mm-N]untuk mengambil tanggal N tahun atau bulan lalu. Untuk melakukan offset tahun atau bulan, Anda harus menggunakan fungsiadd_months. -
Sintaks:
$[<format_waktu><±N>], di mana N merepresentasikan pecahan hari: gunakanN/24untuk offset N jam danN/24/60untuk offset N menit.Kebutuhan
Satuan offset
Sintaks
Contoh
N tahun sebelum/setelah
Tahun
N tahun kemudian:
$[add_months(yyyymmdd,12*N)]
N tahun sebelumnya:$[add_months(yyyymmdd,-12*N)]Dapatkan tahun sebelumnya:
$[add_months(yyyymmdd,-12)]N bulan sebelum/setelah
Bulan
N bulan kemudian:
$[add_months(yyyymmdd,N)]
N bulan sebelumnya:$[add_months(yyyymmdd,-N)]Dapatkan bulan sebelumnya:
$[add_months(yyyymmdd,-1)]N minggu sebelum/setelah
Minggu
$[yyyymmdd±7*N]Dapatkan minggu sebelumnya:
$[yyyymmdd-7*1]N hari sebelum/setelah
Hari
$[yyyymmdd±N]Dapatkan hari sebelumnya (kemarin):
$[yyyymmdd-1]N jam sebelum/setelah
Jam
Format yang tersedia:
-
$[hh24miss±N/24],$[hh24±N/24] -
$[<format_waktu_kustom>±N/24]
Dapatkan jam sebelumnya dalam berbagai format:
-
Bulan:
$[mm-1/24] -
Tahun:
$[yyyy-1/24] -
Tahun dan bulan:
$[yyyymm-1/24] -
Tahun, bulan, dan hari:
$[yyyymmdd-1/24] -
Hari sebelumnya dan jam sebelumnya:
$[yyyymmdd-1-1/24]
N menit sebelum/setelah
Menit
Format yang tersedia:
-
$[hh24miss±N/24/60] -
$[yyyymmddhh24miss±N/24/60] -
$[mi±N/24/60] -
$[<format_waktu_kustom>±N/24/60]
Dapatkan waktu 15 menit sebelum waktu terjadwal dalam berbagai format:
-
$[yyyy-15/24/60] -
$[yyyymm-15/24/60] -
$[yyyymmdd-15/24/60] -
$[hh24-15/24/60] -
$[mi-15/24/60]
Offset gabungan
Hari + Jam
$[yyyymmdd±N±M/24], di mana N adalah offset hari dan M adalah offset jam.Contoh: Dapatkan waktu untuk hari sebelumnya dan jam sebelumnya →
$[yyyymmdd-1-1/24]Catatan-
Penanganan lintas hari: Offset jam dan menit dapat menghasilkan waktu yang melewati batas hari. Untuk detail cara menanganinya, lihat Cara menangani penggantian parameter lintas hari saat mengoffset satu jam.
-
Kalibrasi akhir bulan: Saat Anda menerapkan offset bulan ke tanggal akhir bulan, jika bulan target memiliki jumlah hari lebih sedikit, hasilnya secara otomatis dikalibrasi ke hari terakhir bulan tersebut. Misalnya, mengurangi satu bulan dari 2025-03-31 menghasilkan 2025-02-28 karena Februari tidak memiliki 31 hari.
-
-
Transformasi sekunder menggunakan fungsi engine
Jika kemampuan pemformatan dan offset bawaan tidak dapat menghasilkan nilai yang Anda butuhkan (misalnya, hari terakhir bulan sebelumnya), terapkan transformasi sekunder menggunakan fungsi engine node atau node penugasan.
Lihat: Skenario khas untuk pemrosesan sekunder nilai kembali parameter penjadwalan.
Penggabungan string
Gunakan penggabungan string untuk membuat string tanggal terstruktur yang tidak didukung oleh sintaks bawaan. Metode ini menggabungkan bagian tanggal yang dihasilkan oleh parameter penjadwalan dengan string konstan.
Kasus 1: Secara dinamis mendapatkan hari pertama setiap bulan
-
Skenario: Anda memerlukan string yang merepresentasikan hari pertama bulan berjalan dalam format
yyyymm01, terlepas dari hari eksekusi task. -
Implementasi:
-
Ambil bagian tahun dan bulan: Gunakan
${yyyymm}untuk mendapatkan tahun dan bulan dari tanggal bisnis saat ini. Misalnya, jika tanggal bisnis adalah20231027, hasilnya adalah202310. -
Gabungkan tahun dan bulan yang diekstraksi dengan string konstan
'01'. -
Pemanggilan parameter:
first_day_of_month=${yyyymm}01
-
-
Hasil: Saat task dijalankan,
${first_day_of_month}diganti dengan20231001.
Kasus 2: Menghasilkan timestamp dalam format yyyy-mm-dd hh24:mi:ss
-
Skenario: Anda perlu menghasilkan timestamp dalam format
yyyy-mm-dd hh24:mi:ss, seperti2023-11-01 02:30:45. -
Implementasi:
-
Definisikan dua parameter,
datetime1dandatetime2. Tetapkan sebagai berikut:datetime1=$[yyyy-mm-dd]dandatetime2=$[hh24:mi:ss]. -
Gabungkan parameter
datetime1dandatetime2, dipisahkan oleh spasi. -
Pemanggilan parameter: pt=
${datetime1}${datetime2}
-
-
Hasil: Saat task dijalankan,
${datetime1}${datetime2}diganti dengan2023-11-01 02:30:45.
Parameter sistem bawaan
DataWorks menyediakan parameter sistem bawaan berikut. Karena format waktunya tetap dan fleksibilitasnya terbatas, disarankan menggunakan parameter waktu kustom sebagai gantinya.
|
Parameter |
Deskripsi |
|
$bizdate |
Tanggal bisnis dalam format Umumnya bawaan ke hari sebelum waktu eksekusi task. |
|
$cyctime |
Waktu terjadwal dalam format |
|
$gmtdate |
Tanggal saat ini dalam format Bawaan ke tanggal saat ini. Untuk pengisian ulang data, tanggalnya adalah |
|
$bizmonth |
Bulan bisnis dalam format
|
|
$jobid |
ID alur kerja yang berisi task tersebut. |
|
$nodeid |
ID node. |
|
$taskid |
ID instans yang dihasilkan oleh node. |
Contoh penggantian parameter
Nilai penggantian untuk parameter penjadwalan ditentukan saat instans dibuat dan tidak dipengaruhi oleh waktu mulai aktual.
Skenario 1: Penjadwalan normal
Dalam penjadwalan normal, penggantian parameter didasarkan pada dua garis dasar waktu: tanggal bisnis dan waktu terjadwal.
-
${...}(tanggal bisnis): Nilainya berasal dari tanggal bisnis instans. -
$[...](waktu terjadwal): Nilainya berasal dari waktu terjadwal instans.
Misalnya, pertimbangkan task harian bernama A yang dijadwalkan berjalan pukul 00:00 dengan parameter berikut:
-
yesterday=${yyyymmdd} -
today=$[yyyymmddhh24miss]
Tabel berikut menunjukkan bagaimana parameter-parameter ini diganti untuk instans tertentu:
|
Waktu terjadwal |
Tanggal bisnis |
yesterday=${yyyymmdd} |
today=$[yyyymmddhh24miss] |
|
|
|
|
|
Skenario 2: Pengisian ulang data
Saat melakukan pengisian ulang data, logika penggantian parameter berubah berdasarkan tanggal bisnis yang dipilih. Hal ini terutama memengaruhi parameter yang bergantung pada waktu terjadwal.
-
${...}(tanggal bisnis): Garis dasarnya adalah tanggal bisnis yang dipilih secara manual. -
$[...](waktu terjadwal): Garis dasarnya adalah tanggal bisnis yang dipilih secara manual + 1 hari.
Misalnya, jika Anda melakukan pengisian ulang task A dengan 2025-03-15 sebagai tanggal bisnis:
|
Tanggal bisnis yang dipilih |
yesterday=${yyyymmdd} |
today=$[yyyymmddhh24miss] |
|
|
|
|
FAQ
Untuk pertanyaan tentang parameter penjadwalan, lihat FAQ Parameter Penjadwalan.