Assertions
Eine Assertion ist eine Datenqualitäts-Testabfrage, mit der Zeilen gefunden werden, die eine oder mehrere in der Abfrage angegebene Bedingungen verletzen. Wenn bei der Abfrage Zeilen zurückgegeben werden, schlägt die Assertion fehl. Dataform führt Assertionen jedes Mal aus, wenn der Workflow aktualisiert wird, und benachrichtigt Sie, wenn Assertionen fehlschlagen.
Dataform erstellt automatisch Ansichten in BigQuery, die die Ergebnisse kompilierter Zusicherungsabfragen enthalten. Wie in der Datei mit den Workflow-Einstellungen konfiguriert, erstellt Dataform diese Ansichten in einem Assertionsschema, in dem Sie die Assertionsergebnisse 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 Zusicherungen für alle Dataform-Tabellentypen erstellen: Tabellen, inkrementelle Tabellen, Ansichten und materialisierte Ansichten.
Sie können Zusicherungen auf folgende Weise erstellen:
Integrierte Zusicherungen zum Konfigurationsblock einer Tabelle hinzufügen
Sie können dem
config
-Block einer Tabelle integrierte Zusicherungen hinzufügen und deren Bedingungen angeben.Manuelle Zusicherungen in einer separaten SQLX-Datei hinzufügen
Sie schreiben benutzerdefinierte Zusicherungen manuell in einer separaten SQLX-Datei für erweiterte Anwendungsfälle oder für Datasets, die nicht von Dataform erstellt wurden.
Hinweise
Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository aus oder erstellen Sie eines.
Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.
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 Zusicherungen 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 integrierte Dataform-Assertions hinzufügen. Dataform führt diese Zusicherungen nach der Tabellenerstellung aus. Nachdem Dataform die Tabelle erstellt hat, können Sie auf dem Tab Workflow execution logs (Workflow-Ausführungsprotokolle) Ihres Arbeitsbereichs sehen, ob die Assertion bestanden wurde.
Sie können die folgenden Behauptungen im config
-Block einer Tabelle erstellen:
nonNull
Mit dieser Bedingung wird geprüft, ob 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 imconfig
-Block einer Tabelle:
config {
type: "table",
assertions: {
nonNull: ["user_id", "customer_id", "email"]
}
}
SELECT ...
rowConditions
Mit dieser Bedingung wird sichergestellt, dass alle Tabellenzeilen der von Ihnen definierten benutzerdefinierten Logik entsprechen. Jede Zeilenbedingung ist ein benutzerdefinierter SQL-Ausdruck und jede Tabellenzeile wird anhand jeder Zeilenbedingung ausgewertet. Die Assertion schlägt fehl, wenn eine Tabellenzeile zu
false
führt.Das folgende Codebeispiel zeigt eine benutzerdefinierte
rowConditions
-Assertion imconfig
-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 sichergestellt, dass in einer angegebenen Spalte keine Tabellenzeilen denselben Wert haben.
Das folgende Codebeispiel zeigt eine
uniqueKey
-Assertion imconfig
-Block einer Ansicht:
config {
type: "view",
assertions: {
uniqueKey: ["user_id"]
}
}
SELECT ...
uniqueKeys
Mit dieser Bedingung wird sichergestellt, dass in den angegebenen Spalten keine Tabellenzeilen denselben Wert haben. Die Assertion schlägt fehl, wenn in der Tabelle mehrere Zeilen mit denselben Werten für alle angegebenen Spalten vorhanden sind.
Das folgende Codebeispiel zeigt eine
uniqueKeys
-Assertion imconfig
-Block einer Tabelle:
config {
type: "table",
assertions: {
uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
}
}
SELECT ...
Assertionen zum Block „config
“ hinzufügen
So fügen Sie dem Konfigurationsblock einer Tabelle Zusicherungen hinzu:
- Wählen Sie in Ihrem Entwicklungsarbeitsbereich im Bereich Dateien eine SQLX-Datei mit einer Tabellendefinition aus.
- Geben Sie im
config
-Block der Tabellendateiassertions: {}
ein. - Fügen Sie in
assertions: {}
Ihre Zusicherungen hinzu. - Optional: Klicken Sie auf Formatieren.
Das folgende Codebeispiel zeigt die im Block config
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 Zusicherungen mit SQLX erstellen
Manuelle Zusicherungen sind SQL-Abfragen, die Sie in einer dedizierten 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 Zusicherungen in eine neue SQLX-Datei ein:
- Klicken Sie im Bereich Dateien neben
definitions/
auf das MenüMehr.
- Klicken Sie auf Datei erstellen.
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.
Klicken Sie auf Datei erstellen.
Klicken Sie im Bereich Dateien auf die neue Datei.
Geben Sie in der Datei Folgendes ein:
config { type: "assertion" }
Schreiben Sie unterhalb des
config
-Blocks Ihre SQL-Abfrage oder mehrere Abfragen.Optional: Klicken Sie auf Formatieren.
Das folgende Codebeispiel zeigt eine manuelle Assertion in einer SQLX-Datei, mit der geprüft wird, ob 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
- Weitere Informationen zu Assertionstypen finden Sie in der Dataform API.
- Informationen zum Definieren von Zusicherungen mit JavaScript finden Sie unter Workflows ausschließlich mit JavaScript erstellen.
- Informationen zum manuellen Ausführen von Workflows finden Sie unter Läufe manuell auslösen.