Abfrageergebnisse in Dashboards und Arbeitsblättern filtern¶
Sie können Ihre Abfrageergebnisse in Dashboards und SQL-Arbeitsblättern mithilfe von Systemfiltern filtern, die allen Rollen in Snowflake zur Verfügung stehen, oder mit kundenspezifischen Filtern, die von Administratoren erstellt wurden.
Kundenspezifische Filter erstellen¶
Mit kundenspezifischen Filtern können Sie die Ergebnisse einer Abfrage ändern, ohne die Abfrage direkt bearbeiten zu müssen.
Filter sind als spezielle Schlüsselwörter implementiert, die als Unterabfrage oder Liste von Werten aufgelöst werden und dann bei der Ausführung einer Abfrage verwendet werden. Daher gibt es bei der Verwendung eines Filters in einer SQL-Abfrage einige Einschränkungen. Siehe Filter in einer SQL-Abfrage angeben.
Bemerkung
Jeder Benutzer in Ihrem Konto kann einen kundenspezifischen Filter anzeigen und verwenden, nachdem er erstellt wurde. Ein kundenspezifischer Filter hat eine zugehörige Rolle, aber diese Rolle schränkt die Sichtbarkeit des Filters nicht ein.
Berechtigung zum Erstellen kundenspezifischer Filter erteilen¶
Damit ein Benutzer kundenspezifische Filter erstellen kann, muss ein Benutzer mit der Rolle ACCOUNTADMIN die entsprechenden Berechtigungen einer Rolle zuweisen, die diesem Benutzer zugewiesen ist. Sie können nur Snowsight verwenden, wenn Sie Rollen die Berechtigung zum Erstellen kundenspezifischer Filter zuweisen möchten.
Wenn Sie einer Rolle die Berechtigung zum Erstellen kundenspezifischer Filter in Ihrem Konto zuweisen möchten, gehen Sie wie folgt vor:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen und ein Arbeitsblatt zu öffnen, oder wählen Sie Projects » Dashboards aus, um die Liste der Dashboards zu öffnen und ein Dashboard zu öffnen.
Wählen Sie
aus, und wählen Sie, wenn Sie sich in einem Arbeitsblatt befinden, Manage Filters aus.
Wählen Sie im angezeigten Dialogfeld Edit Permission aus.
Wählen Sie im Dialogfeld Filter Permissions die Rollen aus, denen Sie die Berechtigung zum Erstellen von Filtern zuweisen möchten.
Wählen Sie Save aus.
Kundenspezifischen Filter erstellen¶
Sie müssen Snowsight verwenden, um einen Filter zu erstellen, und Sie müssen eine Rolle mit Berechtigungen zum Erstellen kundenspezifischer Filter verwenden.
Um einen kundenspezifischen Filter zu erstellen, gehen Sie wie folgt vor:
Melden Sie sich bei Snowsight an.
Wählen Sie Projects » Worksheets aus, um die Liste der Arbeitsblätter zu öffnen und ein Arbeitsblatt zu öffnen, oder wählen Sie Projects » Dashboards aus, um die Liste der Dashboards zu öffnen und ein Dashboard zu öffnen.
Wählen Sie
aus, und wählen Sie, wenn Sie sich in einem Arbeitsblatt befinden, Manage Filters aus.
Wählen Sie im Dialogfeld Filters die Option + Filter aus.
Um einen Filter hinzuzufügen, gehen Sie wie folgt vor:
Geben Sie unter Display Name einen Namen für den Filter ein. Dieser Name wird für den Filter angezeigt, wenn Sie den Filter in einem Arbeitsblatt oder Dashboard auswählen.
Geben Sie unter SQL Keyword ein eindeutiges Schlüsselwort für das Einfügen in Abfragen ein. Verwenden Sie das Format
:<Zeichenfolge>
ohne Leerzeichen. Beispiel::page_path
.Geben Sie unter Description eine Beschreibung des Filters ein.
Wählen Sie unter Role eine Rolle aus, die Sie mit dem Filter verknüpfen möchten, und führen Sie die Abfrage aus, die zum Auffüllen der Filterwerte verwendet wird, wenn der Filter auf einer Abfrage basiert. Nur Rollen mit der Berechtigung, kundenspezifische Filter zu erstellen, werden in der Dropdown-Liste angezeigt. Weitere Details dazu finden Sie unter Eigentümerschaft eines kundenspezifischen Filters verwalten.
Wählen Sie unter Warehouse ein Warehouse aus, das zum Aktualisieren der Filterwerte verwendet werden soll, wenn der Filter auf einer Abfrage basiert. Die Eigentümerrolle für den Filter muss die Berechtigung USAGE für das von Ihnen ausgewählte Warehouse haben. Wenn Sie Ihre Abfrage im Rahmen dieser Anleitung ausführen und validieren möchten, muss das Warehouse aktiv sein.
Wählen Sie unter Options via aus, ob die Filterwerte durch eine Abfrage oder eine Liste gefüllt werden sollen:
Wenn Sie Query und dann Write Query auswählen, finden Sie unter Abfrage zum Befüllen eines Filters schreiben Hinweise zum Schreiben einer Filterabfrage.
Wenn Sie List auswählen, gehen Sie wie folgt vor:
Wählen Sie Edit List aus.
Optional können Sie unter Name einen Namen für das Listenelement eingeben. Der Name wird in der Dropdown-Liste für den Filter angezeigt. Wenn Sie keinen Namen angeben, wird der Wert von Value verwendet.
Geben Sie unter Value den Wert des Spaltennamens ein, der im Filter verwendet werden soll.
Fahren Sie mit dem Hinzufügen von Name/Wert-Paaren fort, bis Ihre Liste vollständig ist, und wählen Sie dann Save aus.
Wählen Sie im Dialog Add Filter unter Value Type aus, ob es sich bei den Listenelementen um die Datentypen Text oder Number handelt.
Wenn Sie möchten, dass Benutzer mehrere Elemente in der Dropdown-Liste der Filteroptionen auswählen können, aktivieren Sie den Umschalter Multiple values can be selected.
Wenn Sie möchten, dass die Benutzer die Ergebnisse für alle Elemente in der Spalte sehen können, aktivieren Sie den Umschalter für Include an „All“ option, und wählen Sie dann aus, wie die Option All funktionieren soll:
Wählen Sie Any value aus, damit All im Filter bedeutet, dass die Spalte, für die der Filter gilt, einen beliebigen Wert in den Ergebnissen haben kann, unabhängig davon, ob der Wert in der Filterliste vorhanden ist oder nicht.
Wählen Sie Any value in list of options aus, damit All im Filter bedeutet, dass die Spalte, für die der Filter gilt, ein beliebiges Element in der Filterliste enthält.
Wenn Sie möchten, dass Benutzer Ergebnisse für Elemente sehen können, die nicht im Filter angegeben sind, aktivieren Sie den Umschalter Include an „Other“ option.
Wählen Sie Save aus.
Wählen Sie Done aus, um das Dialogfeld Filters zu schließen.
Abfrage zum Befüllen eines Filters schreiben¶
Um eine Liste von Filteroptionen über eine Abfrage zu füllen, muss Ihre Abfrage bestimmte Anforderungen erfüllen:
Muss die Spalten
name
undvalue
zurückgeben.Kann die optionale Spalte
description
zurückgeben.Kann andere Spalten zurückgeben, die jedoch nicht in der Dropdown-Filterliste angezeigt werden.
Ein Filter kann immer nur eine Abfrage gleichzeitig ausführen. Sie können nicht mehrere Abfragen ausführen, um die Liste der Filteroptionen zu erstellen, z. B. indem Sie eine Abfrage ausführen, um die Spalte name
zurückzugeben, und eine zweite Abfrage, um die Spalte value
zurückzugeben.
Bemerkung
Die Abfrage, die zum Befüllen einer Liste von Filteroptionen verwendet wird, wird als der Benutzer ausgeführt, der den Filter erstellt (oder zuletzt geändert) hat. Da jeder in Ihrem Konto einen kundenspezifischen Filter anzeigen und verwenden kann, nachdem er erstellt wurde, müssen Sie sicherstellen, dass die von Ihrer Abfrage erzeugte Liste der Filteroptionen keine geschützten oder sensiblen Daten enthält.
Nachdem Sie Ihre Abfrage geschrieben und im Dialogfeld New filter hinzugefügt haben, gehen Sie wie folgt vor, um die Einrichtung Ihres Abfragefilters abzuschließen:
Wählen Sie Done aus, um Ihre Filterabfrage zu speichern und zum Dialogfeld Add Filter zurückzukehren.
Ändern Sie optional die Standardaktualisierungsoption von Refresh hourly in Never refresh oder Refresh daily. Weitere Informationen und Hinweise zu den Optionen für die Filteraktualisierung finden Sie unter Aktualisierungshäufigkeit eines kundenspezifischen Filters verwalten.
Kehren Sie zu den Schritten zur Erstellung eines kundenspezifischen Filters zurück, um die Erstellung Ihres Filters abzuschließen. Siehe Kundenspezifischen Filter erstellen.
Kundenspezifische Filter in einem Konto überprüfen und verwalten¶
Um kundenspezifische Filter in Ihrem Konto zu überprüfen, öffnen Sie ein Arbeitsblatt oder ein Dashboard, und wählen Sie dann aus.
Um Änderungen an den Filtern vornehmen zu können, wie z. B. das Ändern der Aktualisierungshäufigkeit für die Abfrage, die zum Befüllen einer kundenspezifischen Filterliste verwendet wird, müssen Sie die Rolle ACCOUNTADMIN oder eine Rolle mit Berechtigungen zum Verwalten von Filtern haben. Siehe Aktualisierungshäufigkeit eines kundenspezifischen Filters verwalten.
Eigentümerschaft eines kundenspezifischen Filters verwalten¶
Jeder kundenspezifische Filter hat eine zugehörige Rolle. Jeder Benutzer mit dieser Rolle kann den Filter bearbeiten oder löschen. Benutzer mit der Rolle ACCOUNTADMIN können jeden Filter im Konto einsehen und bearbeiten.
Wenn die mit einem Filter verknüpfte Rolle gelöscht wird, erbt die Rolle, die die Filterrolle löscht, nicht die Eigentümerschaft an dem kundenspezifischen Filter. Stattdessen kann ein Benutzer mit der Rolle ACCOUNTADMIN den Filter bearbeiten und die mit dem Filter verbundene Rolle ändern.
Aktualisierungshäufigkeit eines kundenspezifischen Filters verwalten¶
Ein kundenspezifischer Filter, der durch eine SQL-Abfrage gefüllt wird, hat auch eine Aktualisierungshäufigkeit. Die Aktualisierungshäufigkeit kann stündlich, täglich oder nie sein.
Der Filter wird abhängig davon ausgeführt, wann er gespeichert wurde und wie lange es gedauert hat, die Abfrage auszuführen, die die Filteroptionen aktualisiert.
Wenn Sie beispielsweise einen Filter mit einer stündlichen Aktualisierungshäufigkeit um 10:07 Uhr speichern, wird die erste Abfrage zur Aktualisierung um oder nach 11:07 Uhr ausgeführt. Wenn sehr viele Filteraktualisierungsabfragen so geplant sind, dass sie zur gleichen Zeit ausgeführt werden, werden die Abfragen in eine Warteschlange gestellt, um die Anzahl der gleichzeitig ausgeführten Filteraktualisierungsabfragen zu begrenzen. Die nächste Filteraktualisierung basiert darauf, wann die letzte Aktualisierung abgeschlossen wurde. Wenn in diesem Beispiel die Aktualisierung der Abfrage um 11:07 Uhr 20 Minuten dauert, würde die nächste Aktualisierungsabfrage um oder nach 12:27 Uhr erfolgen.
Filteraktualisierungen werden als der Benutzer ausgeführt, der den Filter erstellt oder zuletzt geändert hat, und sind unter Query History als einer der Typen von Queries executed by user tasks sichtbar. Weitere Informationen zur Verwendung von Query History finden Sie unter Abfrageaktivität mit Abfrageverlauf überwachen.
Um festzustellen, welcher Filter für die Filterabfrageaktualisierung verantwortlich ist, müssen Sie die Filterliste öffnen und dann die einzelnen Filter öffnen, um die Details zu sehen.
Problembehandlung bei fehlgeschlagenen Filterabfrageaktualisierungen¶
Aktualisierungen der Filterabfrage können aus einem der folgenden Gründe fehlschlagen:
Der Benutzer, der den Filter erstellt oder zuletzt geändert hat, wurde in Snowflake gelöscht oder deaktiviert.
Der Benutzer ist inaktiv, weil er sich seit 3 Monaten nicht mehr angemeldet hat.
Es ist nicht möglich anzuzeigen, welche Benutzer einen bestimmten Filter erstellt oder zuletzt geändert haben. Wenn Sie Filter haben, deren Aktualisierung fehlschlägt, sehen Sie möglicherweise erfolgreiche Authentifizierungsversuche des Benutzers WORKSHEETS_APP_USER gefolgt von fehlgeschlagenen Authentifizierungsversuchen eines Benutzers in der Ansicht Ansicht LOGIN_HISTORY des Schemas ACCOUNT_USAGE in der freigegebenen SNOWFLAKE-Datenbank.
Sie können zum Beispiel die folgende Abfrage verwenden, um Anmeldeaktivitäten zu identifizieren, die ein OAuth-Zugriffstoken aus den letzten zwei Tagen verwenden:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE
FIRST_AUTHENTICATION_FACTOR = 'OAUTH_ACCESS_TOKEN'
AND
REPORTED_CLIENT_TYPE = 'SNOWFLAKE_UI'
AND
EVENT_TIMESTAMP > DATEADD('DAY', -2, CURRENT_DATE());
ORDER BY
EVENT_TIMESTAMP DESC;
Fehlgeschlagene Authentifizierungsversuche in Verbindung mit einer fehlgeschlagenen Abfrage-Aktualisierungshäufigkeit würden jeden Tag oder jede Stunde zur gleichen Zeit stattfinden, je nach Aktualisierungshäufigkeit des kundenspezifischen Filters.
Filter in einer SQL-Abfrage angeben¶
Sie können einen Systemfilter oder einen kundenspezifischen Filter in einer SQL-Abfrage verwenden. Sie können einen Filter nicht in einer gespeicherten Prozedur oder einer benutzerdefinierten Funktion (UDF) verwenden.
Um einen Filter zu einer SQL-Abfrage hinzuzufügen, verwenden Sie eines der folgenden Formate:
Geben Sie den Filter als Teil einer SELECT-Anweisung an, wie
SELECT :<filter_name>(<col_name>)
.Geben Sie den Filter mit einem Gleichheitszeichen als Vergleichsoperator an. Beispiel:
WHERE <col_name> = :<filter_name>
WHERE <:filter_name> = <col_name>
<value_a>:<value_b>::string = <:filter_name>
Sie können nur ein Gleichheitszeichen als Komparator für einen Filter verwenden und können daher keinen Filter mit LIKE oder CONTAINS verwenden.
Die Spalte, auf die der Filter angewendet wird, muss auch dem vom Filter erwarteten Wertetyp entsprechen:
Damit ein Kundenspezifischer Filter den Wertetyp Text verwendet, muss die Spalte eine Textzeichenfolge sein oder in der Abfrage in einen Textzeichenfolge umgewandelt werden. Siehe Datentypen für Textzeichenfolgen.
Damit ein kundenspezifischer Filtersatz den Werttyp Zahl verwendet, muss die Spalte ein numerischer Datentyp sein. Siehe Numerische Datentypen.
Bei einem Systemfilter muss die Spalte vom Datentyp TIMESTAMP sein. Siehe Datentypen für Datum und Uhrzeit.
Wenn Sie Ihrer SQL-Abfrage einen Filter hinzufügen und dann die Dropdown-Liste verwenden, um eine Filteroption auszuwählen, wird die SQL-Syntax Ihrer Abfrage geändert. Die folgende Tabelle enthält Details darüber, wie die SQL-Syntax geändert wird, wenn verschiedene Optionen in der Liste ausgewählt werden:
Ausgewählte Filteroption |
Verwendete SQL |
---|---|
Listenelement |
|
Mehrere Listenelemente ausgewählt |
|
Alle, mit Any value angegeben |
|
Alle, mit Any value in list of options angegeben |
|
Andere |
|
Anwenden und Speichern von Filtern¶
Wenn Sie die in einem Filter ausgewählten Optionen ändern, wird die Option zur Übernahme Ihrer Änderungen angezeigt. Wenn Sie Apply wählen, wird das Arbeitsblatt oder das Dashboard ausgeführt, und es werden aktualisierte gefilterte Ergebnisse angezeigt, sodass Sie die Änderungen ohne Speichern überprüfen können.
Nachdem Sie Änderungen an einem Filter in einem Dashboard vorgenommen haben, wird die Option zum Speichern Ihrer Änderungen angezeigt. Wenn Sie Save wählen, werden die Änderungen, die Sie am Dashboard vorgenommen haben, gespeichert und sind für andere Benutzer des Dashboards verfügbar.
Sie könnten z. B. Apply auswählen wollen, um einen Filter zu ändern, weil Sie die Ergebnisse von All Time sehen möchten, aber Sie möchten nicht, dass das Dashboard beim nächsten Öffnen des Dashboards über eine so große Datenmenge ausgeführt wird, also wählen Sie nicht Save aus. Nachdem Sie Ihr Dashboard über die gesamte Zeit ausgeführt haben, ändern Sie den Datumsbereichsfilter auf Last 7 days, wählen Apply aus, um das Dashboard auszuführen, und wählen dann Save aus, um diesen Standard-Filterwert für Benutzer des Dashboards zu speichern.
Snowsight-Systemfilter¶
Die folgenden Systemfilter stehen allen Rollen zur Verfügung:
:daterange
Filtert eine Spalte nach einem Datumsbereich, z. B. Last day, Last 7 days, Last 28 days, Last 3 months, Last 6 months, Last 12 months, All time oder einem kundenspezifischen Datumsbereich.
Bemerkung
Der Datumsbereichsfilter verwendet immer die Zeitzone UTC und wird durch den Parameter TIMESTAMP_INPUT_FORMAT nicht beeinflusst.
Die Standardeinstellung ist Last day.
:datebucket
Gruppiert die Daten nach einem bestimmten Zeitraum, z. B. Second, Minute, Hour, Day, Week, Month, Quarter in Kalendermonaten oder Year.
Die Standardeinstellung ist Day.
Diese Filter können nicht bearbeitet oder gelöscht werden.
Beispiel: Verwenden von Datumsfiltern¶
Wenn Sie z. B. eine Tabelle mit Bestelldaten haben, wie die Tabelle ORDERS in der Datenbank SNOWFLAKE_SAMPLE_DATA und dem Schema TPCH_SF1, können Sie die Tabelle abfragen und die Ergebnisse nach einem bestimmten Bucket gruppieren, z. B. nach Tag oder Woche, und einen bestimmten Datumsbereich angeben, für den die Ergebnisse abgerufen werden sollen.
Dazu können Sie eine Abfrage wie die folgende schreiben:
SELECT
COUNT(O_ORDERDATE) as orders,
:datebucket(O_ORDERDATE) as bucket
FROM
SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
WHERE
O_ORDERDATE = :daterange
GROUP BY
:datebucket(O_ORDERDATE)
ORDER BY
bucket;
Weiteres Beispiel:
Ermitteln der Anzahl der Bestellungen und Abrufen von Details zum Bestelldatum aus der Tabelle ORDERS.
Filtern der Ergebnisse nach einem bestimmten Datumsbereich, indem der Systemfilter
:daterange
in die WHERE-Klausel aufgenommen wird.Gruppieren der Ergebnisse nach einem bestimmten Zeitraum, indem der Systemfilter
:datebucket
in die GROUP BY-Klausel aufgenommen wird.Sortieren der Ergebnisse vom frühesten zum spätesten Zeitraum, indem die ORDER BY-Klausel aufgenommen wird.
Wenn Sie Filter zu Ihrer Abfrage hinzufügen, werden oben in Ihrem Arbeitsblatt oder Dashboard die entsprechenden Schaltflächen angezeigt:

Um die Ergebnisse Ihrer Abfrage zu bearbeiten, verwenden Sie die Filter zur Auswahl der spezifischen Werte.
Setzen Sie in diesem Beispiel den Filter Group by, der dem Filter für den Datums-Bucket entspricht, auf die Gruppierung nach Day
. Setzen Sie den anderen Filter, der dem Datumsbereichsfilter entspricht, auf All time
.
Wenn Sie Apply auswählen und den Filter auf Ihre Ergebnisse anwenden, werden die Ergebnisse nach Tagen gruppiert, und die Ergebnisse werden ähnlich wie in der folgende Ausgabe angezeigt:
+--------+------------+
| orders | buckets |
+--------+------------+
| 621 | 1992-01-01 |
| 612 | 1992-01-02 |
| 598 | 1992-01-03 |
| 670 | 1992-01-04 |
+--------+------------+
Sie können einen anderen Datums-Bucket auswählen, um eine andere Gruppierung der Daten anzuzeigen. Um beispielsweise wöchentliche Auftragsdaten anzuzeigen, setzen Sie den Filter Group by auf Week
und wählen Apply aus. Es erscheinen Ergebnisse wie die folgende Ausgabe:
+--------+------------+
| orders | buckets |
+--------+------------+
| 3142 | 1991-12-30 |
| 4404 | 1992-01-06 |
| 4306 | 1992-01-13 |
| 4284 | 1992-01-20 |
+--------+------------+