Continuous Integration SQL Validator

Mit dem SQL-Validator für Continuous Integration (CI) wird geprüft, ob die Dimensionen in Ihren Explores korrekt für Ihre Datenbank ausgeführt werden. Dazu führt der SQL-Validator eine Reihe von Abfragen für die Explores in Ihrem LookML-Projekt aus.

Standardmäßig führt der SQL-Validator die folgenden Aufgaben aus:

  1. Für jeden Explore in Ihrem Projekt führt der SQL-Validator eine Explore-Abfrage aus, die alle Dimensionen im Explore enthält.
  2. Wenn Looker einen Fehler für die Explore-Abfrage zurückgibt, führt der SQL-Validator eine separate Explore-Abfrage für jede Dimension im Explore aus.

Wenn Sie nicht möchten, dass der SQL-Validator jede Dimension in jedem Explore testet, können Sie optional einen oder mehrere der folgenden Schritte ausführen:

Weitere Informationen zu den Optionen, die Sie beim Erstellen oder Bearbeiten einer CI-Suite konfigurieren können, finden Sie auf dieser Seite im Abschnitt SQL-Validator-Optionen. Informationen zum Ausführen des SQL-Validators finden Sie auf der Dokumentationsseite Continuous-Integration-Suites ausführen.

Auf der Seite mit den Ausführungsergebnissen werden alle SQL-Fehler nach Dimension und Explore kategorisiert angezeigt. Außerdem finden Sie dort einen Link zum problematischen LookML-Code und einen Link Von hier aus explorieren für das Debugging:

Seite mit Ergebnissen der kontinuierlichen Integration, auf der die Ergebnisse des SQL-Validators angezeigt werden

Ressourcenverbrauch

Der SQL-Validator ist so konzipiert, dass er in Looker und in Ihrem Data Warehouse möglichst wenig Ressourcen verbraucht. Alle SQL-Validator-Abfragen enthalten eine LIMIT 0- und eine WHERE 1=2-Klausel. Diese Klauseln weisen den Abfrageplaner in Ihrem Data Warehouse an, keine Daten zu verarbeiten, sondern die Gültigkeit des SQL-Codes zu prüfen.

In BigQuery entspricht diese Art von Abfrage beispielsweise einem Probelauf. In BigQuery werden bei LIMIT 0-Abfragen keine Daten gescannt. Daher sollten Ihnen für die vom SQL-Validator ausgeführten Abfragen keine Kosten in Rechnung gestellt werden.

Dimensionen von der SQL-Validierung ausschließen

Möglicherweise möchten Sie bestimmte Dimensionen von der SQL-Validierung ausschließen, z. B. Dimensionen, die von einem Parameter abhängen, da der Wert des Parameters während der Validierung null ist und immer einen SQL-Fehler verursacht.

Sie können auch Dimensionen ausschließen, die keinen sql-Parameter haben, z. B. Dimensionen von type: distance, type: location oder type: duration.

Wenn Sie eine Dimension von der SQL-Validierung ausschließen möchten, können Sie die LookML der Dimension auf zwei Arten ändern:

  • Sie können eine ci: ignore-Anweisung im Parameter tags der LookML-Definition der Dimension hinzufügen, wie im folgenden Beispiel gezeigt:

    dimension: addresses {
      sql: ${TABLE}.addresses ;;
      tags: ["ci: ignore"]
    }
    
  • Sie können den Kommentar -- ci: ignore dem Feld sql der LookML Ihrer Dimension hinzufügen, wie im folgenden Beispiel gezeigt:

    dimension: addresses {
      sql:
        -- ci: ignore
        ${TABLE}.addresses ;;
    }
    

Continuous Integration und OAuth-Datenbankverbindungen

Wenn Ihr LookML-Projekt eine Datenbankverbindung verwendet, die für OAuth konfiguriert ist, können Nutzer automatisierter CI-Dienstkonten den interaktiven OAuth-Ablauf, der für die Authentifizierung bei der Datenbank erforderlich ist, nicht abschließen. Dies führt dazu, dass der SQL-Validator mit dem Fehler OAuth log in required fehlschlägt.

Wenn Sie den SQL-Validator für die Continuous Integration verwenden möchten, implementieren Sie eine der folgenden Behelfslösungen:

  • Datenbankverbindung für die Verwendung eines Dienstkontos konfigurieren: Ändern Sie die Einstellung Authentifizierung der Datenbankverbindung, um ein Dienstkonto (z. B. Standardanmeldedaten für Anwendungen) anstelle von OAuth zu verwenden.
  • Nicht-OAuth-Modell für CI verwenden: Erstellen Sie ein neues LookML-Modell, das eine Nicht-OAuth-Datenbankverbindung verwendet, und importieren Sie Ihre anderen Modelle in dieses Modell. Achten Sie darauf, dass der Looker CI-Nutzer Zugriff auf dieses neue Modell hat.

SQL-Validator-Optionen

Sie können mehrere Optionen angeben, wenn Sie eine Continuous Integration-Suite erstellen oder bearbeiten, um die Ausführung von SQL Validator zu konfigurieren. Die Optionen werden in den folgenden Abschnitten dieser Seite beschrieben:

Explores, die abgefragt werden sollen

Standardmäßig führt der SQL-Validator die SQL-Validierung für alle Modelle und Explores in Ihrem LookML-Projekt aus.

Im Feld Explores für Abfragen können Sie die Explores und Modelle angeben, die in die SQL-Validierung einbezogen werden sollen.

Sie können Explores im folgenden Format angeben: model_name/explore_name

Wichtige Hinweise:

  • Verwenden Sie für model_name den Namen der Modelldatei ohne die Erweiterung .model.lkml. Wenn Sie beispielsweise das in thelook.model.lkml definierte Modell angeben möchten, geben Sie thelook ein.
  • Verwenden Sie für explore_name den explore_name aus dem LookML-Parameter explore. Wenn Sie beispielsweise das in Ihrem LookML-Projekt als explore: users definierte Explore angeben möchten, geben Sie users ein.
  • Sie können eine durch Kommas getrennte Liste erstellen, um mehrere Explores anzugeben.
  • Sie können den Platzhalter * in model_name oder explore_name verwenden.

Hier sind einige Beispiele:

  • Wenn Sie nur das Explore Users angeben möchten, das mit explore: users in der Datei thelook.model.lkml definiert ist, geben Sie Folgendes ein:

    thelook/users
    
  • Wenn Sie die Explores mit den Namen users und orders in der Datei thelook.model.lkml angeben möchten, geben Sie Folgendes ein:

    thelook/users, thelook/orders
    
  • Wenn Sie alle Explores in thelook.model.lkml angeben möchten, geben Sie Folgendes ein:

    thelook/*
    
  • Wenn Sie alle Explores mit dem Namen users in allen Modellen Ihres Projekts angeben möchten, geben Sie Folgendes ein:

    */users
    

Auszuschließende Explores

Standardmäßig führt der SQL-Validator die SQL-Validierung für alle Modelle und Explores in Ihrem LookML-Projekt aus.

Im Feld Auszuschließende Explores können Sie die Explores und Modelle angeben, die von der SQL-Validierung ausgeschlossen werden sollen.

Sie können Explores im folgenden Format angeben: model_name/explore_name

Weitere Informationen zum Angeben von Explores für den SQL-Validator finden Sie im Abschnitt Explores für Abfragen.

Fehler früh erkennen

Standardmäßig führt der SQL-Validator eine Abfrage pro Explore mit allen Dimensionen in der Abfrage aus. Wenn diese Explore-Abfrage fehlschlägt, führt der SQL-Validator eine Explore-Abfrage für jede Dimension im Explore einzeln aus.

Für eine schnellere Validierung können Sie die Option Fail-Fast aktivieren. Dann führt der SQL-Validator nur die erste Abfrage für ein Explore aus, also die Abfrage, die alle Dimensionen auf einmal enthält. Wenn diese Abfrage einen Fehler zurückgibt, wird dieser Fehler vom SQL Validator in den Ergebnissen des CI-Laufs angezeigt und es wird mit dem nächsten zu validierenden Explore fortgefahren.

Wenn Fail-Fast aktiviert ist, wird die Validierung in der Regel schneller abgeschlossen. In den Ergebnissen des SQL-Validators wird jedoch nur der erste Fehler für jedes Explore angezeigt, auch wenn mehrere Dimensionen Fehler aufweisen. Das bedeutet, dass nach dem Beheben des ersten Fehlers bei der nächsten Ausführung des SQL-Validators möglicherweise ein weiterer Fehler angezeigt wird.

Ausgeblendete ignorieren

Aktivieren Sie das Feld Ausgeblendete ignorieren, wenn der SQL-Validator die LookML-Dimensionen ignorieren soll, die Ihre Looker-Entwickler mit hidden: yes definiert haben. Der SQL-Validator lässt diese Dimensionen bei der Validierung aus seinen Explore-Abfragen heraus.

Nebenläufigkeit von Abfragen

Standardmäßig führt der SQL-Validator nicht mehr als 10 Abfragen gleichzeitig aus, um Ihre Looker-Instanz nicht zu überlasten. Im Feld Nebenläufigkeit von Abfragen können Sie eine andere maximale Anzahl von Abfragen angeben, die der SQL-Validator gleichzeitig ausführen kann.

Der Höchstwert für das Feld Abfrage-Nebenläufigkeit ist auf die Einstellung Maximale Anzahl gleichzeitiger Abfragen für diese Verbindung für Ihre Datenbankverbindung beschränkt.

Wenn Sie während der SQL-Validierung eine Verlangsamung Ihrer Looker-Instanz feststellen, können Sie diesen Wert verringern.

Inkrementelle Validierung

Bei der inkrementellen Validierung werden Fehler entdeckt, die nur in einem bestimmten Entwicklungszweig vorhanden sind und noch nicht in die Produktionsumgebung übernommen wurden. Mit der inkrementellen Validierung können Entwickler die Fehler finden und beheben, für die sie verantwortlich sind, ohne von vorhandenen Fehlern im Projekt abgelenkt zu werden. Außerdem kann die Validierung dadurch schneller erfolgen, insbesondere bei LookML-Projekten, die viele Explores enthalten.

Bei der inkrementellen Validierung führt der SQL-Validator nur die Explore-Abfragen aus, die sich zwischen einer Entwicklungsversion (der Basisreferenz) und der Produktionsversion (der Zielreferenz) geändert haben. Der SQL-Validator gibt nur die Fehler zurück, die nur in der Entwicklungsversion vorhanden sind, auch wenn die Produktionsversion selbst Fehler enthält.

In den Validator-Ergebnissen werden alle Explores aufgeführt, die übersprungen wurden, weil sich ihr kompilierter SQL-Code im zu validierenden Zweig oder Commit nicht geändert hat. Ein Beispiel für Ergebnisse der inkrementellen Validierung finden Sie unter Ergebnisse für die inkrementelle Validierung ansehen.

Sie können die inkrementelle Validierung für den SQL-Validator aktivieren, indem Sie beim Erstellen oder Bearbeiten einer Continuous Integration-Suite im Abschnitt SQL-Validator das Kästchen Nur inkrementelle Fehler anklicken.

Beachten Sie bei der inkrementellen Validierung Folgendes:

  • Die Einstellung für die inkrementelle Validierung gilt nicht für die Validierung des Produktionszweigs selbst, etwa bei manuellen Ausführungen im Produktionszweig. Beim Validieren des Produktionszweigs führt der SQL-Validator eine vollständige Validierung aus.
  • Der Fail-Fast-Modus wird für inkrementelle Validierungsläufe nicht unterstützt, da einzelne Dimensionsabfragen erforderlich sind, um die inkrementellen Fehler aufzudecken, die für einen Entwicklungszweig des Projekts spezifisch sind.