In diesem Dokument wird beschrieben, wie Sie die Beziehung zwischen Objekten in Ihrem Workflow in Dataform definieren, indem Sie Abhängigkeiten deklarieren.
Sie können eine Abhängigkeitsbeziehung zwischen Objekten eines Workflows definieren. Bei einer Abhängigkeitsbeziehung hängt die Ausführung des abhängigen Objekts von der Ausführung des Abhängigkeitsobjekts ab. Das bedeutet, dass Dataform das abhängige Objekt nach dem Abhängigkeitsobjekt ausführt. Sie definieren die Beziehung, indem Sie Abhängigkeiten in der SQLX-Definitionsdatei des abhängigen Objekts deklarieren.
Die Abhängigkeitsdeklarationen bilden einen Abhängigkeitsbaum Ihres Workflows, der die Reihenfolge bestimmt, in der Dataform Ihre Workflow-Aktionen ausführt.
Sie können die Abhängigkeitsbeziehung zwischen den folgenden Workflow-Aktionen definieren:
- Datenquellendeklarationen
- Deklarationen von BigQuery-Datenquellen, mit denen Sie in Dataform-Tabellendefinitionen und SQL-Vorgängen auf diese Datenquellen verweisen können. Sie können eine Datenquellendeklaration als Abhängigkeit, aber nicht als abhängiges Objekt festlegen.
- Tabellen
- Tabellen, die Sie in Dataform basierend auf den deklarierten Datenquellen oder anderen Tabellen in Ihrem Workflow erstellen. Dataform unterstützt die folgenden Tabellentypen: Tabelle, inkrementelle Tabelle, Ansicht und materialisierte Ansicht. Sie können eine Tabelle als Abhängigkeit und als abhängiges Objekt festlegen.
- Benutzerdefinierte SQL-Vorgänge
- SQL-Anweisungen, die Dataform unverändert in BigQuery ausführt. Sie können einen benutzerdefinierten SQL-Vorgang, der in einer
type: operations-Datei definiert ist, als Abhängigkeit und als abhängiges Objekt festlegen. Wenn Sie einen benutzerdefinierten SQL-Vorgang in der Funktionrefals Abhängigkeit deklarieren möchten, müssen Sie in der SQLX-Definitionsdatei des benutzerdefinierten SQL-Vorgangs die EigenschafthasOutputauftruesetzen. - Assertionen
- Abfragen für Datenqualitätstests, mit denen Sie Tabellendaten testen können.
Dataform führt Assertionen jedes Mal aus, wenn der Workflow aktualisiert wird, und benachrichtigt Sie, wenn eine Assertion fehlschlägt. Sie können eine Assertion, die in einer
type: assertion-Datei definiert ist, als Abhängigkeit und als abhängiges Objekt festlegen, indem Sie Abhängigkeiten im Blockconfigdeklarieren.
Sie können die Abhängigkeitsbeziehung auf folgende Weise definieren:
- Deklarieren Sie eine Abhängigkeit mit der Dataform-Kernfunktion
ref, um in einerSELECT-Anweisung auf die Abhängigkeit zu verweisen. - Deklarieren Sie eine Liste von Abhängigkeiten im Block
configeiner SQLX-Definitionsdatei.
Hinweis
- Erstellen und initialisieren Sie einen Entwicklungsarbeitsbereich in Ihrem Repository.
- Optional: Deklarieren Sie eine Datenquelle.
- Erstellen Sie mindestens zwei Workflow-Aktionen: Tabellen, Assertionen, Datenquellendeklarationen, oder Vorgänge.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen für Arbeitsbereiche die IAM-Rolle Dataform Editor (roles/dataform.editor) zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Deklarieren von Abhängigkeiten für Tabellen, Assertionen, Datenquellendeklarationen und benutzerdefinierte SQL-Vorgänge benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Abhängigkeit als Argument der Funktion ref deklarieren
Wenn Sie in einer SELECT-Anweisung auf eine Abhängigkeit verweisen und sie automatisch deklarieren möchten, fügen Sie die Abhängigkeit als Argument der Funktion ref hinzu.
Die Funktion ref ist eine integrierte Dataform-Kernfunktion, mit der Sie auf jede Tabelle, Datenquellendeklaration oder jeden benutzerdefinierten SQL-Vorgang mit der Eigenschaft hasOutput verweisen und automatisch davon abhängig sein können, die bzw. der auf true gesetzt ist.
Weitere Informationen zur ref Funktion finden Sie unter
Referenz zu Dataform-Kernkontextmethoden.
Weitere Informationen zur Verwendung der Funktion ref in einer Tabellendefinition finden Sie unter
Tabellendefinitionen.
Das folgende Codebeispiel zeigt die Datenquellendeklaration source_data, die als Argument der Funktion ref in der SQLX-Definitionsdatei incremental_table.sqlx einer inkrementellen Tabelle hinzugefügt wurde:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
Im vorherigen Codebeispiel wird source_data automatisch als Abhängigkeit von incremental_table deklariert.
Das folgende Codebeispiel zeigt die SQLX-Datei some_table der Tabellendefinition, die als Argument der Funktion ref in der SQLX-Definitionsdatei custom_assertion.sqlx einer Assertion hinzugefügt wurde:
// filename is custom_assertion.sqlx
config { type: "assertion" }
SELECT
*
FROM
${ref("some_table")}
WHERE
a is null
or b is null
or c is null
Im vorherigen Codebeispiel wird some_table automatisch als Abhängigkeit von custom_assertion deklariert. Während der Ausführung führt Dataform zuerst some_table und dann custom_assertion aus, sobald some_table erstellt wurde.
Abhängigkeiten im Block config deklarieren
So deklarieren Sie Abhängigkeiten, auf die in der SQL-Anweisungsdefinition des abhängigen Objekts nicht verwiesen wird, die aber vor der Tabelle, der Assertion oder dem benutzerdefinierten SQL-Vorgang ausgeführt werden müssen:
- Maximieren Sie in Ihrem Entwicklungsarbeitsbereich im Bereich Dateien das Verzeichnis
definitions/. - Wählen Sie die SQLX-Datei der Tabelle, Assertion oder des benutzerdefinierten SQL-Vorgangs aus, die Sie bearbeiten möchten.
Geben Sie im Block
configder Datei das folgende Code-Snippet ein:dependencies: [ "DEPENDENCY", ]Ersetzen Sie DEPENDENCY durch das Zielstring, z. B. den Dateinamen der Aktion, die Sie als Abhängigkeit hinzufügen möchten. Sie können mehrere Ziele durch Kommas getrennt eingeben.