DAG yang bergantung pada tugas

Halaman ini menguraikan langkah-langkah untuk mengaktifkan Directed Acyclic Graph (DAG) yang bergantung pada tugas untuk menentukan dependensi tugas antara node tabel SQL dalam satu DAG, bukan mengandalkan penjadwalan cron di beberapa DAG. Setelan yang dapat disesuaikan digunakan untuk membuat DAG Cloud Composer dengan beberapa node pembaruan tabel yang saling bergantung. Cortex Framework menyediakan setelan yang direkomendasikan untuk DAG SAP (ECC dan S/4HANA) yang bergantung pada tugas. Namun, Anda dapat menyesuaikannya lebih lanjut atau menentukan DAG yang bergantung pada tugas untuk sumber data apa pun.

Mengaktifkan DAG yang bergantung pada tugas

  1. Ubah file config.json dengan menetapkan kolom enableTaskDependencies ke True. Setelan ini mengaktifkan penelusuran Cortex Framework untuk file setelan pelaporan yang bergantung pada tugas dengan akhiran _task_dep.yaml.
  2. Buat file setelan pelaporan khusus dengan akhiran _task_dep.yaml untuk setiap sumber data yang memerlukan dependensi tugas. Untuk mengetahui detail selengkapnya, lihat Menentukan setelan pelaporan yang bergantung pada tugas.
  3. Sesuaikan dependensi tugas dengan menambahkan table_setting.dag_setting sebagai bagian baru ke node jenis table. Untuk mengetahui detail selengkapnya, lihat Menentukan dan menyesuaikan dependensi tugas.
  4. Build Cortex Framework menggunakan proses build standar.
  5. Periksa file yang dihasilkan yang berada di bucket target di bagian dags/data_source/reporting/task_dep_dags/dag_name. Folder ini akan berisi file Python yang menentukan DAG Cloud Composer dan file SQL dengan kueri refresh untuk setiap node tabel dalam DAG.
  6. Salin file ke bucket DAG Cloud Composer untuk men-deploy Cortex Framework menggunakan proses build standar.

Menentukan setelan pelaporan yang bergantung pada tugas

Untuk setiap sumber data yang memerlukan dependensi tugas, Cortex Framework menghendaki file setelan pelaporan yang bergantung pada tugas dengan akhiran _task_dep.yaml. Saat membuat dan memperbarui file ini, pertimbangkan hal-hal berikut:

Untuk mengetahui informasi selengkapnya tentang kolom yang tersedia dalam file setelan pelaporan, lihat dag_types.py.

Menentukan dan menyesuaikan dependensi tugas

Sesuaikan dependensi tugas dengan menambahkan table_setting.dag_setting sebagai bagian baru ke node jenis table:

    - sql_file: dependent_table2.sql
      type: table
      table_setting:
        dag_setting:
          name: "dag1"
          parents: ["dependent_table1.sql"]
  • Setelan DAG mencakup dua kolom:

    • name: String yang diperlukan untuk semua node dalam DAG yang bergantung pada tugas yang menentukan nama DAG tempat node tabel berada. Hal ini termasuk node tingkat atas yang direferensikan sebagai induk oleh node lain dalam DAG.
    • parents: Daftar string opsional yang berisi jalur sql_file dari node tabel lain dalam DAG yang sama. Induk ini harus berhasil berjalan sebelum node dipicu.

Pertimbangan tambahan:

  • Node tanpa induk yang ditentukan dianggap sebagai node tingkat teratas dan akan berjalan di awal DAG.
  • Setidaknya satu node tingkat teratas harus memiliki table_setting.load_frequency yang ditentukan, yang akan digunakan sebagai jadwal DAG.
  • Jika beberapa node level teratas telah menentukan load_frequency, node tersebut harus sama.
  • Node turunan yang telah menentukan parents tidak dapat menentukan load_frequency.
  • Node yang tidak memiliki dag_setting yang ditentukan akan dibuat sama seperti sebelumnya sebagai DAG dengan satu node pembaruan tabel dan tidak ada dependensi tugas.
  • Jenis node lain seperti tampilan dan skrip tidak dapat disertakan dalam DAG yang bergantung pada tugas, yang hanya menghasilkan node dengan DML untuk memuat ulang tabel.