Nutzung
test: historic_revenue_is_accurate { explore_source: orders { column: total_revenue { field: orders.total_revenue } filters: [orders.created_date: "2017"] } assert: revenue_is_expected_value { expression: ${orders.total_revenue} = 626000 ;; } }
|
Hierarchie
test- oder - test- oder - test |
Standardwert
Keine
Akzeptiert
Die ID des Datentests sowie Unterparameter, die die Testbestätigungen und die Abfrage definieren.
|
Definition
Looker bietet den LookML-Validator, mit dem Sie prüfen können, ob Ihr LookML-Code syntaktisch gültig ist, und die Inhaltsvalidierung, mit der Sie Objektverweise zwischen Ihrem Inhalt und Ihrem Modell prüfen können.
Zusätzlich zu diesen Validatoren können Sie mit dem Parameter test die Logik Ihres Modells validieren. Für jeden Datentest erstellen Sie eine Abfrage und eine yesno-Bestätigungsanweisung. Der Datentest führt die Testabfrage aus und prüft, ob die Bestätigung für jede Zeile der Testabfrage zutrifft. Wenn die Bestätigungsanweisung für jede Zeile der Testabfrage yes zurückgibt, besteht der Datentest.
Wenn Ihre Projekteinstellungen so konfiguriert sind, dass Datentests bestanden werden müssen, bevor die Bereitstellung in der Produktion erfolgt, und Ihr Projekt einen oder mehrere test Parameter enthält, wird in der IDE die Schaltfläche Tests ausführen angezeigt, nachdem Sie Änderungen am Projekt vorgenommen haben. LookML-Entwickler müssen die Datentests ausführen, bevor sie Änderungen in der Produktion bereitstellen.
Unabhängig davon, ob für Ihr Projekt Datentests erforderlich sind, bevor die Bereitstellung in der Produktion erfolgt, kann ein LookML-Entwickler im Entwicklungsmodus jederzeit Datentests ausführen, um die Logik des Modells zu prüfen.
Sie können Datentests in Modelldateien, Ansichtsdateien oder in separaten, dedizierten Datentestdateien erstellen. Wenn Sie eine dedizierte Datei für Ihre Datentests verwenden, müssen Sie die Datentestdatei in jede Modelldatei oder Ansichtsdatei include, in der Sie Ihre Datentests ausführen möchten.
Ein Datentest darf nicht denselben Namen und dieselbe explore_source wie ein anderer Datentest im selben Projekt haben. Wenn Sie dieselbe explore_source für mehrere Datentests in Ihrem Projekt verwenden, müssen die Namen der Datentests eindeutig sein.
Der Parameter test hat die folgenden Unterparameter:
explore_source: Definiert die Abfrage, die im Datentest verwendet werden soll.assert: Definiert einen Looker-Ausdruck, der für jede Zeile der Testabfrage ausgeführt wird, um die Daten zu prüfen.
Nachdem Sie das LookML für Ihren Test definiert haben, können Sie den Datentest ausführen, um zu prüfen, ob er ordnungsgemäß funktioniert und ob die Logik Ihres Modells den Test besteht. Dazu müssen Sie sich im Entwicklungsmodus befinden.
Es gibt mehrere Möglichkeiten, Datentests für ein Projekt zu starten:

- Wenn Ihre Projekteinstellungen so konfiguriert sind, dass Datentests bestanden werden müssen, bevor Sie Ihre Dateien in der Produktion bereitstellen, wird in der IDE die Schaltfläche Tests ausführen angezeigt, nachdem Sie Änderungen am Projekt vorgenommen haben. Dadurch werden alle Tests für Ihr Projekt ausgeführt, unabhängig davon, in welcher Datei der Test definiert ist. Sie müssen die Datentests bestehen, bevor Sie Ihre Änderungen in der Produktion bereitstellen können.
- Wählen Sie im Bereich Projektstatus die Schaltfläche Datentests ausführen aus. Dadurch werden alle Datentests in Ihrem Projekt ausgeführt, unabhängig davon, in welcher Datei der Test definiert ist.
- Wählen Sie im Menü der Datei die Option LookML-Tests ausführen aus. Dadurch werden nur die Tests ausgeführt, die in der aktuellen Datei definiert sind.
Nachdem Sie die Datentests ausgeführt haben, werden im Bereich Projektstatus der Fortschritt und die Ergebnisse angezeigt.

Sie können für jedes Testergebnis den Link Abfrage untersuchen auswählen, um ein Explore mit der Abfrage zu öffnen, die im Datentest definiert ist.
explore_source
Der explore_source Parameter in einem Datentest verwendet dieselbe Syntax und Logik wie der explore_source Parameter einer abgeleiteten Tabelle. Der einzige Unterschied besteht darin, dass explore_source eines Datentests die Unterparameter derived_column, bind_filters und bind_all_filters nicht unterstützt.
Praktischer Tipp: Eine einfache Möglichkeit, das
explore_sourceLookML zu erhalten, besteht darin, eine vorhandene Explore zu verwenden, um Ihre Abfrage zu erstellen. Wählen Sie in der Explore im Zahnradmenü LookML abrufen und dann den Tab Abgeleitete Tabelle aus, um das LookML für die Abfrage zu erhalten. Weitere Informationen finden Sie in der Dokumentation zum Erstellen von nativen abgeleiteten Tabellen.
Beachten Sie für die explore_source eines Datentests Folgendes:
Die
explore_source-Abfrage eines Datentests ist eine Standardabfrage in Looker. Das bedeutet, dass dieexplore_source-Abfrage des Tests auf 5.000 Zeilen begrenzt ist. Achten Sie darauf, dass Ihre Abfrage nicht mehr als 5.000 Zeilen umfasst, damit Sie ein vollständiges Ergebnis-Set zum Testen erhalten. Sie können Filter oder Sortierungen in Ihreexplore_sourceeinfügen, um die Anzahl der Zeilen in Ihrer Abfrage zu reduzieren oder die relevanten Zeilen oben in der Abfrage zu platzieren.Ein
exploremitextension: requiredkann nicht alsexplore_sourcefür einen Datentest verwendet werden. Der LookML-Validator gibt einen Fehler aus, dass dieexplore_sourcenicht gefunden werden kann.
assert
Der Unterparameter assert definiert die Kriterien, nach denen das Ergebnis der explore_source-Abfrage als gültig betrachtet wird. Der expression Unterparameter akzeptiert einen Looker-Ausdruck, der zu einem yesno (boolescher Wert) führt. Nachdem die explore_source-Abfrage ausgeführt wurde, wird der Ausdruck der Bestätigung für jede Zeile des Ergebnis-Sets der Abfrage ausgewertet. Wenn für eine Zeile der Abfrage eine Antwort no vorhanden ist, schlägt der Datentest fehl. Wenn die Abfrage selbst Fehler enthält, schlägt der Test ebenfalls fehl.
Ein Test kann mehrere assert-Deklarationen haben. Damit der Test bestanden wird, muss jede Bestätigung für jede Zeile der explore_source-Abfrage zutreffen.
Praktischer Tipp: Sie können das Dialogfeld für Tabellenkalkulationen verwenden, um die Looker-Ausdruckssyntax zu testen, die im Parameter
expressionIhres Tests verwendet werden soll.
Für die Verwendung in Datentests müssen Felder im Looker-Ausdruck vollständig definiert sein. Das bedeutet, dass sie im Format view_name.field_name angegeben werden. Im folgenden Ausdruck wird das Feld beispielsweise als aircraft_engine_types.aircraft_engine_type_id deklariert:
assert: engine_type_id_not_null {
expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}
Beispiele
Sicherstellen, dass ein Primärschlüssel eindeutig ist
Der folgende Datentest erstellt eine Abfrage aus der orders-Explore und definiert einen expression, um zu prüfen, ob die Bestell‑IDs im Ergebnis-Set eindeutig sind. Die explore_source-Abfrage erstellt eine Anzahl von Zeilen, die mit jeder ID in der Datenbank verknüpft sind. Wenn die ID eindeutig ist, sollte die Datenbank nur eine Zeile für eine ID enthalten. Außerdem wird nach der Anzahl sortiert und das Ergebnis-Set auf eine Zeile begrenzt. Die Abfrageantwort ist also die ID mit der höchsten Anzahl. Wenn eine ID eine Anzahl von mehr als 1 hat, wissen wir, dass es mehrere Zeilen für diese ID gibt und die ID daher nicht eindeutig ist. In diesem Fall schlägt dieser Datentest fehl.
test: order_id_is_unique {
explore_source: orders {
column: id {}
column: count {}
sorts: [orders.count: desc]
limit: 1
}
assert: order_id_is_unique {
expression: ${orders.count} = 1 ;;
}
Bekannten Wert prüfen
Dieser nächste Datentest prüft,ob der Umsatzwert für 2017 immer 626.000 $ beträgt. In diesem Dataset ist das ein bekannter Wert, der sich nie ändern sollte.
test: historic_revenue_is_accurate {
explore_source: orders {
column: total_revenue {
field: orders.total_revenue
}
filters: [orders.created_date: "2017"]
}
assert: revenue_is_expected_value {
expression: ${orders.total_revenue} = 626000 ;;
}
}
Bestätigen, dass keine Nullwerte vorhanden sind
Dieser nächste Datentest prüft, ob in den Daten keine Nullwerte vorhanden sind. Diese explore_source verwendet eine sort, um sicherzustellen, dass alle Nullwerte oben in der Abfrage zurückgegeben werden. Die Sortierung nach Nullwerten kann je nach Dialekt variieren. Im folgenden Test wird desc: yes als Beispiel verwendet.
test: status_is_not_null {
explore_source: orders {
column: status {}
sorts: [orders.status: desc]
limit: 1
}
assert: status_is_not_null {
expression: NOT is_null(${orders.status}) ;;
}
}