Abhängigkeiten festlegen

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. 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 die abhängige Aufgabe 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 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 Workflowaktionen definieren:

Deklarationen von Datenquellen
Deklarationen von BigQuery-Datenquellen, mit denen Sie in Dataform-Tabellendefinitionen und SQL-Vorgängen auf diese Datenquellen verweisen können. Sie können eine Datenquelldeklaration als Abhängigkeit, aber nicht als abhängige Variable festlegen.
Tables
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ängige Tabelle festlegen.
Benutzerdefinierte SQL-Vorgänge
SQL-Anweisungen, die von Dataform unverändert in BigQuery ausgeführt werden. Sie können einen benutzerdefinierten SQL-Vorgang, der in einer type: operations-Datei definiert ist, als Abhängigkeit und als abhängigen Vorgang festlegen. Wenn Sie einen benutzerdefinierten SQL-Vorgang als Abhängigkeit in der Funktion ref deklarieren möchten, müssen Sie die Eigenschaft hasOutput in der SQLX-Definitionsdatei des benutzerdefinierten SQL-Vorgangs auf true festlegen
.
Zusicherungen
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 in einer type: assertion-Datei definierte Assertion als Abhängigkeit und als abhängige Assertion festlegen, indem Sie Abhängigkeiten im config-Block deklarieren.

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

Hinweise

  1. Entwicklungsarbeitsbereich in Ihrem Repository erstellen und initialisieren
  2. Optional: Datenquelle deklarieren.
  3. Erstellen Sie mindestens zwei Workflowaktionen: Tabellen, Zusicherungen, Datenquellen-Deklarationen oder Vorgänge.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform Editor (roles/dataform.editor) für Arbeitsbereiche zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Deklarieren von Abhängigkeiten für Tabellen, Zusicherungen, Datenquellendeklarationen und benutzerdefinierten SQL-Vorgängen 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.

Eine 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 ref-Funktion hinzu.

Die Funktion ref ist eine integrierte Dataform Core-Funktion, mit der Sie in Ihrem Workflow auf jede Tabelle, Datenquellendeklaration oder benutzerdefinierte SQL-Operation verweisen und automatisch davon abhängig sein können, wenn die Eigenschaft hasOutput auf true festgelegt ist.

Weitere Informationen zur ref-Funktion 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 die source_data-Datenquellendeklaration, 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.

Im folgenden Codebeispiel sehen Sie die SQLX-Datei für die some_table-Tabellendefinition, die als Argument der ref-Funktion in der custom_assertion.sqlx-SQLX-Definitionsdatei 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 wird zuerst some_table und dann custom_assertion ausgeführt, sobald some_table erstellt wurde.

Abhängigkeiten im config-Block deklarieren

So deklarieren Sie Abhängigkeiten, auf die in der SQL-Anweisungsdefinition der abhängigen Tabelle, Assertion oder benutzerdefinierten SQL-Operation nicht verwiesen wird, die aber vor der Tabelle, Assertion oder benutzerdefinierten SQL-Operation ausgeführt werden müssen:

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

    dependencies: [ "DEPENDENCY", ]
    

    Ersetzen Sie DEPENDENCY durch den String target, z. B. den Dateinamen der Aktion, die Sie als Abhängigkeit hinzufügen möchten. Sie können mehrere Ziele durch Kommas getrennt eingeben.

  4. Optional: Klicken Sie auf Formatieren.

Im folgenden Codebeispiel werden die Tabelle some_table und die some_assertion-Assertion als Abhängigkeiten dem config-Block einer Tabellendefinitionsdatei hinzugefügt:

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

Assertionen als Abhängigkeiten festlegen

Wenn die Workflow-Aktion B von der Workflow-Aktion A mit Zusicherungen abhängt, wird die Ausführung der Aktion B durch das Fehlschlagen der Zusicherungen der Aktion A nicht blockiert. Wenn Sie die Aktion B nur ausführen möchten, wenn die Zusicherungen der Aktion A erfüllt sind, müssen Sie die Zusicherungen der Aktion A als Abhängigkeiten der Aktion B festlegen.

Sie haben folgende Möglichkeiten, Zusicherungen als Abhängigkeiten einer ausgewählten Aktion festzulegen:

Ausgewählte Behauptungen als Abhängigkeiten festlegen

Sie können ausgewählte Zusicherungen manuell als Abhängigkeiten festlegen, indem Sie sie der dependencies: [ "" ]-Zeile im config-Block der bearbeiteten Aktion hinzufügen.

Wenn beispielsweise die Aktion B von der Aktion A abhängt und Sie möchten, dass die Aktion B nur von den ausgewählten Zusicherungen der Aktion A abhängt, können Sie diese ausgewählten Zusicherungen dem config-Block der Aktion B hinzufügen.

Sie können ausgewählte Behauptungen manuell als Abhängigkeiten für alle Aktionstypen außer Datenquellendeklarationen festlegen.

Assertionen einer ausgewählten Abhängigkeitsaktion als Abhängigkeiten festlegen

Sie können den Parameter includeDependentAssertions so festlegen, dass alle direkten Zusicherungen einer ausgewählten Workflow-Aktion für Abhängigkeiten automatisch als Abhängigkeiten der bearbeiteten Aktion festgelegt werden. Dataform fügt diese Zusicherungen bei jeder Kompilierung der Aktion als Abhängigkeiten hinzu, um zu prüfen, ob die Abhängigkeiten auf dem neuesten Stand sind, wenn sich die Zusicherungen der Abhängigkeitsaktion ändern.

Wenn die Aktion C beispielsweise von den Aktionen A und B abhängt, Sie aber nur möchten, dass die Aktion C von den Zusicherungen der Aktion A abhängt, können Sie die Aktion C bearbeiten und den Parameter includeDependentAssertions so festlegen, dass alle Zusicherungen der Aktion A automatisch als Abhängigkeiten der Aktion C festgelegt werden.

Sie können den Parameter includeDependentAssertions für Aktionen der folgenden Typen festlegen:

  • table
  • view
  • operations
Die Zusicherungen aller abhängigen Aktionen als Abhängigkeiten festlegen

Mit dem Parameter dependOnDependencyAssertions können Sie festlegen, dass alle direkten Zusicherungen aus allen Abhängigkeitsaktionen der bearbeiteten Aktion automatisch als zusätzliche Abhängigkeiten der bearbeiteten Aktion festgelegt werden. Dataform fügt diese Zusicherungen bei jeder Kompilierung der Aktion als Abhängigkeiten hinzu, um zu prüfen, ob die Abhängigkeiten auf dem neuesten Stand sind, wenn sich die Zusicherungen der Abhängigkeitsaktion ändern.

Wenn die Aktion C beispielsweise von den Aktionen A und B abhängt, können Sie die Aktion C bearbeiten und den Parameter dependOnDependencyAssertions so festlegen, dass alle Zusicherungen der Aktionen A und B automatisch als Abhängigkeiten der Aktion C festgelegt werden.

Sie können den Parameter dependOnDependencyAssertions für Aktionen der folgenden Typen festlegen:

  • table
  • view
  • operations

Wenn Sie den Parameter dependOnDependencyAssertions und die Parameter includeDependentAssertions in einer einzigen Datei festlegen, hat der Parameter includeDependentAssertions Vorrang. Wenn Sie beispielsweise dependOnDependencyAssertions auf true festlegen, aber auch includeDependentAssertions auf false für eine ausgewählte Abhängigkeitsaktion, fügt Dataform die Assertions dieser Aktion nicht den Abhängigkeiten hinzu.

Im folgenden Codebeispiel sehen Sie die Parameter dependOnDependencyAssertions und includeDependentAssertions, die in derselben Tabellendefinitionsdatei festgelegt sind:

// filename is tableName.sqlx

config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "actionA", {name: "actionB", includeDependentAssertions: false} ]
}

SELECT * FROM ${ref("actionC")}

Im vorherigen Codebeispiel fügt Dataform während der Kompilierung alle direkten Zusicherungen von actionA und actionC den Abhängigkeiten von tableName hinzu.

Ausgewählte Behauptungen als Abhängigkeiten festlegen

Wenn Sie eine Workflow-Aktion nur ausführen möchten, wenn ausgewählte Zusicherungen erfüllt sind, können Sie die ausgewählte Zusicherung in der bearbeiteten Aktion in der dependencies: [ "" ]-Zeile des config-Blocks hinzufügen.

So legen Sie eine ausgewählte Behauptung als Abhängigkeit einer ausgewählten Workflow-Aktion fest:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol definitions/.
  2. Wählen Sie eine SQLX-Datei für die Workflow-Aktion aus.
  3. Geben Sie im config-Block der Aktionsdatei dependencies: [ "" ] ein.
  4. Geben Sie in dependencies: [ "" ] den Namen der Aktionsbehauptung oder den Dateinamen der manuellen Behauptung ein, die Sie als Abhängigkeit festlegen möchten, und zwar in einem der folgenden Formate:

    nonNull

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_nonNull"]
    }
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • ACTION_DATASET_NAME: Der Name des Datasets, in dem die Aktion definiert ist. Das Standard-Dataset ist in der Datei mit den Workflow-Einstellungen definiert.
    • ACTION_NAME: der Name der Aktion, in der die Assertion definiert ist.

    rowConditions

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_rowConditions"]
    }
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • DATASET_NAME: Der Name des Datasets, in dem die Aktion definiert ist. Das Standard-Dataset ist in der Datei mit den Workflow-Einstellungen definiert.
    • ACTION_NAME: Der Name der Aktion, in der die Assertion definiert ist.

    uniqueKey

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_uniqueKey_INDEX"]
    }
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • DATASET_NAME: der Name des Datasets, in dem die Tabelle definiert ist. Das Standard-Dataset ist in der Datei mit den Workflow-Einstellungen definiert.
    • ACTION_NAME: der Name der Tabelle, in der die Assertion definiert ist.
    • INDEX: Der Index des Arrays von Schlüsseln, die in der uniqueKey-Assertion definiert sind und die Sie als Abhängigkeit hinzufügen möchten, z. B. 0 oder 1. Wenn in der Assertion nur ein Schlüssel-Array definiert ist, ist der Index 0.

    uniqueKeys

    config {
      type: "ACTION_TYPE",
      dependencies: [ "ACTION_DATASET_NAME_ACTION_NAME_assertions_uniqueKeys_INDEX"]
    }
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • DATASET_NAME: der Name des Datasets, in dem die Tabelle definiert ist. Das Standard-Dataset ist in der Datei mit den Workflow-Einstellungen definiert.
    • ACTION_NAME: der Name der Tabelle, in der die Assertion definiert ist.
    • INDEX: Der Index des Arrays von Schlüsseln, die in der uniqueKeys-Assertion definiert sind und die Sie als Abhängigkeit hinzufügen möchten, z. B. 0 oder 1. Wenn in der Assertion nur ein Schlüssel-Array definiert ist, ist der Index 0.

    manuelle Assertion

    config {
      type: "ACTION_TYPE",
      dependencies: [ "MANUAL_ASSERTION_NAME"]
    }
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • MANUAL_ASSERTION_NAME ist der Name der manuellen Behauptung.
  5. Wenn Sie der bearbeiteten Tabelle eine weitere Behauptung als Abhängigkeit hinzufügen möchten, wiederholen Sie Schritt 4.

  6. Optional: Klicken Sie auf Formatieren.

Im folgenden Codebeispiel sehen Sie Zusicherungen, die der Tabelle A hinzugefügt wurden. Diese Tabelle ist im Dataset dataform definiert:

config {
  type: "table",
  assertions: {
    uniqueKey: ["user_id"],
    nonNull: ["user_id", "customer_id"],
  }
}

Im folgenden Codebeispiel werden Zusicherungen für Tabelle A als Abhängigkeiten für Tabelle B hinzugefügt:

config {
  type: "table",
  dependencies: [ "dataform_A_assertions_uniqueKey_0",  "dataform_A_assertions_nonNull"]
}

Das folgende Codebeispiel zeigt eine manuelle Assertion, die in der Datei manualAssertion.sqlx definiert und einer Ansicht als Abhängigkeit hinzugefügt wird:

config {
  type: "view",
  dependencies: [ "manualAssertion"]
}

Im folgenden Codebeispiel sehen Sie die Datei manual_assertion und die Zusicherungen der Tabelle sometable, die einer Tabelle als Abhängigkeiten hinzugefügt wurden:

config {
  type: "table",
  dependencies: [ "manual_assertion",  "dataform_sometable_assertions_nonNull" ,  "dataform_sometable_assertions_rowConditions"]
}

SELECT * FROM ${ref("referenced_table")} LEFT JOIN ...

Assertionen einer ausgewählten Aktion als Abhängigkeiten festlegen

Wenn eine Workflowaktion nur ausgeführt werden soll, wenn alle direkten Zusicherungen einer ausgewählten Abhängigkeitsaktion erfüllt sind, legen Sie den Parameter includeDependentAssertions in der bearbeiteten Aktion auf true fest. Dataform fügt die direkten Zusicherungen der ausgewählten Abhängigkeitsaktion während der Kompilierung automatisch den Abhängigkeiten hinzu. Der Standardwert ist false.

So legen Sie alle Assertions einer ausgewählten Abhängigkeitsaktion als Abhängigkeiten fest:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol definitions/.
  2. Wählen Sie eine SQLX-Datei für die Workflow-Aktion aus.
  3. Legen Sie in der Datei den Parameter includeDependentAssertions auf true fest. Das geht auf eine der folgenden Arten:

    Im Block config

    config {
    type: "ACTION_TYPE",
    dependencies: [{name: "dEPENDENCY_ACTION_NAME", includeDependentAssertions: true}]
    }
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • DEPENDENCY_ACTION_NAME: Der Name der Abhängigkeitsaktion mit den Zusicherungen, die Sie als Abhängigkeiten der bearbeiteten Aktion festlegen möchten.

    In der SELECT-Anweisung

      config { type: "ACTION_TYPE" }
    
      SELECT * FROM ${ref({name: "DEPENDENCY_ACTION_NAME", includeDependentAssertions: true})}
    

    Ersetzen Sie Folgendes:

    • ACTION_TYPE: Der Typ der Workflow-Aktion: table, view oder operations.
    • DEPENDENCY_ACTION_NAME: Der Name der Abhängigkeitsaktion mit den Zusicherungen, die Sie als Abhängigkeiten der bearbeiteten Aktion festlegen möchten.
  4. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt tableC, das von viewA, tableB und allen Zusicherungen von tableB abhängt:

// filename is tableC.sqlx

config {
type: "table",
dependencies: ["viewA", {name: "tableB", includeDependentAssertions: true}]
}

SELECT * FROM ...

Im vorherigen Codebeispiel fügt Dataform während der Kompilierung automatisch alle direkten Zusicherungen von tableB als Abhängigkeiten zu tableC hinzu.

Die Zusicherungen aller Abhängigkeitsaktionen als Abhängigkeiten festlegen

Wenn eine Workflow-Aktion nur ausgeführt werden soll, wenn alle direkten Zusicherungen aller Abhängigkeitsaktionen erfolgreich sind, legen Sie den Parameter dependOnDependencyAssertions in der bearbeiteten Aktion auf true fest. Dataform fügt die direkten Zusicherungen der Abhängigkeitsaktionen während der Kompilierung automatisch als Abhängigkeiten hinzu. Der Standardwert ist false.

Wenn Sie den Parameter dependOnDependencyAssertions und die Parameter includeDependentAssertions in einer einzelnen Datei festlegen, hat der Parameter includeDependentAssertions für die Abhängigkeitsaktion, für die er festgelegt ist, Vorrang.

So legen Sie alle Assertions einer ausgewählten Abhängigkeitsaktion als Abhängigkeiten fest:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol definitions/.
  2. Wählen Sie eine SQLX-Datei für die Workflow-Aktion aus.
  3. Legen Sie in der Datei den Parameter dependOnDependencyAssertions auf true fest. Verwenden Sie dazu das folgende Format:

    config {
    type: "ACTION_TYPE",
    dependOnDependencyAssertions: true,
    dependencies: [ "dependency1", "dependency2" ]
    }
    

    Ersetzen Sie ACTION_TYPE durch den Typ der Workflowaktion. Unterstützte Werte sind table, view und operations.

  4. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt sometableE, das von sometableA, sometabletableB, sometableC, sometableD und allen direkten Zusicherungen der Abhängigkeitstabellen abhängt:

// filename is sometableE.sqlx

config {
type: "table",
dependOnDependencyAssertions: true,
dependencies: [ "sometableA", "sometableB" ]
}

SELECT * FROM ${ref("sometableC")}
SELECT * FROM ${ref("sometableD")}

Im vorherigen Codebeispiel fügt Dataform während der Kompilierung automatisch alle direkten Zusicherungen von sometableA, sometableB, sometableC und sometableD als Abhängigkeiten zu sometableE hinzu.

Auf eine Tabelle mit einem überschriebenen Tabellennamen verweisen

  • Wenn Sie in der Funktion ref auf eine Tabelle mit einem überschriebenen Tabellennamen verweisen möchten, geben Sie den überschriebenen Tabellennamen ein, der in name: "" festgelegt ist.

Im folgenden Codebeispiel wird auf eine Tabelle verwiesen, deren Name in overridden_name geändert wurde:

  SELECT * FROM ${ref("overridden_name")}

Weitere Informationen zum Überschreiben von Tabellennamen finden Sie unter Tabelleneinstellungen überschreiben.

Nächste Schritte