Parameter penjadwalan adalah fitur inti DataWorks yang secara dinamis menggantikan nilai berbasis waktu dalam kode Anda selama eksekusi tugas otomatis. Fitur ini menghilangkan kebutuhan untuk menyematkan tanggal secara langsung (hard-code) dalam tugas berulang, sehingga alur kerja Anda dapat secara otomatis menyesuaikan diri dengan berbagai tanggal bisnis dan waktu eksekusi. Topik ini menjelaskan format yang didukung untuk nilai parameter dan cara menggunakannya.
Sebelum membaca topik ini, pastikan Anda memahami cara mengonfigurasi parameter penjadwalan. Untuk informasi lebih lanjut, lihat Konfigurasikan dan gunakan parameter penjadwalan.
Konsep inti: Garis dasar waktu
Parameter waktu merupakan kasus penggunaan utama dari parameter penjadwalan. Parameter ini digunakan untuk menggantikan berbagai string waktu secara dinamis saat tugas dijalankan. Semua parameter waktu dinamis di DataWorks didasarkan pada dua garis dasar waktu inti berikut.
Konsep | Definisi | Nilai parameter default | Format kustom | Presisi waktu |
Tanggal bisnis | Tanggal data yang sedang diproses, yaitu hari sebelumnya dari tanggal jadwal eksekusi tugas. Dalam skenario komputasi offline T+1, ini merepresentasikan tanggal terjadinya data bisnis. Misalnya, jika hari ini Anda menghitung pendapatan penjualan kemarin, maka kemarin adalah tanggal transaksi terjadi, yang merupakan tanggal bisnis. |
|
| Tahun, bulan, hari |
Waktu penjadwalan | scheduling time yang ditetapkan dalam konfigurasi penjadwalan. Saat tugas dijalankan, sistem menggantinya dengan tanggal eksekusi instans tugas tersebut (hari ini). Ini adalah waktu eksekusi teoretis tugas dan tidak berubah meskipun terjadi antrian sumber daya atau penundaan selama eksekusi aktual. |
|
| Tahun, bulan, hari, jam, menit, detik |
Rangkuman kesetaraan konsep:
Tanggal bisnis ≈ Kemarin (tanggal data)
Waktu penjadwalan ≈ Hari ini (saat tugas dijalankan)
Tugas T+1 tipikal dimulai pada dini hari hari ini (waktu penjadwalan) untuk memproses data dari kemarin (tanggal bisnis).
Ekspresi nilai parameter
Parameter penjadwalan mendukung beberapa jenis penugasan, termasuk yang berikut:
Parameter waktu kustom: Seperti
${...}dan$[...], yang dapat ditransformasikan berdasarkan dua garis dasar waktu (tanggal bisnis dan waktu penjadwalan). Untuk informasi lebih lanjut, lihat Parameter waktu kustom.Parameter sistem bawaan: Seperti
$bizdate,$bizmonth, dan$jobid, yang dapat Anda gunakan untuk mengambil tanggal bisnis, bulan bisnis, ID alur kerja, dan informasi lainnya. Parameter ini tidak terbatas pada nilai berbasis waktu. Untuk informasi lebih lanjut, lihat Parameter sistem bawaan.Konstanta: Seperti
'123'dan'abc'.
Pembatasan karakter khusus: Ekspresi parameter tidak mendukung spasi atau karakter =.
Prinsip penggunaan dasar
Anda dapat menentukan logika penugasan untuk parameter penjadwalan dengan mengatur nama parameter dan nilai parameter di bagian . Setelah menentukan parameter, Anda dapat mereferensikannya dalam kode menggunakan format ${parameter_name}. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter, lihat Konfigurasikan dan gunakan parameter penjadwalan.
Anda dapat langsung menggunakan parameter sistem bawaan
$bizdatedan$cyctimemasing-masing untuk tanggal bisnis dan waktu penjadwalan. Keduanya setara dengan yang berikut:$bizdate=${yyyymmdd}$cyctime=$[yyyymmddhh24miss]

Gambar berikut membandingkan definisi parameter untuk $bizdate dan ${yyyymmdd}, serta untuk $cyctime dan $[yyyymmddhh24miss]. Gambar tersebut juga menunjukkan hasil pratinjau ketika tanggal bisnis adalah 16 Oktober 2025.
Jika nilai yang dikembalikan oleh parameter garis dasar waktu tidak memenuhi kebutuhan Anda, Anda dapat membuat parameter waktu kustom menggunakan
${...}dan$[...]. Parameter waktu kustom merupakan transformasi berdasarkan dua garis dasar waktu tersebut.
Parameter waktu kustom
DataWorks memungkinkan Anda menggunakan ${...} dan $[...] untuk mengambil waktu bisnis dan waktu penjadwalan. Fitur ini juga mendukung transformasi untuk menyesuaikan waktu sesuai kebutuhan. Contoh berikut mengasumsikan node dikonfigurasi dengan penjadwalan harian dan waktu penjadwalan pukul 02:30:45. Jika tanggal bisnis adalah 20251031, garis dasar waktunya adalah sebagai berikut:
Tanggal bisnis: Nilai ${yyyymmdd} adalah 20251031.
Waktu penjadwalan: Nilai $[yyyymmddhh24miss] adalah 20251101023045.
Perbedaan inti antara ${...} dan $[...]
Format ${...} dan $[...] memiliki perbedaan mendasar dalam garis dasar waktu dan kemampuan perhitungan. Menggunakan format yang salah akan menyebabkan error data.
Perbandingan |
|
|
Garis dasar waktu | Tanggal bisnis (T-1) | Waktu penjadwalan (T) |
Presisi waktu | Hari (tahun, bulan, hari) | Second (tahun, bulan, hari, jam, menit, detik) |
Kemampuan perhitungan offset | Mendukung offset untuk tahun, bulan, minggu, dan hari. | Mendukung offset untuk hari, jam, dan menit. |
Batasan inti | Anda tidak dapat memformat atau menghitung offset untuk unit waktu yang lebih kecil seperti jam, menit, atau detik. | Tidak mendukung offset tahun atau bulan langsung menggunakan sintaks seperti |
Parameter sistem ekuivalen |
|
|
Pemformatan waktu
Anda dapat menggunakan kurung kurawal ${...} atau kurung siku $[...] yang dikombinasikan dengan kombinasi kustom yyyy, yy, mm, dan dd untuk menghasilkan parameter waktu. Hal ini memungkinkan Anda mengambil tanggal N tahun, bulan, atau hari sebelum atau sesudah tanggal bisnis.
Kode | Deskripsi |
|
| ||
Metode penugasan | Hasil | Metode penugasan | Hasil | ||
| Tahun 4 digit |
|
|
|
|
| Bulan 2 digit |
|
|
|
|
| Hari 2 digit |
|
|
|
|
| Jam dalam format 24 jam | Tidak didukung (presisi hari) | - |
|
|
| Jam dalam format 12 jam | - |
|
| |
| Menit | - |
|
| |
| Kedua | - |
|
| |
| Ambil tahun dan bulan |
|
|
|
|
| Format dengan tanda hubung |
|
|
|
|
| Format dengan tanda hubung, termasuk waktu | Tidak didukung (presisi hari) | - | Untuk metode yang didukung, lihat Penggabungan String: Kasus 2. | |
Perhitungan offset
Perhitungan offset merupakan fitur inti dari parameter dinamis yang memungkinkan Anda menambah atau mengurangi waktu dari tanggal bisnis atau waktu penjadwalan. Misalnya, Anda dapat mengambil tanggal N tahun, bulan, atau hari sebelum atau sesudah garis dasar. Anda juga dapat mengambil waktu N jam atau menit sebelum atau sesudah garis dasar, tetapi ini hanya didukung untuk waktu penjadwalan. Format ${...} dan $[...] mendukung rentang yang berbeda karena memiliki presisi garis dasar waktu yang berbeda.
Perhitungan offset dalam mode
${...}Kemampuan inti: Mendukung offset bilangan bulat untuk tahun, bulan, minggu, dan hari.
PentingOffset jam atau menit tidak didukung. Misalnya, sintaks seperti ${yyyy-mm-dd-1/24} tidak valid.
Sintaks:
${<format_waktu><±N>}. Dalam format ini, N berkorespondensi dengan unit terkecil dari format waktu. Misalnya, jika formatnya adalah yyyymm, N merepresentasikan offset dalam bulan (mm). Jika formatnya adalah yyyymmdd, N merepresentasikan offset dalam hari (dd).Periode offset tanggal
Offset Unit
Metode
Contoh
N tahun sebelum/setelah
Tahun
${yyyy±N}atau${yy±N}Tahun sebelumnya:
${yyyy-1}N bulan sebelum/setelah
Bulan
${yyyymm±N}Bulan sebelumnya:
${yyyymm-1}N minggu sebelum/setelah
Minggu
${yyyymmdd±7*N}Minggu sebelumnya:
${yyyymmdd-7*1}N hari sebelum/setelah
Hari
${yyyymmdd±N}Hari sebelum kemarin:
${yyyymmdd-1}
Perhitungan offset dalam mode
$[...]Kemampuan inti: Mendukung offset pecahan untuk hari, jam, dan menit.
PentingFormat
$[...]tidak mendukung offset tahun atau bulan menggunakan format seperti$[yyyy-N]atau$[mm-N]. Untuk melakukan perhitungan offset pada tahun atau bulan, gunakan fungsiadd_months.Sintaks:
$[<format_waktu><±N>]. Untuk menentukan offset jam, gunakan N/24. Untuk menentukan offset menit, gunakan N/24/60. Dalam ekspresi ini, N adalah jumlah jam atau menit untuk offset tersebut.Skenario
Satuan Offset
Metode
Contoh
N tahun sebelum/setelah
Tahun
$[add_months(yyyymmdd,12*N)](N tahun setelah)$[add_months(yyyymmdd,-12*N)](N tahun sebelum)Tahun sebelumnya:
$[add_months(yyyymmdd,-12)]N bulan sebelum/setelah
Bulan
$[add_months(yyyymmdd,N)](N bulan setelah)$[add_months(yyyymmdd,-N)](N bulan sebelum)Bulan sebelumnya:
$[add_months(yyyymmdd,-1)]N minggu sebelum/setelah
Minggu
$[yyyymmdd±7*N]Minggu sebelumnya:
$[yyyymmdd±7*1]N hari sebelum/setelah
Hari
$[yyyymmdd±N]Kemarin:
$[yyyymmdd-1]N jam sebelum/setelah
Jam
Format yang tersedia:
$[hh24miss±N/24],$[hh24±N/24]$[Custom time format±N/24].
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]$[custom time format±N/24/60]
15 menit sebelum waktu penjadwalan 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 kompleks
Hari + Jam
$[yyyymmdd±N±M/24], dengan N sebagai offset hari dan M sebagai offset jam.Contoh: Ambil hari sebelumnya dan jam sebelumnya →
$[yyyymmdd-1-1/24]CatatanSaat melakukan perhitungan offset untuk jam dan menit, masalah lintas hari (cross-day) dapat terjadi. Untuk informasi lebih lanjut tentang cara menangani penggantian parameter lintas hari, lihat Bagaimana cara menangani penggantian parameter lintas hari saat saya mengurangi satu jam dari parameter penjadwalan?.
Saat melakukan perhitungan offset bulan pada tanggal akhir bulan, jika bulan tujuan tidak memiliki tanggal tersebut, hasilnya secara otomatis dikalibrasi ke tanggal terakhir bulan tujuan. Misalnya, jika tanggal saat ini adalah 2025-03-31 dan Anda mengurangi satu bulan, hasilnya adalah 2025-02-28 karena Februari tidak memiliki tanggal 31.
Transformasi sekunder menggunakan fungsi engine
Jika fitur pemformatan dan offset bawaan tidak dapat menghasilkan nilai yang Anda butuhkan (misalnya, mengambil tanggal terakhir bulan sebelumnya), Anda dapat menggunakan fungsi bawaan dari mesin komputasi node target atau node penugasan untuk melakukan transformasi sekunder pada parameter waktu saat memanggilnya.
Untuk informasi lebih lanjut, lihat Skenario khas untuk pemrosesan sekunder nilai kembali parameter penjadwalan.
Penggabungan string
Anda dapat menggunakan metode ini untuk membangun string tanggal tertentu yang tidak didukung oleh sintaks bawaan tetapi mengikuti pola reguler. Metode ini menggabungkan bagian tanggal yang dihasilkan oleh parameter penjadwalan dengan string konstan tetap.
Kasus 1: Ambil secara dinamis tanggal pertama setiap bulan.
Skenario: Terlepas dari hari eksekusi tugas, Anda memerlukan string yang merepresentasikan tanggal pertama bulan berjalan dalam format
yyyymm01.Implementasi:
Ekstrak tahun dan bulan: Gunakan
${yyyymm}untuk mengambil tahun dan bulan dari tanggal bisnis saat ini. Misalnya, jika tanggal bisnis adalah20231027, hasilnya adalah202310.Gabungkan dengan konstanta: Gabungkan tahun dan bulan yang diekstrak dengan string
'01'.Pemanggilan parameter:
first_day_of_month=${yyyymm}01
Hasil: Saat tugas dijalankan,
${first_day_of_month}diganti dengan20231001.
Kasus 2: Ambil waktu dalam format yyyy-mm-dd hh24:mi:ss.
Skenario: Anda perlu mendapatkan waktu dalam format
yyyy-mm-dd hh24:mi:ss, seperti2023-11-01 02:30:45.Implementasi:
Atur parameter
datetime1menjadidatetime1=$[yyyy-mm-dd]dan parameterdatetime2menjadidatetime2=$[hh24:mi:ss-1/24/60].Gabungkan parameter: Gabungkan
datetime1dandatetime2dengan spasi.Pemanggilan parameter: pt=
${datetime1}${datetime2}.
Hasil: Saat tugas dijalankan,
${datetime1}${datetime2}diganti dengan2023-11-01 02:30:45.
Parameter sistem bawaan
DataWorks mendukung parameter sistem berikut, yang dapat Anda gunakan untuk mengatur nilai parameter penjadwalan. Namun, metode ini menawarkan fleksibilitas yang lebih rendah dan menggunakan format waktu tetap. Kami menyarankan Anda menggunakan parameter waktu kustom karena mendukung transformasi yang fleksibel.
Parameter bawaan | Definisi |
$bizdate | Tanggal bisnis, dalam format Parameter ini banyak digunakan. Dalam penjadwalan harian, tanggal bisnis secara default adalah hari sebelum waktu eksekusi tugas yang diharapkan. |
$cyctime | Waktu penjadwalan tugas, dalam format |
$gmtdate | Tanggal saat ini, dalam format Parameter ini secara default adalah hari ini. Saat Anda melakukan operasi pengisian ulang data, nilainya adalah |
$bizmonth | Bulan bisnis, dalam format
|
$jobid | ID alur kerja tempat tugas tersebut berada. |
$nodeid | ID node. |
$taskid | ID instans yang dihasilkan oleh node. |
Contoh penggantian parameter dalam skenario aktual
Nilai penggantian parameter penjadwalan ditentukan saat instans dibuat dan tidak berubah berdasarkan waktu mulai aktual instans tersebut. Prinsip ini berlaku untuk semua skenario.
Skenario 1: Penjadwalan normal
Dalam skenario penjadwalan otomatis normal, logika penggantian parameter secara langsung berkorespondensi dengan dua garis dasar waktu: tanggal bisnis dan waktu penjadwalan.
${...}(tanggal bisnis): Nilainya ditentukan oleh tanggal bisnis instans tersebut.$[...](waktu penjadwalan): Nilainya ditentukan oleh waktu penjadwalan instans tersebut.
Contoh: Asumsikan tugas penjadwalan harian A dijadwalkan berjalan pada pukul 00:00 setiap hari dan memiliki dua parameter yang dikonfigurasi:
yesterday=${yyyymmdd}today=$[yyyymmddhh24miss]
Tabel berikut menunjukkan logika penggantian untuk salah satu instansnya.
Waktu penjadwalan instans | Tanggal Bisnis Instance | Parameter: yesterday=${yyyymmdd} | Parameter: today=$[yyyymmddhh24miss] |
|
|
|
|
Skenario 2: Pengisian ulang data
Saat Anda menjalankan tugas pengisian ulang data secara manual, logika penggantian parameter berubah berdasarkan tanggal bisnis yang dipilih secara manual, terutama untuk waktu penjadwalan.
${...}(tanggal bisnis): Garis dasarnya adalah tanggal bisnis yang dipilih secara manual.$[...](waktu penjadwalan): Garis dasarnya adalah tanggal bisnis yang dipilih secara manual + 1 hari.
Contoh: Asumsikan Anda menjalankan pengisian ulang data secara manual untuk tugas A yang sama dan memilih tanggal bisnis 2025-03-15.
Tanggal bisnis yang dipilih secara manual | Parameter: yesterday=${yyyymmdd} | Parameter: today=$[yyyymmddhh24miss] |
|
|
|
FAQ
Untuk jawaban atas pertanyaan umum tentang penggunaan parameter penjadwalan, lihat FAQ parameter penjadwalan.