Häufige Probleme mit Filtervorschlägen beheben

Filtervorschläge sind ein leistungsstarkes Tool in Looker. Es ist wichtig zu verstehen, woher sie kommen und wie sie funktionieren, damit Sie Probleme effektiv beheben können, wenn Filtervorschläge nicht wie erwartet funktionieren. Auf dieser Seite wird erläutert, wie Filtervorschläge funktionieren, warum sie falsch sind und warum sie möglicherweise nicht übernommen werden.

Wie funktionieren Filtervorschläge?

Mit Filtervorschlägen sparen Sie Zeit, wenn Nutzer Werte in Filter eingeben, und stellen sicher, dass sie Optionen auswählen, die in den Daten vorhanden sind. Wenn der Nutzer ein Filterfeld auswählt, wird unter dem Feld eine Liste mit Vorschlägen angezeigt. In diesem Beispiel wird durch Auswahl des Kästchens für einen Filter im Feld Status im Explore Orders (Bestellungen) eine Drop-down-Liste mit den Optionen „cancelled“, „complete“ und „pending“ angezeigt.

Woher stammt diese Liste mit Vorschlägen?

Looker führt eine SELECT distinct <field>-Abfrage für die Datenbank aus, um alle möglichen Optionen für dieses Feld abzurufen. Die Abfrage sieht in etwa so aus:

SELECT DISTINCT <field_name>
FROM <table>
WHERE (<field_name> LIKE '%' OR <field_name> LIKE '% %')
GROUP BY 1
ORDER BY 1
LIMIT 1000

Wenn Nutzer Zeichen in das Filterfeld eingeben, ersetzt Looker die entsprechenden Bedingungen in der WHERE-Klausel, um die Ergebnisse zu filtern. Looker zeigt dann die ersten 100 dieser Ergebnisse in Filtervorschlägen an.

Kann ich ändern, welche Vorschläge übernommen werden?

Entwickler können verschiedene LookML-Parameter verwenden, um die angezeigten Vorschläge zu ändern und anzupassen. Weitere Informationen finden Sie in der Dokumentation Filtervorschläge ändern.

Werden Vorschläge im Cache gespeichert?

Standardmäßig speichert Looker Abfrageergebnisse eine Stunde lang im Cache. Mit dem LookML-Parameter suggest_persist_for können Sie die Cache-Länge für Filtervorschläge anpassen. Der Parameter suggest_persist_for hat den Standardwert „6 Stunden“. Vorschläge haben einen eigenen Cache, der nicht manuell über eine Explore-Seite geleert werden kann. Wenn Sie den Cache für Vorschläge leeren müssen, haben Sie folgende Möglichkeiten:

  • Wenn das Explore mit einer Datengruppe mit einer sql_trigger im Cache gespeichert wird, können Sie im Looker-Admin-Bereich auf der Seite Datengruppen den Cache für die gesamte Datengruppe manuell zurücksetzen. Dadurch wird der Cache jedoch für alle Abfragen aktualisiert, die mit dieser Datengruppe beibehalten werden.
  • Sie können den Parameter suggest_persist_for auf Feldebene verwenden und auf „0 Sekunden“ festlegen, um den Cache für Filtervorschläge für dieses Feld zu leeren.
    Der Cache ist für alle Nutzer global. Wenn ein Nutzer den Cache für Vorschläge aktualisiert, wirkt sich das auf die Ergebnisse aus, die anderen Nutzern angezeigt werden.

Warum sind die Filtervorschläge falsch?

Nachdem Sie nun wissen, wie Filtervorschläge dargestellt werden, können Sie ermitteln, warum Filtervorschläge falsch sind. Die häufigste Erklärung ist, dass sich die Daten zwischen dem Zeitpunkt, an dem die Filtervorschläge im Cache gespeichert wurden, und dem Zeitpunkt, zu dem die falschen Ergebnisse festgestellt wurden, geändert oder aktualisiert haben.

Angenommen, Nutzer A führt morgens als Erstes ein Explore aus. Nutzer A wählt einige Filterwerte aus der Drop-down-Liste mit Vorschlägen aus. Der ETL-Prozess der Datenbank endet etwa eine halbe Stunde später. Nutzer B ruft dann dasselbe Explore auf, das Nutzer A zuvor ausgeführt hat. Nutzer B fragt sich, warum die Filtervorschläge falsch sind. Der Grund für diese Abweichung besteht darin, dass die im Cache gespeicherte Vorschlagsabfrage nicht mit dem neu abgeschlossenen ETL-Prozess der Datenbank aktualisiert wurde und daher unerwartete Ergebnisse zurückgegeben wurden.

In diesem Fall können Sie den Vorschlags-Cache mithilfe der Methoden aktualisieren, die weiter oben auf dieser Seite im Abschnitt Werden Vorschläge im Cache gespeichert? beschrieben.

Warum werden Filtervorschläge nicht dargestellt?

Es gibt verschiedene Gründe, warum keine Filtervorschläge angezeigt werden. Die folgenden Schritte zur Fehlerbehebung weisen auf mögliche Ursachen hin:

  1. Prüfen Sie den Filtertyp.
  2. Prüfen Sie, ob Vorschläge vom Typ access_filter oder sql_always_where eingeschränkt sind.
  3. Prüfen Sie, ob suggest_dimension parameter vorhanden ist.
  4. Prüfen Sie, ob versucht wird, Vorschläge zu laden, wenn ein Nutzer Text auswählt oder in den Filter eingibt.
  5. Sehen Sie in der Chrome-Netzwerkkonsole nach.
  6. Finden Sie Belege für die Vorschlagsabfrage, die Looker auszuführen versucht.

Filtertyp prüfen

Bei einem LookML-Dashboard-Filter muss der Filtertyp Field sein. Für andere Filtertypen werden keine Vorschläge übernommen.

  • Achten Sie darauf, dass das Filterfeld in seiner LookML-Definition type: string enthält. Mit Filtern für Felder des Typs number werden keine Vorschläge übernommen.
  • Handelt es sich um den Filter Übereinstimmungen (erweitert)? Für Filter (erweitert) sind Looker-Ausdrücke erforderlich. Daher werden keine Vorschläge dargestellt.

Prüfen Sie, ob es einen einschränkenden Vorschlag (access_filter oder sql_always_where) gibt

Wenn sql_always_where oder access_filter verwendet wird, sind Filtervorschläge in der Regel für diesen Explore eingeschränkt. Dadurch wird verhindert, dass Nutzer einen Filtervorschlag sehen, auf den sie nicht zugreifen können. Wenn Sie sicher sind, dass in einem bestimmten Dimensions- oder Filterfeld keine Werte für vertrauliche Informationen vorhanden sind, können Sie mit bypass_suggest_restrictions Filtervorschläge wieder aktivieren.

Prüfe, ob suggest_dimension parameter vorhanden ist.

Bei Verwendung des Parameters suggest_dimension werden die Filtervorschläge nur dann dargestellt, wenn auf die vorgeschlagene Dimension in einem Explore verwiesen wird, bei dem die Ansicht dieser Dimension als Basisansicht des Explores definiert ist.

Für Explores, bei denen die Ansicht der vorgeschlagenen Dimension nicht die Basisansicht ist, fügen Sie den Parameter suggest_explore hinzu. Er verweist auf das Explore, bei dem diese Ansicht die Basisansicht ist.

Prüfen, ob versucht wird, Vorschläge zu laden, wenn Sie Text auswählen oder im Filter eingeben

Prüfen Sie, ob Looker versucht zu versuchen, Vorschläge zu laden, wenn Sie Text auswählen oder in das Filterfeld eingeben. Looker sollte rechts neben dem Filterfeld einen sich drehenden Ladekreis anzeigen.

Wenn nicht, versucht Looker nicht, Vorschläge auszufüllen. Prüfen Sie, ob die im ersten Schritt beschriebenen Bedingungen erfüllt sind und Vorschläge auf der Ebene field, view oder Explore (mit sql_always_where oder access_filter) in LookML nicht deaktiviert sind. Beachten Sie, dass Hadoop-Dialekte standardmäßig suggestions: no zu allen Ansichtsdateien hinzufügen.

Wenn Sie versuchen, Vorschläge zu laden, folgen Sie der Anleitung zum Überprüfen der Chrome-Netzwerkkonsole.

Chrome-Netzwerkkonsole prüfen

Die Chrome-Netzwerkkonsole hebt möglicherweise einen Fehler in der Abfrage selbst hervor oder zeigt an, ob Ergebnisse aus dem Cache zurückgegeben werden.

  1. Öffnen Sie im Browser den Tab „Network“ mit der Tastenkombination Strg + Umschalttaste + J (Windows) bzw. Befehlstaste + Wahltaste + J (auf einem Mac) oder indem Sie in der Chrome-Optionsleiste oben im Browser Ansicht > Entwickeln > Entwicklertools auswählen.
  2. Wählen Sie das Filterfeld im Look, Explore oder Dashboard aus.
  3. Im Bereich der Entwicklertools sollte eine Anfrage für die Filtervorschläge angezeigt werden, über die Sie weitere Informationen aufrufen können.
  4. Die Header zeigen die interne API-Anfrage an, die Looker zum Abrufen der Vorschlagswerte sendet. Angenommen, Looker stellt in diesem Beispiel die folgende API-Anfrage, wobei <yourinstance> die URL für Ihre Instanz darstellt:

    <yourinstance>/api/internal/models/the_look/views/order_items/fields/users.state/suggestions?term=
  5. Prüfen Sie in der API-Anfrage, ob das nach /models/ aufgeführte Modell existiert. In diesem Beispiel heißt das Modell the_look.
  6. Die URL lautet zwar /views/, dies bezieht sich aber auf das Explore, aus dem das Feld stammt. Prüfen Sie, ob das nach /views/ aufgeführte Explore existiert. In diesem Beispiel heißt das Explore order_items.
  7. Prüfen Sie, ob das nach /fields/ aufgeführte Feld vorhanden ist. In diesem Beispiel lautet das Feld users.state.

In der Antwort auf diese API-Anfrage wird die genaue Fehlermeldung angezeigt. Der Statuscode für die Vorschläge lautet beispielsweise 404 Not Found:

Wählen Sie die Antwort für diese Anfrage aus, um weitere Informationen zu erhalten.

In diesem Fall können Sie sehen, dass die Vorschläge fehlschlagen, weil das Feld basierend auf der Antwort auf die Anfrage nicht gefunden wurde:

{"class":"FieldNotFound","text":"Field not found."}

Wenn keine Fehler, aber erwartungsgemäß auch keine Vorschläge vorliegen, prüfen Sie, ob die Vorschlagsabfrage aus dem Cache abgerufen wird (cache: true in der Netzwerkkonsole). Dies kann darauf hindeuten, dass der Cache mithilfe eines suggest_persist_for-Parameters für die Dimension, die Vorschläge bereitstellt, bereinigt werden muss.

Beweise für die Vorschlagsabfrage finden, die Looker auszuführen versucht

Auf der Seite Abfragen im Looker-Bereich Verwaltung können Sie prüfen, ob die Abfrage, mit der der Filter generiert wird, einen Fehler generiert. Im Feld Quelle auf der Seite Abfragen steht Filtervorschlag. Klicken Sie auf die Schaltfläche Details der Abfrage und wählen Sie die Option Open in SQL Runner (In SQL-Runner öffnen) aus. Überprüfen Sie, ob der SQL-Code syntaktisch korrekt ist. Wenn Sie Anomalien wie fehlende Feldnamen oder Sonderzeichen feststellen, stellen Sie sicher, dass Sie keine Liquid-Parameter oder Filtervorlagen verwenden.

  • Wenn für die Abfrage eine Eingabe mit Filtervorlage erforderlich ist, werden keine Filtervorschläge dargestellt.
  • Wenn in der Abfrage ein Parameter mit einem default_value verwendet wird, wird dieser Wert in die Abfrage mit Filtervorschlägen eingefügt. In diesem Szenario wird die Abfrage für den Filtervorschlag nicht auf der Grundlage der Nutzereingabe dynamisch aktualisiert. Je nach Standardwert kann dies entweder zu keinen oder zu falschen Filtervorschlägen führen. Stattdessen sollten Sie verknüpfte Filter in einem Dashboard verwenden.