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:
Dem Konfigurationsblock einer Tabelle vordefinierte Behauptungen hinzufügen
Sie können dem
config
-Block einer Tabelle vordefinierte Behauptungen hinzufügen und ihre Bedingungen angeben.Manuelle Behauptungen in einer separaten SQLX-Datei hinzufügen
Benutzerdefinierte Behauptungen werden manuell in einer separaten SQLX-Datei für erweiterte Anwendungsfälle oder für Datasets geschrieben, 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 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 imconfig
-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 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 geprüft, ob in einer bestimmten Spalte keine Tabellenzeilen denselben Wert haben.
Das folgende Codebeispiel zeigt eine
uniqueKey
-Bestätigung imconfig
-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 imconfig
-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:
- Wählen Sie in Ihrem Entwicklungsbereich im Bereich Dateien eine SQLX-Datei mit Tabellendefinitionen aus.
- Geben Sie im Block
config
der Tabellendateiassertions: {}
ein. - Fügen Sie in
assertions: {}
Ihre Behauptungen hinzu. - 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:
- Klicken Sie im Bereich Dateien neben
definitions/
auf das Dreipunkt-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 Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.
Klicken Sie auf Datei erstellen.
Klicken Sie im Bereich Dateien auf die neue Datei.
Geben Sie in die Datei Folgendes ein:
config { type: "assertion" }
Geben Sie unter dem Block
config
Ihre SQL-Abfrage oder mehrere Abfragen ein.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
- Weitere Informationen zu Bestätigungstypen finden Sie in der Dataform API.
- Informationen zum Definieren von Behauptungen mit JavaScript finden Sie unter Dataform-Workflows mit JavaScript erstellen.
- Informationen zum manuellen Ausführen von Workflows finden Sie unter Triggerausführung.