Continuous Integration SQL Validator

Mit dem SQL-Validator für die kontinuierliche Integration (CI) wird geprüft, ob die Dimensionen in Ihren Explores korrekt in Ihrer 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 jedes 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 jeder explorativen Datenanalyse prüft, haben Sie folgende Möglichkeiten:

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

Auf der Seite mit den Ausführungsergebnissen zeigt der SQL-Validator jeden SQL-Fehler an, kategorisiert nach Dimension und Explore, mit einem Link zur problematischen LookML und einem Link zum Ausführen des Explores zur Fehlerbehebung:

Ergebnisseite der kontinuierlichen Integration mit Ergebnissen des SQL-Validators

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. Mit diesen Klauseln wird der Abfrageplaner in Ihrem Data Warehouse angewiesen, keine Daten zu verarbeiten, sondern die Gültigkeit der SQL-Anweisung zu prüfen.

In BigQuery ähnelt diese Art von Abfrage beispielsweise dem Ausführen einer Trichteranalyse. Bei BigQuery werden bei LIMIT 0-Abfragen keine Daten gescannt. Daher sollten Ihnen keine Kosten für die Abfragen in Rechnung gestellt werden, die der SQL-Validator ausführt.

Dimensionen von der SQL-Validierung ausschließen

Bestimmte Dimensionen sollten Sie von der SQL-Bestätigung ausschließen, z. B. Dimensionen, die von einem Parameter abhängen, da der Wert des Parameters während der Bestätigung null ist und immer zu einem SQL-Fehler führt.

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 in den Parameter tags der LookML-Definition der Dimension einfügen, wie im folgenden Beispiel gezeigt:

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

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

Optionen für den SQL-Validator

Sie können beim Erstellen oder Bearbeiten einer Continuous-Integration-Suite mehrere Optionen angeben, 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 Abfrage können Sie die Explores und Modelle angeben, die in die SQL-Validierung einbezogen werden sollen.

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

Wichtige Hinweise:

  • Geben Sie für model_name den Namen der Modelldatei ohne die Erweiterung .model.lkml an. 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 mehrere Explores in einer durch Kommas getrennten Liste angeben.
  • Sie können den Platzhalter * in model_name oder explore_name verwenden.

Hier sind einige Beispiele:

  • Wenn Sie nur die explorative Datenanalyse Nutzer angeben möchten, die in der Datei thelook.model.lkml mit explore: users 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 in Ihrem Projekt 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 explorative Datenanalysen 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 Abfrage angeben.

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 dann eine Explore-Abfrage für jede Dimension im Explore einzeln aus.

Für eine schnellere Validierung können Sie die Option Fail fast aktivieren. Dadurch führt der SQL-Validator nur die erste Abfrage für ein Explore aus, die alle Dimensionen gleichzeitig enthält. Wenn diese Abfrage einen Fehler zurückgibt, wird dieser Fehler vom SQL-Validator in den Ergebnissen der CI-Ausführung angezeigt und der Validator geht zum nächsten zu validierenden Explore über.

Wenn Fail Fast aktiviert ist, ist 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 enthalten. Das bedeutet, dass nach der Behebung 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. Diese Dimensionen werden bei der Validierung nicht in die Explore-Abfragen aufgenommen.

Nebenläufigkeit von Abfragen

Standardmäßig führt der SQL-Validator nicht mehr als zehn Abfragen gleichzeitig aus, um eine Überlastung Ihrer Looker-Instanz zu vermeiden. Mit dem Feld Abfrage-Nebenläufigkeit können Sie eine andere maximale Anzahl von Abfragen angeben, die der SQL-Validator gleichzeitig ausführen kann.

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

Wenn Sie eine Verlangsamung Ihrer Looker-Instanz bei der Ausführung der SQL-Validierung feststellen, können Sie diesen Wert verringern.

Inkrementelle Validierung

Die inkrementelle Validierung ist eine Methode, um Fehler zu finden, die nur für einen bestimmten Entwicklungszweig spezifisch sind, also Fehler, die noch nicht in der Produktion vorhanden sind. Mit der inkrementellen Validierung können Entwickler die Fehler, für die sie verantwortlich sind, finden und beheben, ohne von vorhandenen Fehlern im Projekt abgelenkt zu werden. Außerdem kann die Validierung so schneller erfolgen, insbesondere bei LookML-Projekten mit vielen Explores.

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

In den Ergebnissen des Validators gibt der SQL-Validator jedes Explore an, das übersprungen wurde, weil es im zu validierenden Branch oder Commit keine Änderungen am kompilierten SQL gab. Ein Beispiel für die Ergebnisse der inkrementellen Validierung finden Sie unter Ergebnisse der inkrementellen Validierung ansehen.

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

Beachten Sie für die inkrementelle Validierung Folgendes:

  • Die Einstellung für die inkrementelle Validierung gilt nicht, wenn der SQL-Validator den Produktionszweig selbst validiert, z. B. bei manuellen Ausführungen im Produktionszweig. Bei der Validierung des Produktionszweigs führt der SQL-Validator eine vollständige Validierung durch.
  • Der Modus Fail Fast (Schnell scheitern) wird für inkrementelle Validierungsläufe nicht unterstützt, da einzelne Dimensionsabfragen erforderlich sind, um die inkrementellen Fehler aufzuzeigen, die für einen Entwicklungszweig des Projekts spezifisch sind.