Parameter penjadwalan menggantikan nilai berbasis waktu dalam kode Anda secara dinamis pada waktu proses, sehingga menghilangkan kebutuhan untuk menyematkan tanggal secara langsung dalam alur kerja berulang. Topik ini menjelaskan format dan penggunaan nilai parameter yang didukung.
Pastikan Anda memahami cara mengonfigurasi parameter penjadwalan. Untuk detailnya, lihat Konfigurasikan dan gunakan parameter penjadwalan.
Konsep inti: Garis dasar waktu
Parameter waktu menggantikan string waktu secara dinamis 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, ini merepresentasikan tanggal saat data bisnis dihasilkan. Sebagai contoh, jika Anda menjalankan task hari ini untuk menghitung pendapatan penjualan kemarin, "kemarin" merujuk pada tanggal transaksi terjadi, yaitu tanggal bisnis. |
|
| Tahun-bulan-hari |
Waktu jadwal | scheduled time yang ditetapkan dalam konfigurasi penjadwalan task. Pada waktu proses, sistem menyelesaikannya menjadi hari 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 jadwal ≈ Hari ini (waktu task dijalankan)
Task T+1 khas dimulai pada dini hari hari ini (waktu jadwal) 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 jadwal. Untuk informasi lebih lanjut, lihat Parameter waktu kustom.Parameter sistem bawaan: Variabel pradidefinisi, 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 Konfigurasikan dan gunakan parameter penjadwalan.
Gunakan parameter sistem bawaan
$bizdatedan$cyctimeuntuk merepresentasikan tanggal bisnis dan waktu jadwal. Parameter-parameter ini diselesaikan menjadi nilai berikut:$bizdate=${yyyymmdd}$cyctime=$[yyyymmddhh24miss]

Contoh di atas menunjukkan definisi parameter untuk $bizdate (menjadi ${yyyymmdd}) dan $cyctime (menjadi $[yyyymmddhh24miss]), serta hasil pratinjau 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 jadwal 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 jadwal: Nilai $[yyyymmddhh24miss] adalah 20251101023045.
Perbedaan utama antara ${...} dan $[...]
Format ${...} dan $[...] berbeda dalam garis dasar waktu dan kemampuan perhitungan. Menggabungkan keduanya dapat menyebabkan kesalahan data.
Perbandingan |
|
|
Garis dasar waktu | Tanggal bisnis (T-1) | Waktu Penjadwalan (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 |
|
|
|
|
| Tahun dan bulan diformat dengan garis bawah |
|
|
|
|
| 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 jadwal. 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 jadwal. Kemampuan offset ${...} dan $[...] berbeda karena mendukung tingkat presisi waktu yang berbeda.
${...}perhitungan offsetKemampuan 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/sesudah
Tahun
${yyyy±N}atau${yy±N}Dapatkan tahun sebelumnya:
${yyyy-1}N bulan sebelum/sesudah
Bulan
${yyyymm±N}Dapatkan bulan sebelumnya:
${yyyymm-1}N minggu sebelum/sesudah
Minggu
${yyyymmdd±7*N}Dapatkan minggu sebelumnya:
${yyyymmdd-7*1}N hari sebelum/sesudah
Hari
${yyyymmdd±N}Dapatkan hari sebelumnya:
${yyyymmdd-1}
$[...]perhitungan offsetKemampuan 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/sesudah
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/sesudah
Bulan
N bulan kemudian:
$[add_months(yyyymmdd,N)]
N bulan sebelumnya:$[add_months(yyyymmdd,-N)]Dapatkan bulan sebelumnya:
$[add_months(yyyymmdd,-1)]
Dapatkan bulan berikutnya:$[add_months(yyyy_mm,1)]N minggu sebelum/sesudah
Minggu
$[yyyymmdd±7*N]Dapatkan minggu sebelumnya:
$[yyyymmdd-7*1]N hari sebelum/sesudah
Hari
$[yyyymmdd±N]Dapatkan hari sebelumnya (kemarin):
$[yyyymmdd-1]N jam sebelum/sesudah
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/sesudah
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 jadwal 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]CatatanPenanganan 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 tujuan memiliki jumlah hari lebih sedikit, hasilnya akan dikalibrasi otomatis 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 mana task dijalankan.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 jadwal eksekusi task. |
$cyctime | Waktu jadwal 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 jadwal.
${...}(tanggal bisnis): Nilainya berasal dari tanggal bisnis instans.$[...](waktu jadwal): Nilainya berasal dari waktu jadwal instans.
Sebagai contoh, pertimbangkan task harian bernama A yang dijadwalkan berjalan pukul 00:00 dengan parameter berikut:
yesterday=${yyyymmdd}today=$[yyyymmddhh24miss]
Tabel berikut menunjukkan bagaimana parameter ini diganti untuk instans tertentu:
Waktu jadwal | 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 jadwal.
${...}(tanggal bisnis): Garis dasarnya adalah tanggal bisnis yang dipilih secara manual.$[...](waktu jadwal): Garis dasarnya adalah tanggal bisnis yang dipilih secara manual + 1 hari.
Sebagai contoh, jika Anda melakukan pengisian ulang task A dengan tanggal bisnis 2025-03-15:
Tanggal bisnis yang dipilih | yesterday=${yyyymmdd} | today=$[yyyymmddhh24miss] |
|
|
|
FAQ
Untuk pertanyaan tentang parameter penjadwalan, lihat FAQ Parameter Penjadwalan.