Aufgabenabhängige DAGs
Auf dieser Seite werden die Schritte zum Aktivieren von aufgabenabhängigen gerichteten azyklischen Graphen (DAGs) beschrieben, um Aufgabenabhängigkeiten zwischen SQL-Tabellenknoten innerhalb eines einzelnen DAGs anzugeben, anstatt sich auf die Cron-Planung über mehrere DAGs hinweg zu verlassen. Mithilfe anpassbarer Einstellungen werden Managed Service for Apache Airflow-DAGs mit mehreren Tabellenaktualisierungsknoten generiert, die voneinander abhängig sind. Cortex Framework bietet empfohlene Einstellungen für aufgabenabhängige SAP-DAGs (ECC und S/4HANA). Sie können sie jedoch weiter anpassen oder aufgabenabhängige DAGs für beliebige Datenquellen definieren.
Aufgabenabhängige DAGs aktivieren
- Ändern Sie die Datei config.json und legen Sie das Feld
enableTaskDependenciesaufTruefest. Mit dieser Einstellung wird die Suche von Cortex Framework nach aufgabenabhängigen Berichtseinstellungsdateien mit dem Suffix_task_dep.yamlaktiviert. - Erstellen Sie für jede Datenquelle, für die Aufgabenabhängigkeiten erforderlich sind, eine eigene Berichtseinstellungsdatei mit dem Suffix
_task_dep.yaml. Weitere Informationen finden Sie unter Aufgabenabhängige Berichtseinstellungen definieren. - Passen Sie die Aufgabenabhängigkeiten an, indem Sie
table_setting.dag_settingals neuen Abschnitt zu Knoten vom Typtablehinzufügen. Weitere Informationen finden Sie unter Aufgabenabhängigkeiten angeben und anpassen. - Erstellen Sie Cortex Framework mit dem Standard-Buildprozess.
- Prüfen Sie die generierten Dateien, die sich im Ziel-Bucket unter
dags/data_source/reporting/task_dep_dags/dag_namebefinden. Dieser Ordner enthält eine Python-Datei, in der der Managed Airflow-DAG definiert ist, und eine SQL-Datei mit der Aktualisierungsabfrage für jeden Tabellenknoten im DAG. - Kopieren Sie die Dateien in den Managed Airflow-DAG-Bucket, um Cortex Framework mit dem Build-Prozess bereitzustellen.
Aufgabenabhängige Berichtseinstellungen definieren
Für jede Datenquelle, für die Aufgabenabhängigkeiten erforderlich sind, erwartet Cortex Framework aufgabenabhängige Berichtseinstellungsdateien mit dem Suffix _task_dep.yaml.
Beachten Sie beim Erstellen und Aktualisieren dieser Dateien Folgendes:
- Für SAP können Sie die bereitgestellten Einstellungsdateien
reporting_settings_ecc_task_dep.yamlanpassen und verwendenreporting_settings_s4_task_dep.yaml. - Erstellen Sie für andere Datenquellen eigene aufgabenabhängige Berichtseinstellungen neben den ursprünglichen, z. B.:
reporting_settings_task_dep.yaml.
Weitere Informationen zu den Feldern, die in Berichtseinstellungs dateien verfügbar sind, finden Sie unter dag_types.py.
Aufgabenabhängigkeiten angeben und anpassen
Passen Sie die Aufgabenabhängigkeiten an, indem Sie
table_setting.dag_setting als neuen Abschnitt zu Knoten vom Typ table hinzufügen:
- sql_file: dependent_table2.sql
type: table
table_setting:
dag_setting:
name: "dag1"
parents: ["dependent_table1.sql"]
Die DAG-Einstellungen enthalten zwei Felder:
name: Eine erforderliche String für alle Knoten in einem aufgabenabhängigen DAG , die den Namen des DAG angibt, zu dem der Tabellenknoten gehört. Dazu gehören Knoten der obersten Ebene, auf die von anderen Knoten im DAG als übergeordnetes Element verwiesen wird.parents: Eine optionale Liste von Strings mit demsql_file-Pfad anderer Tabellenknoten im selben DAG. Diese übergeordneten Knoten müssen erfolgreich ausgeführt werden, bevor der Knoten ausgelöst wird.
Zusätzliche Überlegungen:
- Knoten ohne definierte übergeordnete Knoten werden als Knoten der obersten Ebene betrachtet und am Anfang des DAG ausgeführt.
- Für mindestens einen Knoten der obersten Ebene muss
table_setting.load_frequencydefiniert sein, das als DAG-Zeitplan verwendet wird. - Wenn für mehrere Knoten der obersten Ebene
load_frequencydefiniert ist, müssen sie identisch sein. - Untergeordnete Knoten, für die
parentsdefiniert sind, könnenload_frequencynicht definieren. - Knoten, für die
dag_settingnicht definiert ist, werden wie zuvor als DAG mit einem einzelnen Tabellenaktualisierungsknoten und ohne Aufgabenabhängigkeiten generiert. - Andere Knotentypen wie Ansichten und Skripts können nicht in aufgabenabhängige DAGs aufgenommen werden. In diesen werden nur Knoten mit DML zum Aktualisieren von Tabellen generiert.