Tabellen mit Behauptungen testen

In diesem Dokument erfahren Sie, wie Sie mit dem Dataform-Kern Dataform-Tabellenaussagen erstellen und Ihren Workflowcode testen.

Behauptungen

Eine Assertion ist eine Abfrage für Datenqualitätstests, mit der Zeilen gefunden werden, die gegen eine oder mehrere in der Abfrage angegebene Bedingungen verstoßen. Wenn die Abfrage Zeilen zurückgibt, schlägt die Prüfung fehl. Dataform führt jedes Mal, wenn der SQL-Workflow aktualisiert wird, Prüfungen durch und benachrichtigt Sie, wenn Prüfungen fehlschlagen.

Dataform erstellt automatisch Ansichten in BigQuery, die die Ergebnisse der kompilierten Bestätigungsanfragen enthalten. Wie in der Datei mit den Workflow-Einstellungen konfiguriert, erstellt Dataform diese Ansichten in einem Schema für Prüfungen, in dem Sie die Prüfungsergebnisse 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 Behauptungen für alle Dataform-Tabellentypen erstellen: Tabellen, inkrementelle Tabellen, Ansichten und materialisierte Ansichten.

Sie haben folgende Möglichkeiten, Behauptungen zu erstellen:

Hinweise

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

    Zur Seite „Dataform“

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

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

  4. Tabelle erstellen

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 Erstellen von Behauptungen 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 Behauptungen erstellen

Sie können dem config-Block einer Tabelle vordefinierte Dataform-Behauptungen hinzufügen. Dataform führt diese Prüfungen nach dem Erstellen der Tabelle aus. Nachdem Dataform die Tabelle erstellt hat, sehen Sie auf dem Tab Workflow-Ausführungsprotokolle Ihres Arbeitsbereichs, ob die Assertion bestanden hat.

Im config-Block einer Tabelle können Sie die folgenden Behauptungen erstellen:

  • nonNull

    Mit dieser Bedingung wird geprüft, ob die angegebenen Spalten in allen Tabellenzeilen nicht den Wert NULL haben. Diese Bedingung wird für Spalten verwendet, die niemals null sein können.

    Das folgende Codebeispiel zeigt eine nonNull-Bestätigung im config-Block einer Tabelle:

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

    Mit dieser Bedingung wird geprüft, ob alle Tabellenzeilen der von Ihnen definierten benutzerdefinierten Logik entsprechen. Jede Zeilenbedingung ist ein benutzerdefinierter SQL-Ausdruck und jede Tabellenzeile wird anhand der einzelnen Zeilenbedingungen ausgewertet. Die Prüfung schlägt fehl, wenn eine Tabellenzeile zu false führt.

    Das folgende Codebeispiel zeigt eine benutzerdefinierte rowConditions-Bestätigung 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

    Mit dieser Bedingung wird geprüft, ob in einer bestimmten Spalte keine Tabellenzeilen denselben Wert haben.

    Das folgende Codebeispiel zeigt eine uniqueKey-Bestätigung im config-Block einer Ansicht:

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

    Mit dieser Bedingung wird geprüft, ob in den angegebenen Spalten keine Tabellenzeilen denselben Wert haben. Die Prüfung schlägt fehl, wenn die Tabelle mehr als eine Zeile mit denselben Werten für alle angegebenen Spalten enthält.

    Das folgende Codebeispiel zeigt eine uniqueKeys-Bestätigung im config-Block einer Tabelle:

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

Block config mit Behauptungen ergänzen

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

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

Das folgende Codebeispiel zeigt die Bedingungen, die im Block config hinzugefügt wurden:

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 Behauptungen mit SQLX erstellen

Manuelle Behauptungen sind SQL-Abfragen, die Sie in einer speziellen SQLX-Datei schreiben. Eine SQL-Abfrage für manuelle Bestätigungen darf keine Zeilen zurückgeben. Wenn die Abfrage bei der Ausführung Zeilen zurückgibt, schlägt die Assertion fehl.

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

  1. Klicken Sie im Bereich Dateien neben definitions/ auf das Dreipunkt-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 Ziffern, 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 die Datei Folgendes ein:

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

  8. Optional: Klicken Sie auf Formatieren.

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

config { type: "assertion" }

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

Nächste Schritte