Aufgabenabhängige DAGs
Auf dieser Seite wird beschrieben, wie Sie aufgabenspezifische gerichtete azyklische Graphen (Directed Acyclic Graphs, DAGs) aktivieren, um Aufgabenabhängigkeiten zwischen SQL-Tabellenknoten innerhalb eines einzelnen DAGs anzugeben, anstatt sich auf die Cron-Planung über mehrere DAGs hinweg zu verlassen. Mit anpassbaren Einstellungen werden Managed Service for Apache Airflow-DAGs mit mehreren Knoten zum Aktualisieren von Tabellen generiert, die voneinander abhängig sind. Das Cortex Framework bietet empfohlene Einstellungen für aufgabenabhängige SAP-DAGs (ECC und S/4HANA). Sie können sie jedoch weiter anpassen oder aufgabenspezifische DAGs für beliebige Datenquellen definieren.
Aufgabenabhängige DAGs aktivieren
- Ändern Sie die Datei config.json, indem Sie das Feld
enableTaskDependenciesaufTruefestlegen. Mit dieser Einstellung wird die Suche des Cortex Framework nach aufgabenspezifischen Dateien mit Berichtseinstellungen mit dem Suffix_task_dep.yamlaktiviert. - Erstellen Sie für jede Datenquelle, für die Aufgabenabhängigkeiten erforderlich sind, eine separate Datei mit Berichtseinstellungen mit dem Suffix
_task_dep.yaml. Weitere Informationen finden Sie unter Aufgabenspezifische Berichterstellungseinstellungen 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-Build-Prozess.
- Sehen Sie sich die generierten Dateien an, die sich im Ziel-Bucket unter
dags/data_source/reporting/task_dep_dags/dag_namebefinden. Dieser Ordner enthält eine Python-Datei, in der die Managed Airflow-DAG definiert ist, sowie eine SQL-Datei mit der Aktualisierungsabfrage für jeden Tabellenknoten in der DAG. - Kopieren Sie die Dateien in den Managed Airflow-DAG-Bucket, um das Cortex Framework mit dem Standard-Build-Prozess bereitzustellen.
Aufgabenabhängige Berichtseinstellungen definieren
Für jede Datenquelle, für die Aufgabenabhängigkeiten erforderlich sind, erwartet Cortex Framework aufgabenabhängige Berichterstellungseinstellungsdateien 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.yamlundreporting_settings_s4_task_dep.yamlanpassen und verwenden. - Erstellen Sie für andere Datenquellen neben den ursprünglichen eigene aufgabenabhängige Berichtseinstellungen, z. B.:
reporting_settings_task_dep.yaml.
Weitere Informationen zu den Feldern, die in den Dateien mit den Berichtseinstellungen 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: Ein erforderlicher String für alle Knoten in einem aufgabenabhängigen DAG, der 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 übergeordnet verwiesen wird.parents: Eine optionale Liste von Strings mit demsql_file-Pfad anderer Tabellenknoten im selben DAG. Diese Eltern müssen erfolgreich ausgeführt werden, bevor der Knoten ausgelöst wird.
Zusätzliche Hinweise:
- Knoten ohne definierte übergeordnete Elemente gelten als Knoten der obersten Ebene und werden 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, muss sie für alle Knoten gleich sein. - Für untergeordnete Knoten, für die
parentsdefiniert ist, kannload_frequencynicht definiert werden. - Knoten, für die
dag_settingnicht definiert ist, werden wie bisher als DAG mit einem einzelnen Knoten zum Aktualisieren der Tabelle und ohne Aufgabenabhängigkeiten generiert. - Andere Knotentypen wie Ansichten und Skripts können nicht in aufgabenabhängige DAGs aufgenommen werden, in denen nur Knoten mit DML zum Aktualisieren von Tabellen generiert werden.