Panduan ini menjelaskan standar konfigurasi properti waktu tugas DataWorks di lingkungan produksi, mencakup pengaturan penjadwalan dasar hingga logika lanjutan untuk skenario bisnis kompleks. Properti waktu menentukan Ketepatan waktu output data dan secara langsung memengaruhi stabilitas serta determinisme pipeline produksi Anda. Dengan mengonfigurasi masa aktif instans, waktu terjadwal, kebijakan eksekusi, dan toleransi kesalahan secara cermat, Anda dapat membangun sistem penjadwalan otomatis yang fleksibel dan tangguh, sekaligus memisahkan logika bisnis dari alur komputasi.
Prinsip dasar konfigurasi waktu
Sistem penjadwalan DataWorks didasarkan pada dua prinsip: bersifat dependency-driven dan time-constrained. Waktu proses suatu node ditentukan ketika kedua kondisi tersebut terpenuhi. Memahami kedua mode ini merupakan dasar penting dalam mengonfigurasi jadwal.
Untuk informasi lebih lanjut tentang konfigurasi dependensi penjadwalan, lihat Panduan konfigurasi dependensi penjadwalan.
Mode satu: Eksekusi berbasis dependensi
Gunakan mode ini ketika tujuan bisnis adalah menyelesaikan seluruh alur bisnis secepat mungkin. Dalam mode ini, semua node dalam alur berjalan segera setelah data masukannya siap. Pendekatan ini menyelesaikan komputasi lintas jalur penuh dalam waktu sesingkat mungkin.
-
Metode konfigurasi: Tetapkan waktu terjadwal tertentu, seperti
02:00, hanya untuk node pertama (atau beberapa node yang tidak memiliki dependensi hulu). Atur waktu terjadwal untuk semua node turunan menjadi00:00. -
Logika eksekusi: Node turunan tetap dalam keadaan menunggu karena dependensi hulunya belum terpenuhi. Segera setelah node leluhur berhasil berjalan, node turunannya langsung dipicu untuk berjalan.
-
Contoh konfigurasi dan eksekusi:
Node
Konfigurasi waktu terjadwal
Waktu proses aktual (perkiraan)
Logika pemicu
A (Node pertama)
02:0002:00Dipicu untuk berjalan pada waktu yang ditentukan.
B (Hilir)
00:00~02:10(setelah A selesai)Node A, sebagai dependensi, berhasil berjalan dan langsung memicu Node B.
C (Hilir)
00:00~02:18(setelah B selesai)Node B, sebagai dependensi, berhasil berjalan dan langsung memicu Node C.
Mode dua: Eksekusi berbasis batasan waktu
Gunakan mode ini ketika suatu node dalam alur harus berjalan setelah waktu tertentu karena dependensi eksternal atau aturan bisnis. Misalnya, suatu node dalam alur, seperti Node B, mungkin perlu memulai komputasinya setelah pukul 05:00 pagi karena aturan bisnis eksternal atau batasan jendela sistem.
-
Metode konfigurasi: Tetapkan waktu terjadwal tertentu, seperti
05:00, untuk node yang dibatasi waktu tersebut. -
Logika eksekusi: Node tersebut harus memenuhi dua kondisi agar dapat berjalan: dependensi hulu telah terpenuhi dan waktu terjadwalnya sendiri telah tiba. Meskipun node leluhur A selesai pada
02:00, Node B akan menunggu hingga waktu terjadwalnya yaitu05:00untuk mulai berjalan. -
Contoh konfigurasi dan eksekusi:
Node
Konfigurasi Penjadwalan
Waktu Proses Instance
Logika pemicu
A (Node pertama)
02:0002:00Dipicu untuk berjalan pada waktu yang ditentukan.
B (Dibatasi waktu)
05:0005:00Dependensi hulu A telah terpenuhi. Node menunggu hingga waktu terjadwalnya tiba.
C (Dibatasi waktu)
08:0008:00Dependensi hulu B telah terpenuhi. Node menunggu hingga waktu terjadwalnya tiba.
Perencanaan konfigurasi waktu penjadwalan
Menjamin penyelesaian tepat waktu tugas kritis
Ketika output data memiliki persyaratan waktu pengiriman yang ketat (misalnya, Node E harus selesai sebelum 09:00 setiap hari), Anda perlu merencanakan waktu terjadwal untuk seluruh alur bisnis dengan bekerja mundur dari titik akhir.
|
Solusi 1: Pengaturan waktu manual |
Solusi 2: Penyesuaian cerdas menggunakan eksekusi berbasis dependensi (Direkomendasikan) |
|
|
|
Solusi 2 menggabungkan perencanaan statis dengan penjadwalan dinamis. Kombinasi ini menjamin waktu pengiriman dengan biaya pemeliharaan lebih rendah dan fleksibilitas operasional lebih tinggi. Solusi ini meminimalkan konfigurasi manual dengan hanya fokus pada titik awal dan akhir, sehingga memungkinkan sistem mengelola proses antara secara cerdas. Solusi ini sangat direkomendasikan. |
|
|
|
|
Waktu default 00:00 dalam diagram hanyalah contoh. Dalam praktiknya, waktu terjadwal default untuk tugas harian dihasilkan secara acak antara 00:00 dan 00:30.
|
Node |
Waktu terjadwal (Solusi 1) |
Waktu terjadwal (Solusi 2) |
Waktu proses aktual |
|
A |
|
|
|
|
B |
|
|
|
|
C |
|
|
|
|
D |
|
|
|
|
E |
|
|
|
Menggunakan prioritas garis dasar untuk penggeseran beban puncak
Metode berbasis dependensi mudah dikonfigurasi. Namun, metode ini dapat menyebabkan banyak tugas dimulai secara bersamaan, misalnya pada 00:00. Hal ini menyebabkan persaingan sumber daya komputasi dan antrian tugas. Anda dapat menggunakan konfigurasi prioritas dalam manajemen garis dasar untuk memberikan prioritas lebih tinggi kepada tugas inti saat menjalankan.
-
Identifikasi prioritas tugas: Bedakan antara tugas inti, seperti ekstraksi data untuk lapisan Operational Data Store (ODS), dan tugas non-inti, seperti beberapa laporan internal.
-
Tetapkan prioritas penjadwalan untuk tugas: Gunakan garis dasar untuk meningkatkan prioritas tugas inti dalam memperoleh sumber daya.
-
Diagram perbandingan optimasi:
Dengan menggabungkan waktu terjadwal dan garis dasar, Anda dapat mencapai alokasi sumber daya penjadwalan yang wajar. Hal ini memungkinkan penjadwalan cerdas berbasis prioritas serta mengurangi biaya Operasi dan Pemeliharaan (O&M) dan kesalahan manusia yang terkait dengan pengaturan waktu terjadwal individual untuk setiap tugas.
|
Skenario |
Deskripsi |
|
Sebelum optimasi: Konflik sumber daya |
Semua tugas (inti A/B, laporan C/D) menumpuk pada |
|
Setelah optimasi: Eksekusi bertahap |
Tugas inti A/B, karena prioritasnya yang tinggi, mendapatkan sumber daya tepat waktu untuk berjalan pada |
Praktik skenario kompleks
Mengonfigurasi dependensi lintas siklus
Ketika eksekusi suatu tugas bergantung pada instans siklus sebelumnya dari tugas leluhurnya, Anda perlu mengonfigurasi dependensi lintas siklus. Misalnya, tugas ringkasan untuk hari T+1 perlu menunggu semua tugas per jam pada hari T selesai.
-
Skenario: Tugas ringkasan harian B perlu berjalan pada
02:00setiap pagi. Sumber datanya adalah tugas per jam A. Tugas ini hanya boleh berjalan setelah semua instans per jam dari00:00hingga23:00hari sebelumnya (T) berhasil dijalankan. -
Metode konfigurasi: Saat mengonfigurasi dependensi penjadwalan untuk Node B, atur dependensinya terhadap Node leluhur A sebagai dependensi lintas siklus. Untuk informasi lebih lanjut, lihat Konfigurasi dependensi pada siklus sebelumnya (dependensi lintas siklus).
Atur Mode Dependensi ke Node Lain. Atur Lewati Properti Dry-run Tugas Hulu ke Tidak. Kemudian, tambahkan Node leluhur A ke daftar di bawah ini.
-
Hasil eksekusi: Setelah dikonfigurasi, instans Node B dengan Waktu data
2025-12-02akan menunggu semua instans Node A dengan Waktu data2025-12-01berhasil dijalankan sebelum dipicu.
-
Dalam skenario ini, jika Tugas B tidak memiliki node leluhur lain, Anda dapat mengonfigurasi node root ruang kerja sebagai node leluhurnya.
-
Untuk skenario lain yang melibatkan dependensi lintas granularitas dan siklus berbeda, lihat Wajib: Prinsip dan contoh konfigurasi penjadwalan dependensi kompleks.
Menerapkan jadwal berulang kompleks
Untuk tugas dengan pola periodik khusus, seperti tugas triwulanan atau semesteran untuk penutupan akun, Anda dapat menggunakan kombinasi siklus penjadwalan dan parameter penjadwalan.
-
Skenario: Tugas penutupan keuangan perlu berjalan pada hari penutupan terakhir setiap kuartal dan bergantung pada data dari seluruh kuartal sebelumnya.
Saat menetapkan hari penutupan, biasanya disediakan periode buffer untuk menangani item khusus akhir bulan, seperti pesanan tambahan lintas bulan, pembatalan pengembalian dana, dan audit manual.
-
Metode konfigurasi:
-
Tetapkan siklus penjadwalan: Di properti waktu tugas, pilih "Tahun" untuk penjadwalan. Tentukan bulan sebagai
1, 4, 7, 10dan pilihHari terakhir bulanuntuk tanggalnya. DataWorks secara otomatis menangani panjang bulan berbeda (30/31 hari) dan tahun kabisat. -
Gunakan parameter penjadwalan: Dalam kode Anda, gunakan parameter penjadwalan atau user-defined function untuk menghitung secara dinamis rentang tanggal data yang diperlukan. Misalnya, Anda dapat memperoleh tanggal mulai dan akhir kuartal untuk timestamp data saat ini. Untuk informasi lebih lanjut, lihat Format yang didukung untuk parameter penjadwalan.
-
-
Logika eksekusi: DataWorks secara otomatis mengidentifikasi apakah tanggal 30 atau 31 (atau bahkan 29 Februari pada tahun kabisat) merupakan "hari terakhir". Selama periode ini, instans pada hari bukan akhir bulan secara otomatis melakukan "dry-run". Hal ini menjamin kelangsungan logika dependensi sekaligus pemicuan presisi perhitungan keuangan.
Menggunakan kalender penjadwalan untuk jadwal hari perdagangan
Waktu terjadwal (ekspresi cron) menentukan kapan suatu tugas berjalan dalam siklus penjadwalannya. Kalender penjadwalan berfungsi sebagai filter untuk tanggal eksekusi. Menggabungkan fitur-fitur ini memungkinkan kontrol presisi untuk menjalankan tugas hanya pada tanggal bisnis tertentu, seperti hari perdagangan atau hari promosi.
-
Skenario: Tugas penyelesaian perdagangan perusahaan sekuritas harus berjalan pada pukul 22:00 pada setiap hari perdagangan (bukan hari libur). Jika hari tersebut adalah akhir pekan atau hari libur nasional, tugas tersebut harus secara otomatis berhenti berjalan untuk menghindari pembuatan instans tidak valid atau pemborosan sumber daya pada dry-run.
-
Solusi: Kalender penjadwalan + Waktu terjadwal
-
Buat kalender kustom: Di Pusat Sumber Daya DataWorks, kelola "Kalender Perdagangan" dengan menyinkronkan secara manual atau otomatis semua tanggal perdagangan untuk tahun tersebut. Untuk informasi lebih lanjut, lihat Konfigurasi kalender penjadwalan.
-
Konfigurasi properti penjadwalan: Atur tugas untuk dipicu setiap hari pada
22:00dan pilih "Kalender Perdagangan" kustom.
-
-
Logika eksekusi:
-
Hari perdagangan: Sistem mendeteksi bahwa tanggal saat ini ada dalam kalender. Tugas mulai berjalan tepat waktu pada pukul 22:00.
-
Hari non-perdagangan (seperti Festival Musim Semi): Sistem secara otomatis melewatkan pembuatan instans untuk tugas ini, atau instans yang dihasilkan berada dalam status "dry-run" dan tidak mengonsumsi sumber daya komputasi aktual.
-
Kalender penjadwalan dapat dianggap sebagai filter untuk tanggal eksekusi. Dengan menggabungkannya dengan penjadwalan tingkat jam atau menit, Anda dapat mencapai penyaringan ganda baik tanggal maupun waktu.
Misalnya, tugas per jam yang dikonfigurasi untuk berjalan setiap hari pada 08:00 dan 18:00, jika dikaitkan dengan kalender penjadwalan yang hanya mencakup hari Senin dan Jumat, pada akhirnya hanya akan berjalan pada waktu yang ditentukan tersebut pada hari Senin dan Jumat.
Praktik terbaik
1. Perencanaan dan konfigurasi penjadwalan statis
Tujuan: Memisahkan logika penjadwalan dari logika bisnis menggunakan strategi berlapis.
Strategi inti:
-
Alur bisnis linier
Konfigurasikan waktu terjadwal hanya untuk node pertama. Misalnya, atur waktu terjadwal node pertama menjadi
07:00. Tugas hilir secara otomatis dipicu melalui dependensi untuk memaksimalkan efisiensi eksekusi. -
Tugas yang bergantung waktu
-
Tetapkan waktu terjadwal yang tepat untuk tugas tertentu secara independen. Saat menetapkan waktu, hindari mengatur waktu terjadwal node leluhur lebih lambat daripada node turunannya. Hal ini dapat menyebabkan node turunan gagal berjalan tepat waktu.
-
Gunakan kalender penjadwalan dan rentang tanggal efektif untuk mengontrol periode aktif tugas. Misalnya, kendalikan tugas agar hanya berjalan pada hari kerja antara 1 Januari 2026 dan 31 Desember 2026.
-
-
Parameter penjadwalan dinamis
Gunakan parameter penjadwalan seperti
${yyyymmdd}untuk penggantian dinamis parameter waktu.
2. Kontrol dinamis dengan garis dasar cerdas
Tujuan: Menjamin waktu pengiriman tugas inti dan mengurangi biaya intervensi manual.
Prasyarat: Anda telah membuat garis dasar dan menyelesaikan klasifikasi prioritas tugas.
Mekanisme inti:
-
Waktu komitmen dan definisi prioritas:
Definisikan waktu penyelesaian yang dijanjikan untuk tugas inti, seperti 09:00, dan kaitkan dengan garis dasar prioritas tinggi. Sistem secara otomatis mengidentifikasi jalur kritis berdasarkan prioritas, memastikan tugas prioritas tinggi, seperti ekstraksi lapisan ODS, mendapatkan akses prioritas terhadap sumber daya komputasi.
-
"Penggeseran beban puncak" sumber daya otomatis:
Anda tidak perlu menetapkan waktu mulai bertahap secara manual untuk setiap tugas non-inti. Mesin penjadwalan secara otomatis mengantrikan tugas laporan non-inti untuk menghindari persaingan sumber daya selama waktu puncak, memprioritaskan pasokan sumber daya untuk jalur kritis.
-
Prediksi dinamis dan peringatan real-time:
Berdasarkan waktu proses historis, sistem dapat memprediksi secara dinamis di pagi hari apakah pipeline hari itu akan melewatkan waktu pengirimannya. Jika pada pukul 07:00 sistem memprediksi keterlambatan hingga 09:15, sistem akan segera memicu peringatan dan menyoroti node bottleneck pada jalur kritis. Hal ini mengubah pendekatan dari "pemulihan pasca-kejadian" menjadi "intervensi proaktif".
Praktik terbaik adalah menggabungkan waktu mulai terakhir yang diperoleh dari perencanaan mundur dengan garis dasar cerdas. Metode ini menetapkan titik awal melalui perencanaan statis, lalu menggunakan garis dasar untuk penjadwalan dinamis berbasis prioritas di seluruh jalur. Pendekatan ini mengurangi biaya pemeliharaan manual dan membangun sistem andal dari perencanaan hingga prediksi, menjamin determinisme tinggi untuk output data inti.