test

Nutzung

Test:historic_revenue_is_accurate {
explore_source: orders {
column: total_revenue {
field
Hierarchie
test

– oder –

test

– oder –

test
Standardwert
Keine

Akzeptiert
Die ID des Datentests sowie die Unterparameter, mit denen die Testansprüche und die Abfrage definiert werden.

Definition

Weitere Tipps und Informationen zu Datentests finden Sie im Looker-Community-Thema LookML-Datentests: Empfehlungen und Best Practices.

Looker verfügt über den LookML-Validator, um zu prüfen, ob Ihr LookML-Code syntaktisch gültig ist, und den Inhaltsprüfer, um Objektverweise zwischen Ihrem Inhalt und Ihrem Modell zu überprüfen.

Zusätzlich zu diesen Validierungen können Sie mit dem Parameter test die Logik Ihres Modells validieren. Für jeden Datentest erstellen Sie eine Abfrage und eine Assertion-Anweisung yesno. Der Datentest führt die Testabfrage aus und prüft, ob die Assertion für jede Zeile der Testabfrage zutrifft. Wenn die Assertion-Anweisung yes für jede Zeile der Testabfrage zurückgibt, besteht der Datentest.

Wenn Ihre Projekteinstellungen so konfiguriert sind, dass Datentests vor der Bereitstellung in der Produktion bestanden werden müssen, sehen Sie in der IDE die Schaltfläche Tests ausführen, nachdem Sie die Änderungen am Projekt festgeschrieben 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 vor der Bereitstellung in der Produktion erforderlich sind, kann ein LookML-Entwickler im Entwicklungsmodus jederzeit Datentests ausführen, um die Logik des Modells zu überprüfen.

Sie können Datentests in Modelldateien, Dateien ansehen oder in separaten Datentestdateien erstellen. Wenn Sie eine eigene Datei für Ihre Datentests verwenden, denken Sie daran, die Datentestdatei in jeder Modell- oder Ansichtsdatei, in der Sie die Datentests ausführen möchten, mit include zu versehen.

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 in jeder Zeile der Testabfrage zur Überprüfung der Daten ausgeführt wird.

Nachdem Sie LookML für Ihren Test definiert haben, können Sie den Datentest ausführen, um zu prüfen, ob der Test richtig funktioniert und um zu sehen, ob die Logik des Modells bestanden wurde. Sie müssen sich dazu im Entwicklungsmodus befinden.

Es gibt mehrere Möglichkeiten, Datentests für ein Projekt zu starten:

  1. Wenn Ihre Projekteinstellungen so konfiguriert sind, dass Datentests erfolgreich durchlaufen werden müssen, bevor die Dateien für die Produktion bereitgestellt werden, zeigt die IDE die Schaltfläche Tests ausführen an, nachdem Sie Commit für die Änderungen am Projekt durchgeführt haben. Dadurch werden alle Tests für Ihr Projekt ausgeführt, unabhängig davon, welche Datei den Test definiert. Sie müssen die Datentests bestehen, bevor Sie Ihre Änderungen in der Produktion bereitstellen können.
  2. Klicken Sie im Bereich Projektzustand auf Datentests ausführen. Dadurch werden alle Datentests in Ihrem Projekt ausgeführt, unabhängig davon, welche Datei den Test definiert.
  3. Wählen Sie im Menü der Datei die Option LookML-Tests ausführen aus. Dadurch werden nur die in der aktuellen Datei definierten Tests ausgeführt.

Nachdem Sie die Datentests ausgeführt haben, werden im Bereich Projektzustand der Fortschritt und die Ergebnisse angezeigt:

Sie können auf den Link Abfrage untersuchen klicken, um die Funktion „Erkunden“ mit der im Datentest definierten Abfrage zu öffnen.

explore_source

Der explore_source-Parameter in einem Datentest verwendet dieselbe Syntax und dieselbe Logik wie der explore_source-Parameter einer abgeleiteten Tabelle. Der einzige Unterschied besteht darin, dass die Unterparameter explore_source derived_column, bind_filters und bind_all_filters eines Datentests nicht unterstützt werden.

Praktischer Tipp: Eine einfache Möglichkeit, die LookML-Methode zu erhalten, besteht darin, eine Abfrage mit dem vorhandenen explorativen Analysetool zu erstellen. Wählen Sie dann im Zahnradmenü „Erkunden“ die Option LookML aus und klicken Sie auf den Tab abgeleitete Tabelle, um die LookML für die Abfrage abzurufen. Weitere Informationen finden Sie in der Dokumentation zum Erstellen nativer abgeleiteter Tabellen.

Beachten Sie beim explore_source eines Datentests Folgendes:

  • Die explore_source-Abfrage eines Datentests ist eine Standard-Looker-Abfrage. Das bedeutet, dass die explore_source-Abfrage des Tests auf 5.000 Zeilen beschränkt ist. Achten Sie darauf, dass Ihre Abfrage nicht mehr als 5.000 Zeilen umfasst, damit Sie einen vollständigen Ergebnissatz zum Testen erhalten. Sie können in Ihrem explore_source Filter oder eine Sortierung verwenden, um die Anzahl der Zeilen in der Abfrage zu reduzieren oder die relevanten Zeilen an die Spitze der Abfrage zu stellen.

  • Ein explore mit extension: required kann nicht als explore_source für einen Datentest verwendet werden. Die LookML-Validierung generiert einen Fehler, dass explore_source nicht gefunden werden kann.

assert

Der Unterparameter assert definiert die Kriterien, nach denen das Ergebnis der Abfrage explore_source gültig ist. Der Unterparameter expression akzeptiert einen Looker-Ausdruck, der zu einem yesno (Booleschen Wert) führt. Nachdem die explore_source-Abfrage ausgeführt wurde, wird der Assertion-Ausdruck für jede Zeile des Ergebnissatzes der Abfrage ausgewertet. Wenn für eine beliebige Zeile der Abfrage eine no-Antwort zurückgegeben wird, 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 Assertion für jede Zeile der explore_source-Abfrage wahr sein.

Tipp: Im Dialogfeld Tabellenberechnungen können Sie die Looker-Syntax für den Testparameter expression testen.

Für die Verwendung in Datentests müssen Felder im Looker-Ausdruck vollständig ausgefüllt sein, d. h., sie werden im Format view_name.field_name angegeben. 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

Eindeutigen Primärschlüssel verwenden

Der folgende Datentest erstellt eine Abfrage aus dem orders-explorativen Analysetool und definiert eine expression, um zu testen, ob die Bestell-IDs in der Ergebnismenge eindeutig sind. Die Abfrage explore_source erstellt die Anzahl der Zeilen, die mit den einzelnen IDs in der Datenbank verknüpft sind. Wenn die ID eindeutig ist, sollte die Datenbank nur eine Zeile für eine ID haben. Außerdem sortiert er nach Anzahl und begrenzt den Ergebnissatz auf eine Zeile. Die Abfrageantwort ist also die ID mit der höchsten Anzahl. Wenn eine ID eine höhere Anzahl als 1 hat, gibt es mehrere Zeilen für diese ID. Daher ist die ID nicht eindeutig. In diesem Fall schlägt der 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

Bei diesem Test wird geprüft,ob der Umsatz 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 ;;
  }
}

Es werden keine Nullwerte bestätigt

Der nächste Datentest prüft, ob die Daten Nullwerte enthalten. explore_source verwendet sort, um sicherzustellen, dass alle Nullen oben in der Abfrage zurückgegeben werden. Die Sortierung nach Nullen kann je nach Dialekt variieren. Im folgenden Test wird desc: yes 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}) ;;
  }
}