Filtervorschläge sind ein leistungsstarkes Tool in Looker. Es ist wichtig zu wissen, woher sie stammen und wie sie funktionieren, damit Sie effektive Fehlerbehebungen vornehmen können, wenn sich Filtervorschläge nicht wie erwartet verhalten. Auf dieser Seite erfahren Sie, wie Filtervorschläge funktionieren, warum sie möglicherweise falsch sind und warum sie möglicherweise nicht angezeigt werden.
Wie funktionieren Filtervorschläge?
Filtervorschläge sparen Zeit, wenn Nutzer Werte in Filter eingeben, und sorgen dafür, dass Nutzer Optionen auswählen, die in den Daten vorhanden sind. Wenn Nutzer ein Filterfeld auswählen, 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 explorativen Analysetool Bestellungen ein Drop-down-Menü mit den Optionen „Storniert“, „Abgeschlossen“ und „Ausstehend“ angezeigt.
Woher stammen diese Vorschläge?
Looker führt eine SELECT distinct <field>
-Abfrage in der 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 den Filtervorschlägen an.
Kann ich ändern, welche Vorschläge angezeigt werden?
Entwickler können verschiedene LookML-Parameter verwenden, um die angezeigten Vorschläge zu ändern und anzupassen. Weitere Informationen finden Sie auf der Seite 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 von einer Explore-Seite gelöscht werden kann. Wenn Sie den Cache für Vorschläge leeren möchten, haben Sie folgende Möglichkeiten:
- Wenn das Explore mit einer Datengruppe mit einer
sql_trigger
im Cache gespeichert ist, können Sie den Cache für die gesamte Datengruppe manuell zurücksetzen. Dazu müssen Sie im Looker-Steuerfeld Verwaltung die Seite Datengruppen aufrufen. Dadurch wird jedoch der Cache für alle Abfragen aktualisiert, die mit dieser Datengruppe gespeichert sind. - 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 global für alle Nutzer. Wenn ein Nutzer den Cache für Vorschläge aktualisiert, wirkt sich das auf die Ergebnisse aus, die andere Nutzer sehen.
Warum sind die Filtervorschläge falsch?
Nachdem Sie nun wissen, wie Filtervorschläge erstellt werden, können Sie herausfinden, warum Filtervorschläge möglicherweise falsch sind. Die häufigste Erklärung ist, dass sich die Daten zwischen dem Caching der Filtervorschläge 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 ist etwa eine halbe Stunde später abgeschlossen. Anschließend ruft Nutzer B dasselbe Explore auf, das Nutzer A zuvor ausgeführt hat. Nutzer B fragt sich, warum die Filtervorschläge falsch sind. Der Grund für die Abweichung ist, dass die im Cache gespeicherte Vorschlagsanfrage nicht mit dem neu abgeschlossenen ETL-Prozess der Datenbank aktualisiert wurde und daher unerwartete Ergebnisse angezeigt wurden.
In diesem Fall können Sie den Vorschlagscache mithilfe der Methoden aktualisieren, die im Abschnitt Werden Vorschläge im Cache gespeichert? weiter oben auf dieser Seite beschrieben wurden.
Warum werden keine Filtervorschläge angezeigt?
Es kann verschiedene Gründe dafür geben, dass keine Filtervorschläge angezeigt werden. Die folgenden Schritte zur Fehlerbehebung zeigen mögliche Ursachen auf:
- Prüfen Sie den Filtertyp.
- Prüfen Sie, ob Vorschläge durch
access_filter
odersql_always_where
eingeschränkt werden. - Prüfen Sie, ob ein
suggest_dimension parameter
vorhanden ist. - Prüfen Sie, ob versucht wird, Vorschläge zu laden, wenn ein Nutzer Text im Filter auswählt oder eingibt.
- Prüfen Sie die Chrome-Netzwerkkonsole.
- Nachweis für die Suchanfrage finden, die Looker ausführen möchte
Filtertyp prüfen
Wenn es sich um einen Filter für ein LookML-Dashboard handelt, muss der Filtertyp Feld sein. Bei anderen Filtertypen werden keine Vorschläge angezeigt.
-
Das Filterfeld muss in der LookML-Definition den Typ
type: string
haben. Bei Filtern für Felder vom Typnumber
werden keine Vorschläge angezeigt. - Ist es ein Filter für Übereinstimmungen (erweitert)? Für Filter vom Typ „Übereinstimmung (erweitert)“ sind Looker-Ausdrücke erforderlich. Vorschläge werden daher nicht angezeigt.
Prüfen, ob Vorschläge durch access_filter
oder sql_always_where
eingeschränkt werden
Wenn sql_always_where
oder access_filter
verwendet wird, sind Filtervorschläge für diese explorative Datenanalyse in der Regel eingeschränkt. So wird verhindert, dass Nutzer einen Filtervorschlag sehen, auf den sie keinen Zugriff haben. Wenn Sie sicher sind, dass in einem bestimmten Dimensions- oder Filter-Feld keine Werte möglich sind, die vertrauliche Informationen offenlegen würden, können Sie Filtervorschläge mit bypass_suggest_restrictions
wieder aktivieren.
Prüfen, ob ein suggest_dimension parameter
vorhanden ist
Wenn der Parameter suggest_dimension
verwendet wird, werden die Filtervorschläge nur dann angezeigt, wenn in einem Explore auf die vorgeschlagene Dimension verwiesen wird und die Ansicht dieser Dimension als Basis des Explores definiert ist.
Fügen Sie für Explores, in denen die Ansicht der vorgeschlagenen Dimension nicht die Basisansicht ist, den Parameter suggest_explore
hinzu und verweisen Sie auf das Explore, in dem diese Ansicht die Basisansicht ist.
Prüfen Sie, ob versucht wird, Vorschläge zu laden, wenn Sie Text im Filter auswählen oder eingeben.
Prüfen Sie, ob Looker versucht, Vorschläge zu laden, wenn Sie Text im Filterfeld auswählen oder eingeben. In Looker sollte rechts im Filterfeld ein rotierendes Ladesymbol angezeigt werden.
Ist das nicht der Fall, versucht Looker nicht, Vorschläge zu erstellen. Prüfen Sie, ob die im ersten Schritt beschriebenen Bedingungen erfüllt sind und ob Vorschläge in LookML auf Ebene field
, view
oder Explore (mit sql_always_where
oder access_filter
) nicht deaktiviert sind. Hinweis: Bei Hadoop-Dialekten wird suggestions: no
standardmäßig allen Ansichtsdateien hinzugefügt.
Wenn versucht wird, Vorschläge zu laden, fahren Sie mit der Anleitung zur Prüfung der Chrome-Netzwerkkonsole fort.
Chrome-Netzwerkkonsole prüfen
In der Chrome-Netzwerkkonsole wird möglicherweise ein Fehler bei der Abfrage selbst angezeigt oder es wird angezeigt, ob Ergebnisse aus dem Cache zurückgegeben werden.
- Öffnen Sie den Tab „Netzwerk“ in Ihrem Browser mit der Tastenkombination Strg + Umschalttaste + J (Windows) oder Befehlstaste + Wahltaste + J (Mac) oder wählen Sie oben im Browser in der Chrome-Optionsleiste Ansicht > Entwickeln > Entwicklertools aus.
- Wählen Sie im Filterfeld Ihres Looks, Explores oder Dashboards eine Option aus.
- Im Bereich „Entwicklertools“ sollte eine Anfrage für die Filtervorschläge angezeigt werden, die Sie auswählen können, um weitere Informationen zu erhalten.
- Die Header enthalten die interne API-Anfrage, die Looker zum Abrufen der Vorschlagswerte sendet. Angenommen, Looker sendet die folgende API-Anfrage, wobei
<yourinstance>
die URL Ihrer Instanz ist:<yourinstance>/api/internal/models/the_look/views/order_items/fields/users.state/suggestions?term=
- Prüfen Sie in der API-Anfrage, ob das nach
/models/
aufgeführte Modell vorhanden ist. In diesem Beispiel heißt das Modellthe_look
. - In der URL steht zwar
/views/
, dies bezieht sich jedoch auf das Explore, aus dem das Feld stammt. Prüfen Sie, ob das explorative Datenanalysetool, das nach/views/
aufgeführt ist, vorhanden ist. In diesem Beispiel heißt das Exploreorder_items
. - Prüfen Sie, ob das Feld nach
/fields/
vorhanden ist. In diesem Beispiel ist das Feldusers.state
.
Die genaue Fehlermeldung wird in der Antwort auf diese API-Anfrage angezeigt. Angenommen, der Statuscode für die Vorschläge lautet 404 – Nicht gefunden:
Wählen Sie die Antwort auf diese Anfrage aus, um weitere Details zu sehen.
In diesem Fall sehen Sie, dass die Vorschläge fehlschlagen, weil das Feld anhand der Antwort auf die Anfrage nicht gefunden werden kann:
{"class":"FieldNotFound","text":"Field not found."}
Wenn keine Fehler auftreten, aber auch keine Vorschläge angezeigt werden, prüfen Sie, ob die Vorschlagsanfrage aus dem Cache (cache: true
in der Network Console) abgerufen wird. In diesem Fall muss der Cache möglicherweise mit einem suggest_persist_for
-Parameter für die Dimension gelöscht werden, für die Vorschläge angezeigt werden.
Nachweis für die Suchanfrage finden, die Looker ausführen möchte
Prüfen Sie auf der Seite Abfragen im Looker-Steuerfeld Verwaltung, ob die Abfrage, die den Filter generiert (das Feld Quelle auf der Seite Abfragen enthält den Text Filtervorschlag), keinen Fehler generiert. Klicken Sie auf die Schaltfläche Details der Abfrage und wählen Sie die Option In SQL-Runner öffnen aus. Prüfen Sie, ob die SQL-Syntax korrekt ist. Wenn Sie Anomalien wie fehlende Feldnamen oder fehlerhafte Sonderzeichen bemerken, prüfen Sie, ob Sie keine Liquid-Parameter oder vordefinierten Filter verwenden.
- Wenn für die Ausführung der Abfrage eine Eingabe für einen Filter mit Vorlage erforderlich ist, werden keine Filtervorschläge angezeigt.
- Wenn in der Abfrage ein Parameter mit einem
default_value
verwendet wird, wird dieser Wert in die Abfrage für Filtervorschläge eingefügt. In diesem Szenario wird die Abfrage für Filtervorschläge nicht dynamisch anhand der Nutzereingabe aktualisiert. Je nach Standardwert werden dann entweder keine oder falsche Filtervorschläge angezeigt. Verwenden Sie stattdessen verknüpfte Filter in einem Dashboard.