תרשימי DAG שתלויים במשימות
בדף הזה מפורטים השלבים להפעלת גרפים מכוונים לא מחזוריים (DAG) שתלויים במשימות, כדי לציין תלות בין משימות בין צמתי טבלאות SQL בתוך DAG יחיד, במקום להסתמך על תזמון cron בכמה DAG. ההגדרות שניתנות להתאמה אישית משמשות ליצירת DAGs של Managed Service for Apache Airflow עם כמה צמתים של רענון טבלאות שתלויים זה בזה. Cortex Framework מספק הגדרות מומלצות ל-SAP DAGs (ECC ו-S/4HANA) שתלויות במשימה. עם זאת, אפשר להתאים אותם אישית או להגדיר DAGs שתלויים במשימות עבור כל מקורות הנתונים.
הפעלת DAGs שתלויים במשימות
- משנים את קובץ config.json על ידי הגדרת השדה
enableTaskDependenciesלערךTrue. ההגדרה הזו מפעילה את החיפוש של Cortex Framework אחר קבצים של הגדרות דיווח שתלויות במשימה, עם הסיומת_task_dep.yaml. - יוצרים קובץ הגדרות ייעודי לדיווח עם הסיומת
_task_dep.yamlלכל מקור נתונים שנדרשות בו תלויות בין משימות. פרטים נוספים מופיעים במאמר בנושא הגדרת הגדרות דיווח שתלויות במשימות. - כדי להתאים אישית את התלות בין המשימות, מוסיפים את
table_setting.dag_settingכסעיף חדש לצמתי סוגtable. פרטים נוספים זמינים במאמר בנושא ציון של תלות במשימות והתאמה אישית שלה. - בונים את Cortex Framework באמצעות תהליך build הרגיל.
- בודקים את הקבצים שנוצרו שנמצאים בקטגוריית היעד ב-
dags/data_source/reporting/task_dep_dags/dag_name. התיקייה הזו תכיל קובץ Python שמגדיר את ה-DAG של Managed Airflow וקובץ SQL עם שאילתת הרענון לכל צומת טבלה ב-DAG. - מעתיקים את הקבצים לקטגוריית DAG של Managed Airflow כדי לפרוס את Cortex Framework באמצעות תהליך build רגיל.
הגדרת הגדרות דיווח שתלויות במשימות
לכל מקור נתונים שנדרשים בו יחסי תלות בין משימות, Cortex Framework מצפה לקבל קובצי הגדרות של דיווח שתלוי במשימה עם הסיומת _task_dep.yaml.
כשיוצרים ומעדכנים את הקבצים האלה, חשוב להביא בחשבון את הנקודות הבאות:
- ב-SAP, אפשר להתאים אישית את קובצי ההגדרות שסופקו
reporting_settings_ecc_task_dep.yamlו-reporting_settings_s4_task_dep.yamlולהשתמש בהם. - למקורות נתונים אחרים, יוצרים הגדרות דיווח משלכם שתלויות במשימה לצד ההגדרות המקוריות, למשל:
reporting_settings_task_dep.yaml.
מידע נוסף על השדות שזמינים בקבצים של הגדרות הדיווח זמין במאמר dag_types.py.
איך מציינים יחסי תלות בין משימות ומתאימים אותם אישית
כדי להתאים אישית את יחסי התלות בין המשימות, מוסיפים את table_setting.dag_setting כקטע חדש לצמתי סוג table:
- sql_file: dependent_table2.sql
type: table
table_setting:
dag_setting:
name: "dag1"
parents: ["dependent_table1.sql"]
הגדרות DAG כוללות שני שדות:
-
name: מחרוזת חובה לכל הצמתים ב-DAG שתלוי במשימה שמציינת את השם של ה-DAG שאליו שייך צומת הטבלה. הצמתים האלה כוללים צמתים ברמה העליונה שמוגדרים כהורה של צמתים אחרים ב-DAG. -
parents: רשימה אופציונלית של מחרוזות שמכילות את הנתיבsql_fileשל צמתי טבלה אחרים באותו DAG. ההורים האלה צריכים לפעול בהצלחה לפני שהצומת מופעל.
-
שיקולים נוספים:
- צמתים ללא הורים מוגדרים נחשבים לצמתים ברמה העליונה, והם יופעלו בתחילת ה-DAG.
- לפחות לצומת אחד ברמה העליונה צריך להיות מוגדר
table_setting.load_frequencyשישמש כלוח הזמנים של ה-DAG. - אם בכמה צמתים ברמה העליונה מוגדר הערך
load_frequency, הוא חייב להיות זהה. - בצמתי צאצא שמוגדר בהם
parents, אי אפשר להגדירload_frequency. - צמתים שלא הוגדר להם
dag_settingייווצרו כמו קודם כ-DAG עם צומת אחד של רענון טבלה וללא תלות במשימות. - אי אפשר לכלול סוגים אחרים של צמתים, כמו תצוגות וסקריפטים, ב-DAGs שתלויים במשימות, שמייצרים רק צמתים עם DML כדי לרענן טבלאות.