Test

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 Kennung des Datentests sowie Unterparameter, die die Test-Assertions 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 Ihren Inhalten 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-Zusicherung. Beim Datentest wird die Testabfrage ausgeführt und geprüft, ob die Behauptung für jede Zeile der Testabfrage zutrifft. Wenn die Zusicherungsanweisung für jede Zeile der Testabfrage yes zurückgibt, wird der Datentest bestanden.

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 es in der Produktion bereitgestellt wird, kann ein LookML-Entwickler im Entwicklungsmodus jederzeit Datentests ausführen, um die Logik des Modells zu überprüfen.

Sie können Datentests in Modelldateien, Ansichtsdateien oder in separaten, dedizierten Datentestdateien erstellen. Wenn Sie eine separate Datei für Ihre Datentests verwenden, müssen Sie die Datentestdatei in jeder Modell- 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 überprüfen.

Nachdem Sie die 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 Entwicklermodus befinden.

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

  1. Wenn Ihre Projekteinstellungen so konfiguriert sind, dass Datentests bestanden werden müssen, bevor Ihre Dateien in der Produktion bereitgestellt werden, wird in der IDE die Schaltfläche Tests ausführen angezeigt, nachdem Sie Änderungen am Projekt übernommen 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.
  2. 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.
  3. 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 Explore-Abfrage auswählen, um ein Explore mit der im Datentest definierten Abfrage zu öffnen.

explore_source

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

Handy Tip: An easy way to get the explore_source LookML is to use an existing Explore to create your query. Wählen Sie im Explore-Bereich im Zahnradmenü des Explore-Bereichs die Option LookML abrufen und dann den Tab Abgeleitete Tabelle aus, um die LookML für die Abfrage zu erhalten. Weitere Informationen finden Sie in der Dokumentation zum Erstellen nativer abgeleiteter Tabellen.

Beachten Sie für die 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 ein Limit von 5.000 Zeilen hat. 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 Ihre explore_source einfügen, um die Anzahl der Zeilen in der Abfrage zu reduzieren oder die relevanten Zeilen an den Anfang der Abfrage zu verschieben.

  • Ein explore mit extension: required kann nicht als explore_source für einen Datentest verwendet werden. Der LookML-Validator gibt einen Fehler aus, dass explore_source nicht gefunden werden kann.

assert

Mit dem Unterparameter assert werden die Kriterien definiert, anhand derer das Ergebnis der explore_source-Abfrage als gültig betrachtet wird. Für den Unterparameter expression ist ein Looker-Ausdruck zulässig, der zu einem yesno (booleschen Wert) führt. Nachdem die explore_source-Abfrage ausgeführt wurde, wird der Ausdruck der Zusicherung für jede Zeile der Ergebnismenge der Abfrage ausgewertet. Wenn für eine Zeile der Abfrage eine no-Antwort 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 Behauptung für jede Zeile der explore_source-Abfrage zutreffen.

Praktischer Tipp: Sie können den Dialog Tabellenkalkulationen verwenden, um die Looker-Ausdruckssyntax zu testen, die im Parameter expression Ihres Tests verwendet werden soll.

Für die Verwendung in Datentests müssen Felder im Looker-Ausdruck vollständig definiert sein, d. h., sie müssen 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

Eindeutigkeit eines Primärschlüssels sicherstellen

Mit dem folgenden Datentest wird eine Abfrage aus dem Explore orders erstellt und ein expression definiert, um zu prüfen, ob die Bestell-IDs im Ergebnis-Set eindeutig sind. Mit der Abfrage explore_source wird die Anzahl der Zeilen für jede ID in der Datenbank ermittelt. Wenn die ID eindeutig ist, sollte die Datenbank nur eine Zeile für eine ID enthalten. Außerdem wird nach der Anzahl sortiert und der Ergebnissatz auf eine Zeile beschränkt. Die Abfrageantwort ist also die ID mit der höchsten Anzahl. Wenn eine ID einen Wert größer 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 bestätigen

Im nächsten Datentest wird geprü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

Im nächsten Datentest wird geprüft, ob die Daten Nullwerte enthalten. In dieser explore_source wird ein sort verwendet, um sicherzustellen, dass alle Nullwerte oben in der Abfrage zurückgegeben werden. Die Sortierung von 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}) ;;
  }
}