Di DataWorks, scheduling dependency menentukan hubungan hulu dan hilir antara node yang dijadwalkan secara berkala. Setelah Anda mengonfigurasi dependensi, sistem memastikan bahwa instans node hilir hanya dipicu setelah semua instans node hulunya berhasil, sehingga menjamin data diproduksi dan dikonsumsi dalam urutan yang benar. Dokumen ini menjelaskan konsep dasar, jenis, dan metode konfigurasi dependensi penjadwalan untuk membantu Anda memahami prinsipnya serta menemukan instruksi yang relevan.
Cara kerja
Scheduling dependency adalah mekanisme di DataWorks yang menentukan hubungan hulu dan hilir antar node. Dengan mengonfigurasi dependensi, Anda dapat menentukan bahwa suatu node hanya dimulai setelah node hulunya berhasil, sehingga menjamin urutan pemrosesan data yang tepat. Setelah dependensi dikonfigurasi, sistem penjadwalan DataWorks secara otomatis mengatur urutan eksekusi. Sebuah instans hilir hanya dipicu ketika semua instans hulunya telah berhasil dan semua kondisi lainnya—seperti waktu dan ketersediaan resource—telah terpenuhi.
DataWorks menetapkan dependensi dengan mencocokkan nama output node hulu dengan nama input node hilir. Alur kerja utama untuk mengonfigurasi dependensi adalah sebagai berikut:
Konfigurasikan output pada node hulu: Tambahkan nama output ke
nodehulu, biasanya dalam formatproject_name.table_name(misalnya,my_project.dim_user), untuk merepresentasikan tabel data yang dihasilkan olehnodetersebut.Konfigurasikan input pada node hilir: Pada
nodehilir, cari dan pilih nama output darinodehulu sebagai inputnya (dependensinya). Hal ini menetapkan hubungan dependensi.Penguraian otomatis (opsional): Untuk node berbasis SQL, DataWorks dapat secara otomatis mengurai pernyataan
INSERTdanSELECTdalam kode Anda untuk mengidentifikasi tabel input dan output, lalu menghasilkan konfigurasi dependensi. Anda juga dapat menyesuaikan secara manual konfigurasi hasil penguraian otomatis tersebut. Untuk daftar jenisnodeyang mendukung penguraian otomatis, lihat Skenario penguraian otomatis untuk berbagai jenis node.
Setiap node harus memiliki setidaknya satu nama output. Sistem secara otomatis menghasilkan output default untuk setiap node dalam format project_name.nodeID_out. Output default ini tetap ada meskipun Anda menghapus semua output kustom.
Aturan dan batasan
Berlaku setelah deployment:
Scheduling dependencyhanya berlaku setelah Anda commit dan deploynodekeOperation Center. Konfigurasi yang dibuat didevelopment environmenttidak disinkronkan secara otomatis keproduction environment.Status penjadwalan hulu dan hilir: Agar dependensi berfungsi, baik
instansnodehulu maupun hilir harus dihasilkan dan berada dalam status penjadwalan normal. Jikanodedikonfigurasi salah atauinstanshulu gagal,nodehilir mungkin menjadi terisolasi dan gagal berjalan sesuai jadwal.Batasan dependensi siklus: Sistem melarang dependensi siklus, baik langsung (A bergantung pada B, dan B bergantung pada A) maupun tidak langsung. Jika dependensi siklus terdeteksi saat
commit, sistem akan memblokirdeploymentdan melaporkan error.
Jenis dependensi
DataWorks mendukung dua jenis dependensi penjadwalan: same-cycle dependency dan cross-cycle dependency. Masing-masing jenis cocok untuk skenario bisnis yang berbeda.
Konsep prasyarat
Siklus adalah konsep relatif yang ditentukan oleh waktu penjadwalan suatu node. "Siklus penjadwalan" adalah selisih waktu antara dua instans terjadwal berturut-turut dari suatu node dan ditentukan oleh frekuensi penjadwalannya. Misalnya, untuk tugas harian, siklus sebelumnya merujuk pada instans dari hari sebelumnya. Untuk tugas per jam, siklus sebelumnya merujuk pada instans dari jam sebelumnya.
Frekuensi penjadwalan | Satu siklus |
Harian, mingguan, bulanan, tahunan | 1 hari Catatan Untuk tugas mingguan, bulanan, dan tahunan, instans tetap dihasilkan setiap hari, tetapi merupakan instans dry-run pada hari-hari non-jadwal. Oleh karena itu, perhitungan dependensi berdasarkan granularitas harian, dan |
Per jam | Interval per jam |
Per menit | Interval tingkat menit (misalnya, setiap 5 menit) |
Dua jenis dependensi
Sebagai contoh, node A yang dijadwalkan harian menghasilkan tabel dim_user, dan node hilir B mengonsumsi tabel ini:
Dependensi siklus sama:
InstansNode B untuk hari ini menungguinstansNode A untuk hari ini berhasil. Artinya, Node B mengonsumsi data yang dihasilkan oleh Node A pada hari yang sama.Dependensi lintas siklus:
InstansNode B untuk hari ini menungguinstansNode A dari kemarin berhasil. Artinya, Node B mengonsumsi data yang dihasilkan oleh Node A pada hari sebelumnya.
Item | Dependensi siklus sama | Dependensi lintas siklus (dependensi pada siklus sebelumnya) |
Definisi |
|
|
Representasi DAG | Direpresentasikan dengan garis solid. | Direpresentasikan dengan garis putus-putus. |
Kasus penggunaan khas | Node B perlu membaca data yang dihasilkan oleh Node A hari ini. | Suatu |
Metode konfigurasi | Mendukung penguraian otomatis, koneksi drag-and-drop di editor alur kerja, dan konfigurasi manual. | Di panel konfigurasi penjadwalan, pada bagian "Previous Cycle", pilih bentuk dependensi dan tentukan ID |
Catatan:Same-cycle dependencydancross-cycle dependencydapat eksis antara pasangan node yang sama, tetapi Anda harus memahami logika bisnis masing-masing. Jika Anda hanya membutuhkancross-cycle dependency, ingatlah untuk menghapussame-cycle dependencyyang mungkin telah dihasilkan secara otomatis. Jika tidak,instanshilir tetap akan menungguinstanshulu siklus saat ini selesai, yang dapat menyebabkan penundaan tak terduga.
Konfigurasi
Untuk menjamin integritas dan kemudahan pemeliharaan pipeline penjadwalan Anda, semua node harus memiliki dependensi hulu yang dikonfigurasi sebelum dapat dideploy ke Operation Center untuk penjadwalan otomatis. Jika suatu node tidak memiliki dependensi data, node tersebut harus bergantung pada zero load node atau root node. Untuk mengonfigurasi scheduling dependency, analisis logika bisnis node, identifikasi objek dan jenis dependensinya, lalu pilih metode terbaik untuk membangun alur data yang andal.
1. Identifikasi objek dependensi
Sebelum mengonfigurasi dependensi, lengkapi persiapan berikut:
Analisis
data lineage: Pastikan tabel atau partisi yang dihasilkan olehnodehulu sesuai dengan tabel atau partisi yang dibaca olehnodehilir.Periksa properti penjadwalan: Pastikan siklus penjadwalan node, tanggal efektif, dan
scheduling parameterdiatur dengan benar, karena properti ini secara langsung memengaruhi perilaku dependensi.
Pilih objek dependensi berdasarkan kebutuhan dependensi data node Anda.
Skenario 1: Dependensi pada output langsung |
|
Skenario 2: Dependensi pada data non-terjadwal |
|
Skenario 3: Dependensi logika bisnis |
|
2. Pilih jenis dependensi
JikanodeAnda bergantung pada output langsung darinodehulu (Skenario 1), Anda perlu menentukan apakah dependensinya berlaku untuk output dari siklus yang sama atau siklus berbeda.
Keputusan utama
Periksa data siklus mana yang sebenarnya dibaca oleh node hilir. Dalam kebanyakan kasus, suatu node menggunakan scheduling parameter untuk menulis data secara dinamis ke partisi tertentu dari suatu tabel. Anda dapat merujuk ke Format yang didukung untuk scheduling parameter untuk memahami cara substitusi scheduling parameter bekerja. Jika Anda perlu bergantung pada node dalam workspace yang sama, Anda dapat memeriksa konfigurasi scheduling parameter-nya.
Cara memastikan
Untuk node dalam
workspaceyang sama: Periksascheduling parameterdalam kode node hulu untuk melihat apakah partisi yang ditulis sesuai dengan "hari ini" atau "kemarin" setelah substitusi parameter.Di
development environment, periksa konfigurasi dan kodescheduling parameternode hulu. Diproduction environment, periksa hasil substitusi parameter di detailinstans.
Untuk node di
workspaceberbeda: Gunakan Data Map untuk melihat informasi partisi dan riwayat perubahan tabel hulu.Konfirmasi nilai partisi aktual yang ditulis setiap hari.
Pilih jenis
Kode hilir mengambil partisi hulu untuk hari/siklus saat ini: siklus sama.
Kode hilir mengambil partisi hulu dari hari/siklus sebelumnya: lintas siklus.
Tugas per jam/per menit perlu berjalan secara serial tanpa konkurensi: lintas siklus (dependensi diri pada
nodeitu sendiri).
Konsekuensi verifikasi data lineage yang salah:
Risiko dependensi hilang: Jika hubungan
data lineageada tetapischeduling dependencytidak dikonfigurasi, tugas hilir mungkin dimulai sebeluminstanshulu berhasil, menyebabkan data hilang atau tidak lengkap.Risiko ketidaksesuaian parameter: Jika dependensi dikonfigurasi tetapi parameter partisinya tidak sesuai (misalnya,
nodehulu menghasilkan partisi hari ini, tetapinodehilir membaca partisi kemarin), hal ini dapat menyebabkan error logika data dan masalah kualitas.
3. Konfigurasikan dependensi
Berdasarkan objek dan jenis dependensi yang diidentifikasi pada Langkah 1 dan 2, pilih metode yang sesuai untuk mengonfigurasi dependensi.
DataWorks memungkinkan Anda membuat dependensi antar tugas dengan frekuensi penjadwalan berbeda. Dengan menggabungkan dependensi siklus sama atau lintas siklus dengan scheduling parameter, Anda dapat menerapkan berbagai pola penjadwalan lanjutan. Untuk informasi lebih lanjut, lihat:
4. Verifikasi dependensi
Setelah konfigurasi dan sebelum deployment, Anda harus memverifikasi dependensi:
Metode verifikasi | Deskripsi |
Pratinjau dependensi penjadwalan yang telah dikonfigurasi untuk memastikan sesuai ekspektasi Anda.
| |
Saat Anda Jika penguraian otomatis diaktifkan, Anda juga harus mengonfirmasi setiap perubahan pada konfigurasi penjadwalan node selama proses | |
Setelah suatu
|
Dampak penghapusan dependensi
Selama operasi atau iterasi tugas, Anda mungkin perlu menghapus atau menyesuaikan dependensi penjadwalan yang ada.
Sebelum menghapus dependensi, Anda harus mengevaluasi dampaknya terhadap perilaku penjadwalan tugas hilir untuk menghindari pembuatan node terisolasi atau insiden data.
Skenario dependensi hilir | Dampak penghapusan | Tingkat risiko |
Tugas hilir hanya bergantung pada | Tugas hilir menjadi | Tinggi |
Tugas hilir bergantung pada beberapa node induk | Tugas hilir mungkin dimulai sebelum semua data hulu yang diperlukan siap, menyebabkan data hilang atau error perhitungan. | Sedang |
Tugas hilir bergantung pada | Jika | Sedang |
Kasus penggunaan
Gudang data offline berlapis: Konfigurasikan dependensi di seluruh pipeline ODS → DWD → DWS → ADS untuk memastikan data dihasilkan dalam urutan yang benar di setiap lapisan.
Pipeline ETL standar: Konfigurasikan
same-cycle dependencyuntuk memastikan tugas hilir menungguinstanshulunya berhasil, sehingga menjamin pemrosesan data yang berurutan dan konsisten.Laporan hari berikutnya (T+1): Konfigurasikan
cross-cycle dependency(dengan offset -1) agar tugas hari ini bergantung pada data bisnis lengkap dari kemarin, memungkinkan analisis dan output akurat untuk hari berikutnya.Agregasi hibrid multi-siklus: Konfigurasikan
cross-cycle dependencyagar tugas harian bergantung pada semua instans tugas per jam, memastikan data dasar sepenuhnya siap sebelum agregasi.Pemicu kesiapan data eksternal: Konfigurasikan dependensi kustom atau
nodepemeriksa untuk memastikan file eksternal telah tiba atau API siap sebelum memicu alur kerja, memungkinkan penjadwalan lintas sistem.Kontrol alur kerja kompleks: Gunakan
zero load nodeuntuk menggabungkan beberapa cabang dependensi, berperan sebagai tonggak kendali untuk menyederhanakan struktur pipeline dan meningkatkan visibilitas pemantauan.
FAQ
Bagian berikut menjelaskan skenario umum. Untuk pertanyaan umum lainnya tentang dependensi penjadwalan, lihat FAQ tentang dependensi.
Keunikan node
Suatu
nodedapat memiliki konfigurasi berbeda tetapi secara logis unik: Satunodedapat memiliki konfigurasischeduling dependencyberbeda didevelopment environmentdanproduction environment. Meskipun bentuknya berbeda, node tersebut tetap merupakan satunodeunik.Dependensi hilir harus dihapus di kedua lingkungan sebelum menghentikan node: Karena keunikan
node, untuk memastikan tugas hilir berjalan dengan benar, Anda harus terlebih dahulu menghapus dependensi dari konfigurasi node hilir, mengonfigurasi ulang agar bergantung padanodehulu baru, lalucommitdan deploy perubahan tersebut. Hentikan tugas hulu asli hanya setelah memastikan dependensinya telah dihapus daridevelopment environmentdanproduction environment.
Mode pembuatan instans
Saat membuat
node, pastikan mode pembuatan instans-nya sama dengan node hulu dan hilirnya. Jikamode pembuatan instansberbeda—misalnya, jikanodehulu menghasilkaninstanspada hari yang sama tetapinodehilir menghasilkannya pada hari berikutnya—instanshilir mungkin menjadi node terisolasi.Jika Anda mengubah siklus penjadwalan
nodeyang sudah ada dan memilih untuk menghasilkan instans segera setelahdeployment, instans yang sebelumnya dihasilkan tidak dihapus secara otomatis. Hal ini dapat menyebabkan ketidaksesuaian dependensi untuk instans pada harideployment. Untuk informasi lebih lanjut, lihat Dampak konversi instans real-time terhadap dependensi instans hari yang sama.
Terjadi error yang menunjukkan lebih dari 200 dependensi hulu saat memperbarui pekerjaan menggunakan API.
Detail error: 'One file could not have more than 200 inputs'.
Anda dapat menambahkan
zero load nodedi DataStudio di antara node hulu dan hilir untuk mengurangi jumlah dependensi hulu langsung. Untuk informasi lebih lanjut tentang cara mengonfigurasizero load node, lihat Zero load node.