All Products
Search
Document Center

DataWorks:Sumber dan ekspresi parameter penjadwalan

Last Updated:Mar 27, 2026

Parameter penjadwalan memungkinkan Anda meneruskan nilai waktu dinamis ke kode node saat runtime. Setiap kali suatu task dijalankan, DataWorks mengganti placeholder parameter dalam kode node Anda dengan nilai yang dihitung berdasarkan aturan yang dikonfigurasikan di bagian Scheduling Parameters pada tab Properties di Data Studio.

Konsep inti

Dua konsep waktu menentukan cara parameter penjadwalan menghitung nilainya.

Konsep Definisi Presisi
Data timestamp Hari sebelum waktu penjadwalan. Dalam komputasi offline, ini merepresentasikan tanggal bisnis — hari ketika data sumber dihasilkan. Hari
Scheduling time Waktu ketika instans task dijadwalkan untuk dijalankan. Waktu ini mungkin berbeda dari waktu mulai aktual karena antrian dan faktor lainnya. Kedua

Mengapa perbedaan ini penting: Dalam alur kerja ETL khas, Anda memproses data kemarin hari ini. Jika suatu task dijalankan pada 2024-03-15 02:00:00, data timestamp-nya adalah 2024-03-14 — tanggal bisnis dari data yang sedang diproses. Offset satu hari inilah yang menjadi dasar format ${...}.

Nilai parameter penjadwalan ditentukan saat instans task dibuat dan tidak berubah terlepas dari kapan instans tersebut benar-benar dijalankan.

Pilih format parameter

DataWorks menyediakan dua format parameter waktu kustom. Gunakan tabel berikut untuk memilih format yang tepat:

Saya ingin... Gunakan Contoh
Mereferensikan tanggal kemarin (data timestamp) ${...} ${yyyymmdd}
Menambah atau mengurangi hari, bulan, atau tahun dari data timestamp ${...} ${yyyymmdd-7}
Mereferensikan waktu penjadwalan eksak (hingga detik) $[...] $[yyyymmddhh24miss]
Menambah atau mengurangi jam atau menit dari waktu penjadwalan $[...] $[hh24miss-1/24]
Menambah atau mengurangi bulan atau tahun dari waktu penjadwalan $[...] dengan add_months() $[add_months(yyyymmdd,-1)]
${yyyymmdd} sama dengan $[yyyymmdd-1] — keduanya menghasilkan data timestamp. Format ${...} hanya memiliki presisi harian; gunakan $[...] untuk presisi tingkat jam atau menit.

${...} parameter (berbasis data timestamp)

Parameter ${...} menghitung waktu relatif terhadap data timestamp task. Parameter ini mendukung komponen yyyy, yy, mm, dan dd, serta mendukung aritmetika ±N untuk hari, bulan, dan tahun.

Presisi: Hanya hari. Komponen jam, menit, dan detik tidak didukung.

Format umum

Offset Parameter
N hari lalu atau mendatang ${yyyymmdd±N}
N minggu lalu atau setelahnya ${yyyymmdd±7*N}
N bulan lalu atau mendatang ${yyyymm±N}
N tahun lalu atau mendatang ${yyyy±N}
N tahun lalu atau mendatang (format yy) ${yy±N}
Pemisah tanggal kustom ${yyyy-mm-dd±N}
Hari pertama bulan (penggabungan string) ${mm}01
Untuk offset bulan atau tahun, gunakan ${yyyymm±N} atau ${yyyy±N} daripada $[...].

$[...] parameter (berbasis scheduling time)

Parameter $[...] menghitung waktu relatif terhadap scheduling time task. Parameter ini mendukung semua komponen ${...} ditambah hh24, hh, mi, dan ss, serta menggunakan aritmetika pecahan untuk menyatakan jam dan menit.

Presisi: Detik. Gunakan parameter ini bila Anda memerlukan akurasi pada tingkat jam atau menit.

Notasi jam dan menit

Format $[...] menyandikan satuan waktu sebagai pecahan dari satu hari:

Satuan Pembagi Makna Contoh
1 jam /24 1/24 hari $[hh24miss-1/24] — 1 jam lalu
N jam /24 N/24 hari $[hh24miss-3/24] — 3 jam lalu
1 menit /24/60 1/(24x60) hari $[hh24miss-1/24/60] — 1 menit lalu
N menit /24/60 N/(24×60) per hari $[hh24miss-15/24/60] — 15 menit lalu

Kedua format hh24 (format 24 jam) dan hh (format 12 jam) didukung untuk bidang jam.

Format umum

Offset Parameter
Waktu penjadwalan eksak $[yyyymmddhh24miss]
N hari yang lalu atau lebih baru $[yyyymmdd±N]
N minggu yang lalu atau setelahnya $[yyyymmdd±7*N]
N jam yang lalu atau lebih baru $[hh24miss±N/24] atau $[hh24±N/24] atau $[Custom format±N/24]
N menit yang lalu atau setelahnya $[hh24miss±N/24/60] atau $[yyyymmddhh24miss±N/24/60] atau $[mi±N/24/60]
N bulan setelahnya $[add_months(yyyymmdd,N)]
N bulan lalu $[add_months(yyyymmdd,-N)]
N tahun kemudian $[add_months(yyyymmdd,12*N)]
N tahun lalu $[add_months(yyyymmdd,-12*N)]
1 jam lalu pada hari sebelumnya $[yyyymmdd-1-1/24]
$[yyyy-N] dan $[mm-N] tidak didukung untuk offset tahun dan bulan dalam $[...]. Gunakan $[add_months(...)] sebagai gantinya.

Permasalahan lintas hari

Ketika suatu task dijalankan mendekati tengah malam dan menggunakan parameter tingkat jam atau menit, nilai yang dihitung mungkin mereferensikan partisi hari yang salah. Misalnya, task yang dijadwalkan pada 00:00 tanggal 15 Maret yang mengurangi 1 jam menghasilkan 23:00 — tetapi hari mana yang direferensikan oleh komponen yyyymmdd? Untuk detail dan solusi, lihat Saya menjalankan instans node pada pukul 00:00 hari ini untuk menganalisis data di partisi yang sesuai dengan pukul 23:00 hari sebelumnya. Namun, data di partisi yang sesuai dengan pukul 23:00 hari ini yang dianalisis. Apa yang harus saya lakukan?

Parameter bawaan

DataWorks menyediakan parameter bawaan berikut. Untuk fleksibilitas, gunakan parameter waktu kustom jika memungkinkan.

Parameter Format nilai Deskripsi
$bizdate yyyymmdd Data timestamp. Sama dengan ${yyyymmdd}. Default: waktu penjadwalan dikurangi satu hari.
$cyctime yyyymmddhh24miss Scheduling time. Sama dengan $[yyyymmddhh24miss].
$gmtdate yyyymmdd Tanggal saat ini. Saat melakukan backfill data, diatur ke data timestamp + 1 hari.
$bizmonth yyyymm Bulan dari data timestamp. Jika data timestamp berada di bulan saat ini, mengembalikan satu bulan sebelumnya; selain itu mengembalikan bulan dari data timestamp.
$jobid ID workflow tempat task tersebut berada.
$nodeid Node ID.
$taskid ID instans task.

Catatan penggunaan

  • Node Shell: Parameter penjadwalan untuk node Shell menggunakan format berbeda — $N, di mana N adalah bilangan bulat yang dimulai dari 1. Format ${...} dan $[...] tidak berlaku.

  • Konstanta: Tetapkan string konstan ke parameter penjadwalan untuk meneruskan nilai yang sama setiap kali dijalankan.

  • `${bizdate}` dalam kode node: Variabel ${bizdate} dalam kode node tidak memiliki makna bawaan khusus — ini adalah nama variabel kustom. Setiap variabel yang Anda definisikan dalam format ${Variable} dan petakan di bagian Scheduling Parameters bekerja dengan cara yang sama.

  • Daylight saving time: DataWorks menangani transisi daylight saving time tanpa dampak pada penjadwalan task. Jika task Anda dijalankan di wilayah yang menerapkan daylight saving time, lihat Dampak peralihan daylight saving time terhadap eksekusi task.

Lampiran: Parameter penjadwalan bawaan yang didukung

Parameter bawaan berikut tersedia dalam kode node dan dapat direferensikan dalam konfigurasi penjadwalan.

Parameter Deskripsi
${projectId} ID proyek MaxCompute.
${projectName} Nama proyek MaxCompute.
${nodeId} Node ID.
${gmtdate} Tanggal ketika instans dijadwalkan untuk dijalankan, dalam format yyyy-MM-dd 00:00:00.
${taskId} ID instans task.
${seq} Nomor urut instans task di antara semua instans yang dijadwalkan pada hari yang sama.
${cyctime} Waktu ketika instans dijadwalkan untuk dijalankan.
${status} Status instans. Nilai valid: SUCCESS dan FAILURE.
${bizdate} Data timestamp.
${finishTime} Waktu ketika instans selesai dijalankan.
${taskType} Mode eksekusi instans. Nilai valid: NORMAL, MANUAL, PAUSE, SKIP, UNCHOOSE, dan SKIP_CYCLE.
${nodeName} Nama node.

Referensi