Abhängigkeiten deklarieren

In diesem Dokument erfahren Sie, wie Sie die Beziehung zwischen Objekten in Ihrem SQL-Workflow in Dataform durch Deklarieren von Abhängigkeiten definieren.

Sie können eine Abhängigkeitsbeziehung zwischen Objekten eines SQL-Workflows definieren. In 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 Element nach der Abhängigkeit ausführt. Sie definieren die Beziehung, indem Sie Abhängigkeiten in der SQLX-Definitionsdatei des abhängigen Objekts deklarieren.

Die Abhängigkeitsdeklarationen bilden eine Abhängigkeitsstruktur Ihres SQL-Workflows, die die Reihenfolge bestimmt, in der Dataform Ihre SQL-Workflow-Objekte ausführt.

Sie können die Abhängigkeitsbeziehung zwischen den folgenden SQL-Workflowobjekten 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ängige festlegen.
Tables
Tabellen, die Sie in Dataform basierend auf den deklarierten Datenquellen oder anderen Tabellen in Ihrem SQL-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ängige Tabelle festlegen.
Benutzerdefinierte SQL-Vorgänge
SQL-Anweisungen, die Dataform unverändert und unverändert in BigQuery ausgeführt wird. Sie können einen benutzerdefinierten SQL-Vorgang festlegen, der in einer type: operations-Datei als Abhängigkeit und als abhängigen Vorgang definiert ist. Wenn Sie einen benutzerdefinierten SQL-Vorgang als Abhängigkeit in der ref-Funktion deklarieren möchten, müssen Sie in der SQLX-Definitionsdatei des benutzerdefinierten SQL-Vorgangs das Attribut hasOutput auf true festlegen.
Assertions
Abfragen zur Datenqualitätstest, mit denen Sie Tabellendaten testen können Dataform führt jedes Mal Assertions aus, wenn Ihr SQL-Workflow aktualisiert wird, und benachrichtigt Sie, wenn Assertions fehlschlagen. Sie können eine in einer type: assertion-Datei definierte Assertion als Abhängigkeit und als abhängig festlegen, indem Sie Abhängigkeiten im config-Block deklarieren.

Sie können die Abhängigkeitsbeziehung auf folgende Arten definieren:

Hinweise

  1. Erstellen und initialisieren Sie einen Entwicklungsarbeitsbereich in Ihrem Repository.
  2. Optional: Deklarieren Sie eine Datenquelle.
  3. Erstellen Sie mindestens zwei SQL-Workflow-Objekte: Tabellen, Assertions, Datenquellendeklarationen oder operations.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen für Arbeitsbereiche die IAM-Rolle Dataform Editor (roles/dataform.editor) zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Deklarieren von Abhängigkeiten für Tabellen, Assertions, Datenquellendeklarationen und benutzerdefinierte SQL-Vorgänge benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Deklarieren Sie eine Abhängigkeit als Argument der Funktion ref

Wenn Sie auf eine Abhängigkeit verweisen und diese automatisch in einer SELECT-Anweisung deklarieren möchten, fügen Sie die Abhängigkeit als Argument der Funktion ref hinzu.

Die ref-Funktion ist eine integrierte Dataform Core-Funktion, mit der Sie auf beliebige Tabellen, Datenquellendeklarationen oder benutzerdefinierte SQL-Vorgänge verweisen können, bei denen das Attribut hasOutput in Ihrem SQL-Workflow auf true gesetzt ist, und automatisch davon abhängig ist.

Weitere Informationen zur Funktion ref finden Sie in der Referenz zu Dataform Core-Kontextmethoden.

Weitere Informationen zur Verwendung der Funktion ref in einer Tabellendefinition finden Sie unter Tabellendefinitionen.

Das folgende Codebeispiel zeigt, wie die Datenquellendeklaration source_data 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, wie die SQLX-Tabellendefinitionsdatei some_table der SQLX-Definitionsdatei custom_assertion.sqlx einer Assertion als Argument der Funktion ref 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 Definition der SQL-Anweisung des abhängigen Abhängigkeiten nicht verwiesen wird, die jedoch vor der Tabelle, der Assertion oder dem benutzerdefinierten SQL-Vorgang ausgeführt werden müssen:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Datei der Tabelle, Assertion oder des benutzerdefinierten SQL-Vorgangs aus, die Sie bearbeiten möchten.
  3. Geben Sie im Block config der Datei das folgende Code-Snippet ein:

    dependencies: [ "DEPENDENCY", ]
    

    Ersetzen Sie DEPENDENCY durch den Dateinamen der Tabelle, der Assertion, der Datenquellendeklaration oder der benutzerdefinierten SQL-Operation, die Sie als Abhängigkeit hinzufügen möchten. Sie können mehrere, durch Kommas getrennte Dateinamen eingeben.

  4. Optional: Klicken Sie auf Format.

Das folgende Codebeispiel zeigt, wie die Tabelle some_table und die assertion some_assertion dem Block config einer Tabellendefinitionsdatei als Abhängigkeiten hinzugefügt wurden:

config { dependencies: [ "some_table", "some_assertion" ] }

Nächste Schritte