Filtrer les résultats des requêtes dans les tableaux de bord et des feuilles de calcul¶
Vous pouvez filtrer les résultats de vos requêtes dans les tableaux de bord et les feuilles de calcul SQL à l’aide de filtres système, accessibles à tous les rôles dans Snowflake ou à l’aide de filtres personnalisés créés par les administrateurs.
Créer des filtres personnalisés¶
Les filtres personnalisés vous permettent de modifier les résultats d’une requête sans modifier directement la requête.
Les filtres sont mis en œuvre sous forme de mots-clés spéciaux qui se résolvent en une sous-requête ou une liste de valeurs, utilisées ensuite dans l’exécution de votre requête. Par conséquent, l’utilisation d’un filtre dans une requête SQL présente certaines limites. Voir Spécifiez un filtre dans une requête SQL.
Note
Tout le monde dans votre compte peut voir et utiliser un filtre personnalisé après sa création. Un filtre personnalisé est associé à un rôle, mais ce rôle ne limite pas la visibilité du filtre.
Accorder l’autorisation de créer des filtres personnalisés¶
Pour permettre à un utilisateur de créer des filtres personnalisés, un utilisateur ayant le rôle ACCOUNTADMIN doit accorder les autorisations correspondantes à un rôle accordé à cet utilisateur. Vous ne pouvez utiliser Snowsight que pour accorder aux rôles la possibilité de créer des filtres personnalisés.
Pour accorder à un rôle l’autorisation de créer des filtres personnalisés pour votre compte, procédez comme suit :
Connectez-vous à Snowsight.
Sélectionnez Projects » Worksheets pour ouvrir la liste des feuilles de calcul et ouvrir une feuille de calcul, ou sélectionnez Projects » Dashboards pour ouvrir la liste des tableaux de bord et ouvrir un tableau de bord.
Sélectionnez
et, si vous êtes dans une feuille de calcul, sélectionnez Manage Filters.
Dans la boîte de dialogue qui apparaît, sélectionnez Edit Permission.
Dans la boîte de dialogue Filter Permissions sélectionnez les rôles auxquels vous voulez accorder l’autorisation de créer des filtres.
Sélectionnez Save.
Créer un filtre personnalisé¶
Vous devez utiliser Snowsight pour créer un filtre et vous devez utiliser un rôle avec des autorisations pour créer des filtres personnalisés.
Pour créer un filtre personnalisé, procédez comme suit :
Connectez-vous à Snowsight.
Sélectionnez Projects » Worksheets pour ouvrir la liste des feuilles de calcul et ouvrir une feuille de calcul, ou sélectionnez Projects » Dashboards pour ouvrir la liste des tableaux de bord et ouvrir un tableau de bord.
Sélectionnez
et, si vous êtes dans une feuille de calcul, sélectionnez Manage Filters.
Dans la boîte de dialogue Filters qui apparaît, sélectionnez + Filter.
Pour ajouter un filtre, procédez comme suit :
Pour le Display Name, saisissez un nom pour le filtre. Ce nom apparaît sur le filtre lorsque vous le sélectionnez sur une feuille de calcul ou un tableau de bord.
Pour le SQL Keyword, saisissez un mot clé unique à insérer dans les requêtes. Utilisez le format
:<chaîne>
, sans espaces. Par exemple ::page_path
.Pour la Description, entrez une description du filtre.
Pour le Role, sélectionnez un rôle à associer au filtre et exécutez la requête utilisée pour remplir les valeurs du filtre, si le filtre est basé sur une requête. Seuls les rôles autorisés à créer des filtres personnalisés apparaissent dans la liste déroulante. Voir Gérer la propriété des filtres personnalisés pour plus de détails.
Pour Warehouse, sélectionnez un entrepôt à utiliser pour actualiser les valeurs du filtre, si le filtre est basé sur une requête. Le rôle propriétaire du filtre doit avoir le privilège USAGE sur l’entrepôt que vous sélectionnez. Si vous souhaitez exécuter et valider votre requête dans le cadre de ces étapes, l’entrepôt doit être en cours d’exécution.
Pour Options via, choisissez si les valeurs du filtre sont alimentées par une requête ou une liste :
Si vous sélectionnez Query, sélectionnez Write Query et consultez Écrire une requête pour remplir un filtre pour obtenir des conseils sur la rédaction d’une requête de filtrage.
Si vous sélectionnez List, procédez comme suit :
Sélectionnez Edit List.
En option, pour Name, saisissez un nom pour l’élément de liste. Le nom apparaît dans la liste déroulante du filtre. Si vous ne fournissez pas de nom, la Value est utilisée.
Pour la Value, saisissez la valeur du nom de la colonne à utiliser dans le filtre.
Continuez à ajouter des paires de noms et de valeurs jusqu’à ce que votre liste soit complète, puis sélectionnez Save.
Dans la boîte de dialogue Add Filter , pour Value Type, choisissez si les éléments de la liste sont des types de données Text ou Number.
Si vous souhaitez que les utilisateurs puissent sélectionner plusieurs éléments dans la liste déroulante des options de filtrage, activez le bouton bascule pour Multiple values can be selected.
Si vous souhaitez que les utilisateurs puissent voir les résultats de tous les éléments de la colonne, activez le bouton bascule Include an « All » option, puis sélectionnez le mode de fonctionnement de l’option All :
Sélectionnez Any value pour que le filtre All signifie que la colonne à laquelle le filtre s’applique peut avoir n’importe quelle valeur dans les résultats, que cette valeur existe ou non dans la liste des filtres.
Sélectionnez Any value in list of options pour que All dans le filtre signifie que la colonne à laquelle le filtre s’applique contient n’importe quel élément de la liste de filtres.
Si vous souhaitez que les utilisateurs puissent voir les résultats pour les éléments non spécifiés dans le filtre, activez le bouton bascule pour Include an « Other » option.
Sélectionnez Save.
Sélectionnez Done pour fermer la boîte de dialogue Filters.
Écrire une requête pour remplir un filtre¶
Pour remplir une liste d’options de filtre à partir d’une requête, votre requête doit respecter certaines règles :
Doit renvoyer les colonnes
name
etvalue
.Peut renvoyer la colonne facultative
description
.Peut renvoyer d’autres colonnes, mais celles-ci n’apparaissent pas dans la liste déroulante des filtres.
Un filtre ne peut exécuter qu’une seule requête à la fois. Vous ne pouvez pas exécuter plusieurs requêtes pour générer la liste des options de filtrage, par exemple en exécutant une requête pour obtenir la colonne name
et une seconde requête pour obtenir la colonne value
.
Note
La requête utilisée pour remplir une liste d’options de filtre est exécutée par l’utilisateur qui a créé (ou modifié en dernier lieu) le filtre. Étant donné que tout le monde dans votre compte peut voir et utiliser un filtre personnalisé après sa création, assurez-vous que la liste des options de filtre produite par votre requête ne contient pas de données protégées ou sensibles.
Après avoir écrit votre requête de filtrage et l’avoir ajoutée dans la boîte de dialogue New filter , procédez comme suit pour terminer la configuration de votre requête de filtrage :
Sélectionnez Done pour enregistrer votre requête de filtrage et revenir à la boîte de dialogue Add Filter.
Vous pouvez également remplacer l’option d’actualisation par défaut qui est de Refresh hourly par Never refresh ou Refresh daily. Pour plus de détails et de considérations sur les options d’actualisation des filtres, voir Gérer la fréquence d’actualisation d’un filtre personnalisé.
Revenez aux étapes de création d’un filtre personnalisé pour terminer la création de votre filtre. Voir Créer un filtre personnalisé.
Examiner et gérer les filtres personnalisés d’un compte¶
Pour consulter les filtres personnalisés dans votre compte, ouvrez une feuille de calcul ou un tableau de bord, puis sélectionnez .
Pour apporter des modifications à un filtre, par exemple modifier la fréquence d’actualisation de la requête utilisée pour alimenter une liste de filtres personnalisée, vous devez avoir le rôle ACCOUNTADMIN ou un rôle avec des autorisations de gestion des filtres. Voir Gérer la fréquence d’actualisation d’un filtre personnalisé.
Gérer la propriété des filtres personnalisés¶
Chaque filtre personnalisé est associé à un rôle. Toute personne ayant ce rôle peut modifier ou supprimer le filtre. Les utilisateurs ayant le rôle ACCOUNTADMIN peuvent voir et modifier tous les filtres du compte.
Si le rôle associé à un filtre est supprimé, le rôle qui supprime le rôle du filtre n’hérite pas de la propriété du filtre personnalisé. Au lieu de cela, un utilisateur ayant le rôle ACCOUNTADMIN peut modifier le filtre et changer le rôle associé au filtre.
Gérer la fréquence d’actualisation d’un filtre personnalisé¶
Un filtre personnalisé alimenté par une requête SQL a également une fréquence d’actualisation. La fréquence d’actualisation peut être horaire, quotidienne ou jamais.
Le filtre s’exécute en fonction de la date à laquelle il a été enregistré et du temps nécessaire à l’exécution de la requête qui actualise les options du filtre.
Par exemple, si vous enregistrez un filtre dont la fréquence d’actualisation des requêtes est définie sur 10:07 AM, la première requête d’actualisation est exécutée à 11:07 AM ou après. Si un grand nombre de requêtes d’actualisation de filtre sont planifiées pour être exécutées en même temps, les requêtes sont mises en file d’attente afin de limiter le nombre de requêtes d’actualisation de filtre exécutées en même temps. La prochaine actualisation du filtre est basée sur le moment où la dernière actualisation s’est achevée. Dans cet exemple, si l’actualisation de la requête à 11:07 AM prend 20 minutes, la prochaine requête d’actualisation sera exécutée à 12:27 PM ou après.
Les actualisations de filtres sont exécutées par l’utilisateur qui a créé ou modifié le filtre en dernier lieu et sont visibles dans l” Query History comme l’un des types de Queries executed by user tasks. Voir Surveillance de l’activité des requêtes avec l’historique des requêtes pour plus de détails sur l’utilisation de l” Query History.
Pour déterminer quel filtre est responsable de l’actualisation d’une requête, vous devez ouvrir la liste des filtres et ouvrir chaque filtre pour en voir les détails.
Dépannage des échecs d’actualisation des requêtes de filtrage¶
L’actualisation de la requête de filtrage peut échouer pour l’une des raisons suivantes :
L’utilisateur qui a créé ou modifié le filtre en dernier a été supprimé ou désactivé dans Snowflake.
L’utilisateur est inactif parce qu’il ne s’est pas connecté depuis 3 mois.
Il n’est pas possible de voir quels utilisateurs ont créé ou modifié en dernier un filtre donné. Si les filtres ne parviennent pas à s’actualiser, il se peut que des tentatives d’authentification réussies par l’utilisateur WORKSHEETS_APP_USER soient suivies de tentatives d’authentification échouées par un utilisateur dans la vue Vue LOGIN_HISTORY du schéma ACCOUNT_USAGE dans la base de données partagée SNOWFLAKE.
Par exemple, vous pouvez utiliser la requête suivante pour identifier les activités de connexion utilisant un jeton d’accès OAuth au cours des deux jours précédents :
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;
Les tentatives d’authentification échouées associées à une fréquence d’actualisation des requêtes échouées se produiraient à la même heure chaque jour ou chaque heure, en fonction de la fréquence d’actualisation du filtre personnalisé.
Spécifiez un filtre dans une requête SQL¶
Vous pouvez utiliser un filtre système <label-snowsight_filters_system_date> ou un filtre personnalisé dans une requête SQL. Vous ne pouvez pas utiliser de filtre dans une procédure stockée ou une fonction définie par l’utilisateur (UDF).
Pour ajouter un filtre à votre requête SQL, utilisez l’un des formats suivants :
Spécifiez le filtre dans le cadre d’une instruction SELECT, comme
SELECT :<filter_name>(<col_name>)
.Spécifiez le filtre en utilisant un signe égal comme comparateur. Par exemple :
WHERE <col_name> = :<filter_name>
WHERE <:filter_name> = <col_name>
<value_a>:<value_b>::string = <:filter_name>
Vous ne pouvez utiliser qu’un signe égal comme comparateur d’un filtre et, par conséquent, vous ne pouvez pas utiliser un filtre avec LIKE ou CONTAINS.
La colonne à laquelle s’applique le filtre doit également correspondre au type de valeur attendu par le filtre :
Pour qu’un ensemble de filtres personnalisés utilise une valeur de type texte, la colonne doit être une chaîne de texte ou être convertie en chaîne de texte dans la requête. Voir Types de données des chaînes de texte.
Pour qu’un ensemble de filtres personnalisés utilise un type de valeur numérique, la colonne doit être un type de données numérique. Voir Types de données numériques.
Pour un filtre système, la colonne doit être un type de données TIMESTAMP. Voir Types de données de date et heure.
Lorsque vous ajoutez un filtre à votre requête SQL et que vous utilisez ensuite la liste déroulante pour choisir une option de filtre, la syntaxe SQL de votre requête est modifiée. Pour plus de détails sur la modification de la syntaxe SQL lorsque différentes options de la liste sont sélectionnées, reportez-vous au tableau suivant :
Option de filtre sélectionnée |
SQL utilisé |
---|---|
Élément de liste |
|
Sélection de plusieurs éléments de la liste |
|
Tous, avec Any value spécifié |
|
Tous, avec Any value in list of options spécifié |
|
Autre |
|
Appliquer et enregistrer des filtres¶
Lorsque vous modifiez les options sélectionnées dans un filtre, l’option permettant d’appliquer vos modifications apparaît. Lorsque vous sélectionnez Apply, la feuille de calcul ou le tableau de bord s’exécute et les résultats filtrés mis à jour s’affichent, ce qui vous permet de vérifier les modifications sans les enregistrer.
Après avoir modifié un filtre dans un tableau de bord, vous avez la possibilité d’enregistrer vos modifications. Lorsque vous sélectionnez Save, les modifications que vous avez apportées au tableau de bord sont enregistrées et accessibles aux autres utilisateurs du tableau de bord.
Par exemple, vous pouvez sélectionner Apply pour modifier un filtre afin d’afficher les résultats de All Time, mais vous ne voulez pas que le tableau de bord affiche un volume de données aussi important la prochaine fois que quelqu’un l’ouvrira. Vous ne sélectionnez donc pas Save. Après avoir exécuté votre tableau de bord sur toute la durée, vous remplacez le filtre de plage de dates par Last 7 days, vous sélectionnez Apply pour exécuter le tableau de bord, puis Save pour enregistrer cette valeur de filtre par défaut pour les utilisateurs du tableau de bord.
Filtres du système Snowsight¶
Les filtres système suivants sont disponibles pour tous les rôles :
:daterange
Filtre une colonne sur une plage de dates, telle que Last day, Last 7 days, Last 28 days, Last 3 months, Last 6 months, Last 12 months, All time, ou une plage de dates personnalisée.
Note
Le filtre de plage de dates utilise toujours le fuseau horaire UTC et n’est pas affecté par le paramètre TIMESTAMP_INPUT_FORMAT.
La valeur par défaut est Last day.
:datebucket
Les groupes agrègent des données par période, par exemple Second, Minute, Hour, Day, Week, Month, Quarter en mois calendaires, ou Year.
La valeur par défaut est Day.
Ces filtres ne peuvent pas être modifiés ou supprimés.
Exemple : utilisation des filtres de date¶
Par exemple, si vous disposez d’une table contenant des données de commandes, telle que la table ORDERS dans la base de données SNOWFLAKE_SAMPLE_DATA et le schéma TPCH_SF1, vous pouvez interroger la table et regrouper les résultats par compartiment temporel spécifique, par exemple par jour ou par semaine, et spécifier un intervalle de dates spécifique pour lequel les résultats doivent être récupérés.
Pour ce faire, vous pouvez écrire une requête comme suit :
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;
Dans cet exemple, vous :
Comptez le nombre de commandes et récupérez les détails concernant la date de la commande dans la table ORDERS.
Filtrez vos résultats en fonction d’une plage de dates spécifique en incluant le filtre système
:daterange
dans votre clause WHERE.Regroupez vos résultats par période spécifique en incluant le filtre système
:datebucket
dans votre clause GROUP BY.Triez les résultats de la période la plus ancienne à la plus récente en incluant la clause ORDER BY.
Lorsque vous ajoutez des filtres à votre requête, des boutons de filtre correspondants apparaissent en haut de votre feuille de calcul ou de votre tableau de bord :

Pour manipuler les résultats de votre requête, utilisez les filtres pour sélectionner des valeurs spécifiques.
Pour cet exemple, définissez le filtre Group by, qui correspond au filtre du compartiment de date, de manière à ce qu’il soit groupé par Day
. Définissez l’autre filtre, qui correspond au filtre de plage de dates, sur All time
.
Lorsque vous sélectionnez Apply et que vous appliquez le filtre à vos résultats, les résultats sont regroupés par jour et des résultats comme ceux qui suivent apparaissent :
+--------+------------+
| orders | buckets |
+--------+------------+
| 621 | 1992-01-01 |
| 612 | 1992-01-02 |
| 598 | 1992-01-03 |
| 670 | 1992-01-04 |
+--------+------------+
Vous pouvez sélectionner un compartiment de date différent pour afficher un autre groupement de données. Par exemple, pour voir les données relatives aux commandes hebdomadaires, définissez le filtre Group by sur Week
et sélectionnez Apply. Des résultats comme ceux qui suivent apparaissent :
+--------+------------+
| orders | buckets |
+--------+------------+
| 3142 | 1991-12-30 |
| 4404 | 1992-01-06 |
| 4306 | 1992-01-13 |
| 4284 | 1992-01-20 |
+--------+------------+