Datenqualität testen

In diesem Dokument erfahren Sie, wie Sie mit Dataform Core Dataform-Tabellenassertions erstellen und Ihren Workflowcode testen.

Assertions

Eine Assertion ist eine Datenqualitäts-Testabfrage, mit der Zeilen gefunden werden, die eine oder mehrere in der Abfrage angegebene Bedingungen verletzen. Wenn die Abfrage Zeilen zurückgibt, schlägt die Assertion fehl. Dataform führt bei jeder Aktualisierung Ihres Workflows Assertions aus und benachrichtigt Sie, wenn eine Assertion fehlschlägt.

Dataform erstellt automatisch Ansichten in BigQuery, die die Ergebnisse kompilierter Assertionsabfragen enthalten. Wie in der Datei mit den Workfloweinstellungen konfiguriert, erstellt Dataform diese Ansichten in einem Assertionsschema, in dem Sie die Ergebnisse der Assertions prüfen können.

Für das Standardschema dataform_assertions erstellt Dataform beispielsweise eine Ansicht in BigQuery im folgenden Format: dataform_assertions.assertion_name.

Sie können Assertions für alle Dataform-Tabellentypen erstellen: Tabellen, inkrementelle Tabellen, Ansichten und materialisierte Ansichten.

Sie können Assertions auf folgende Arten erstellen:

Hinweis

  1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

    Seite „Dataform“ aufrufen

  2. Wählen Sie ein Repository aus oder erstellen Sie eines.

  3. Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.

  4. Erstellen Sie eine Tabelle.

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 Erstellen von Assertions 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.

Integrierte Assertions erstellen

Sie können dem config-Block einer Tabelle integrierte Dataform-Assertions hinzufügen. Dataform führt diese Assertions nach der Tabellenerstellung aus. Nachdem Dataform die Tabelle erstellt hat, können Sie auf dem Tab Workflowausführungsprotokolle Ihres Arbeitsbereichs sehen, ob die Assertion erfolgreich war.

Sie können die folgenden Assertions im config-Block einer Tabelle erstellen:

  • nonNull

    Diese Bedingung stellt sicher, dass die angegebenen Spalten in allen Tabellenzeilen nicht null sind. Diese Bedingung wird für Spalten verwendet, die niemals null sein können.

    Das folgende Codebeispiel zeigt eine nonNull-Assertion im config-Block einer Tabelle:

config {
  type: "table",
  assertions: {
    nonNull: ["user_id", "customer_id", "email"]
  }
}
SELECT ...
  • rowConditions

    Diese Bedingung stellt sicher, dass alle Tabellenzeilen der von Ihnen definierten benutzerdefinierten Logik folgen. Jede Zeilenbedingung ist ein benutzerdefinierter SQL-Ausdruck und jede Tabellenzeile wird anhand jeder Zeilenbedingung ausgewertet. Die Assertion schlägt fehl, wenn eine Tabellenzeile false ergibt.

    Das folgende Codebeispiel zeigt eine benutzerdefinierte rowConditions-Assertion im config-Block einer inkrementellen Tabelle:

config {
  type: "incremental",
  assertions: {
    rowConditions: [
      'signup_date is null or signup_date > "2022-08-01"',
      'email like "%@%.%"'
    ]
  }
}
SELECT ...
  • uniqueKey

    Diese Bedingung stellt sicher, dass in einer angegebenen Spalte keine Tabellenzeilen denselben Wert haben.

    Das folgende Codebeispiel zeigt eine uniqueKey-Assertion im config-Block einer Ansicht:

config {
  type: "view",
  assertions: {
    uniqueKey: ["user_id"]
  }
}
SELECT ...
  • uniqueKeys

    Diese Bedingung stellt sicher, dass in den angegebenen Spalten keine Tabellenzeilen denselben Wert haben. Die Assertion schlägt fehl, wenn in der Tabelle mehr als eine Zeile mit denselben Werten für alle angegebenen Spalten vorhanden ist.

    Das folgende Codebeispiel zeigt eine uniqueKeys-Assertion im config-Block einer Tabelle:

config {
  type: "table",
  assertions: {
    uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
  }
}
SELECT ...

Assertions dem config-Block hinzufügen

So fügen Sie dem Konfigurationsblock einer Tabelle Assertions hinzu:

  1. Wählen Sie in Ihrem Entwicklungsarbeitsbereich im Bereich Dateien eine SQLX-Datei mit der Tabellendefinition aus.
  2. Geben Sie im config-Block der Tabellendatei assertions: {} ein.
  3. Fügen Sie in assertions: {} Ihre Assertions hinzu.
  4. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt die im config-Block hinzugefügten Bedingungen:

config {
  type: "table",
  assertions: {
    uniqueKey: ["user_id"],
    nonNull: ["user_id", "customer_id"],
    rowConditions: [
      'signup_date is null or signup_date > "2019-01-01"',
      'email like "%@%.%"'
    ]
  }
}
SELECT ...

Manuelle Assertions mit SQLX erstellen

Manuelle Assertions sind SQL-Abfragen, die Sie in einer separaten SQLX-Datei schreiben. Eine SQL-Abfrage für eine manuelle Assertion muss null Zeilen zurückgeben. Wenn die Abfrage bei der Ausführung Zeilen zurückgibt, schlägt die Assertion fehl.

So fügen Sie manuelle Assertions in einer neuen SQLX-Datei hinzu:

  1. Klicken Sie im Bereich Dateien neben definitions/ auf das Menü Mehr .
  2. Klicken Sie auf Datei erstellen.
  3. Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei gefolgt von .sqlx ein. Beispiel: definitions/custom_assertion.sqlx.

    Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.

  4. Klicken Sie auf Datei erstellen.

  5. Klicken Sie im Bereich Dateien auf die neue Datei.

  6. Geben Sie in der Datei Folgendes ein:

    config {
      type: "assertion"
    }
    
  7. Schreiben Sie unter dem config-Block Ihre SQL-Abfrage oder mehrere Abfragen.

  8. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt eine manuelle Assertion in einer SQLX-Datei, die sicherstellt dass die Felder A, B und c niemals NULL in sometable sind:

config { type: "assertion" }

SELECT
  *
FROM
  ${ref("sometable")}
WHERE
  a IS NULL
  OR b IS NULL
  OR c IS NULL

Nächste Schritte