Aufgabenabhängige DAGs
Auf dieser Seite wird beschrieben, wie Sie aufgabenabhängige gerichtete azyklische Graphen (Directed Acyclic Graphs, DAGs) aktivieren, um Aufgabenabhängigkeiten zwischen SQL-Tabellenknoten innerhalb eines einzelnen DAG anzugeben, anstatt auf Cron-Zeitpläne für mehrere DAGs zurückzugreifen. Mit benutzerdefinierbaren Einstellungen lassen sich Cloud Composer-DAGs mit mehreren voneinander abhängigen Knoten zum Aktualisieren von Tabellen generieren. Das 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, indem Sie das Feld
enableTaskDependencies
aufTrue
festlegen. Mit dieser Einstellung wird die Suche des Cortex-Frameworks nach aufgabenabhängigen Dateien mit Berichtseinstellungen mit dem Suffix_task_dep.yaml
aktiviert. - 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 Aufgabenabhängige Berichtseinstellungen definieren. - Sie können die Aufgabenabhängigkeiten anpassen, indem Sie
table_setting.dag_setting
als neuen Abschnitt zu Knoten vom Typtable
hinzufügen. Weitere Informationen finden Sie unter Aufgabenabhängigkeiten angeben und anpassen. - Erstellen Sie Cortex Framework mit dem Standard-Build-Prozess.
- Prüfen Sie die generierten Dateien, die sich im Ziel-Bucket unter
dags/data_source/reporting/task_dep_dags/dag_name
befinden. Dieser Ordner enthält eine Python-Datei, in der der Cloud Composer-DAG definiert ist, und eine SQL-Datei mit der Aktualisierungsabfrage für jeden Tabellenknoten im DAG. - Kopieren Sie die Dateien in den Cloud Composer-DAG-Bucket, um das Cortex-Framework mit dem Standard-Buildprozess bereitzustellen.
Aufgabenabhängige Berichtseinstellungen definieren
Für jede Datenquelle, für die Aufgabenabhängigkeiten erforderlich sind, erwartet Cortex Framework dateibasierte Berichtseinstellungen 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.yaml
undreporting_settings_s4_task_dep.yaml
anpassen und verwenden. - Erstellen Sie für andere Datenquellen neben dem Original eigene aufgabenabhängige Berichtseinstellungen, z. B.:
reporting_settings_task_dep.yaml.
Weitere Informationen zu den in Dateien mit Berichtseinstellungen verfügbaren Feldern finden Sie unter dag_types.py.
Aufgabenabhängigkeiten angeben und anpassen
Sie können die Aufgabenabhängigkeiten anpassen, 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 umfassen 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 auch Knoten der obersten Ebene, auf die andere Knoten innerhalb der DAG als übergeordnet verweisen.parents
: Optionale Liste von Strings, die densql_file
-Pfad anderer Tabellenknoten im selben DAG enthält. Diese übergeordneten Elemente müssen erfolgreich ausgeführt werden, bevor der Knoten ausgelöst wird.
Weitere 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_frequency
definiert sein. Dieser Wert wird als DAG-Zeitplan verwendet. - Wenn für mehrere Knoten der obersten Ebene
load_frequency
definiert ist, müssen sie identisch sein. - Für untergeordnete Knoten, für die
parents
definiert ist, kannload_frequency
nicht definiert werden. - Knoten, für die
dag_setting
nicht definiert ist, werden wie bisher als DAG mit einem einzelnen Knoten für die Tabellenaktualisierung und ohne Aufgabenabhängigkeiten generiert. - Andere Knotentypen wie Ansichten und Scripts können nicht in aufgabenabhängige DAGs aufgenommen werden, da in diesen nur Knoten mit DML zum Aktualisieren von Tabellen generiert werden.