Filtrer des données dans un jeu de données

Modifié

Lors de la recherche dans des jeux de données avec du texte, il est possible d'effectuer des recherches plus avancées à l'aide du langage de requête. Vous trouverez ci-dessous les différents termes et méthodes que vous pouvez utiliser.

Exemples de recherches courantes

Le tableau ci-dessous vous donne des exemples des types de recherche les plus couramment utilisés.

Les enregistrements que vous recherchez

Syntaxe

Exemple

Ce que la recherche renvoie

Ceux contenant votre terme de recherche

terme

apricot

Les enregistrements contenant la chaîne "abricot"

Ceux contenant un terme de recherche spécifique dans un champ spécifique

id_field : terme

fruit:apple

Les enregistrements contenant la chaîne exactement et uniquement "apple" dans la colonne nommée "fruit"

Ceux contenant plusieurs valeurs à la fois

valeur1 AND valeur2

apple AND orange

Les enregistrements contenant à la fois "pomme" et "orange"

Ceux contenant au moins une des valeurs multiples

valeur1 OR valeur2

apple OR orange

Les enregistrements contenant "apple" ou "orange"

Ceux qui ne contiennent pas votre terme de recherche terme

NOT terme

NOT banana

Les enregistrements qui ne contiennent pas la chaîne "banana"

Ceux contenant un terme exact dans un champ spécifique

#exact( id_field ," terme ")

#exact(plant,"fruit tree")

Les enregistrements contenant la chaîne exacte "fruit tree" dans la colonne nommée "plant".

Ceux où les champs sont vides

#null( id_field )

#null(plant)

Les enregistrements qui n'ont pas de valeur dans la colonne nommée "usine"

Ceux contenant une valeur qui commence par une chaîne spécifiée, dans un champ spécifié

#startswith( id_field ," chaîne ")

#startswith(fruit,"ap")

Chaque enregistrement contenant une valeur qui commence par "ap" (pomme ou abricot, par exemple) dans la colonne nommée "fruit"

Ceux antérieurs à une certaine date

id_date_field <= AAAA / MM / JJ

timestamp<=2022/09

Les enregistrements pour lesquels la valeur du champ "timestamp" est égale ou antérieure à septembre 2022

Ceux d'un nombre spécifique de jours avant une date spécifiée

id_date_field >#now(days=- value )

timestamp>#now(days=-7)

Tous les enregistrements pour lesquels la valeur du champ "timestamp" est égale au jour courant moins 7 jours

Voir ci-dessous pour plus de détails sur la condition "now".

Ceux situés à l'intérieur d'une zone spécifique

Pour une zone circulaire :

#distance(" latitude , longitude ", distance en mètres )

Pour un polygone ou une surface carrée :

#polygon( geo_field ,"( lat1 , lon1 ),( lat2 , lon2 ),( lat3 , lon3 )")

#distance("48.866667,2.333333",1000)

#polygon(coordinates,"(40.17887331434696,-7.3828125),(52.05249047600099,-7.3828125),(52.05249047600099,16.171875),(40.17887331434696,16.171875),(40.17887331434696,-7.3828125)")

Tous les enregistrements situés à 1 km du centre de Paris

Chaque enregistrement situé à l'intérieur du polygone défini

Ceux contenant une valeur qui ressemblent au terme recherché

#search(id_field, "terme")

#search(title, "bok of secret")

Renvoie des valeurs d'après une recherche floue. Ici, par exemple, des valeurs similaires à "bok of secret" seront renvoyées, telles que "book of secrets"

Noter que les recherches utilisent uniquement les préfix et non les suffixes. C'est à dire que "cherche" renvoie tous les enregistrements commençant par la chaîne "cherch". Ainsi, "chercheur", "cherchant" seront renvoyé mais "recherche" ne le sera pas.

Langage de requête plus en détail

Le langage de requête Opendatasoft permet d'exprimer des conditions booléennes complexes comme contexte de filtrage.

Recherche en plein-texte

Le langage de requête accepte les requêtes en plein-texte.

Si un mot ou un composé donné est entouré de guillemets doubles, seules les correspondances exactes sont renvoyées (la recherche ignore les accents et les majuscules).

  • film renvoie des résultats qui contiennent film, films, filmographie...

  • "film" ne renvoie que ceux contenant exactement film.

Expressions booléennes

Le langage de requête prend en charge les opérateurs booléens suivants AND , OR et NOT .

Les parenthèses peuvent être utilisées pour regrouper des expressions et modifier le modèle de priorité par défaut :

  • NOT

  • AND

  • OR

Échantillons

  • film OR trees

  • (film OR trees) AND paris

Requêtes sur le terrain

L'une des principales caractéristiques du langage de requête est de permettre le filtrage par champ. Vous pouvez utiliser des noms de champ comme préfixe de vos requêtes pour filtrer les résultats en fonction de la valeur d'un champ spécifique.

La liste des champs disponibles correspond aux métadonnées disponibles pour ce jeu de données. L'administrateur de domaine peut définir un modèle de métadonnées plus riche, donnant ainsi accès à un ensemble plus riche de champs de filtrage. Mais par défaut, les champs suivants sont disponibles :

Nom de domaine

La description

éditeur

L'éditeur de jeux de données

Titre

Le titre du jeu de données

la description

La description du jeu de données

Licence

La licence de jeu de données

records_count

Le nombre d'enregistrements dans l'ensemble de données

modifié

La date de dernière modification du jeu de données

Langue

La langue du jeu de données (code iso)

thème

Le thème du jeu de données

mot-clé

Un mot-clé décrivant le jeu de données

références

Les références du jeu de données

N'oubliez pas : lors de la recherche d'enregistrements spécifiques dans un ensemble de données, la liste des champs disponibles dépend du schéma de l'ensemble de données. Pour récupérer la liste des champs disponibles pour un jeu de données donné, vous pouvez utiliser les API de jeu de données de recherche ou de jeu de données de recherche.

Plusieurs opérateurs peuvent être utilisés entre le nom du champ et la requête :

  • : , = , == : Renvoie les résultats dont le champ correspond exactement à la valeur donnée (à condition que les champs soient de type texte ou numérique)

  • > , < , >= , <= : Renvoie les résultats dont les valeurs de champ sont supérieures, inférieures, supérieures ou égales, inférieures ou égales à la valeur donnée (à condition que le champ soit de type date ou numérique).

  • [start_date TO end_date] : Interroge les enregistrements dont la date est comprise entre start_date et end_date .

Les formats de date peuvent être spécifiés dans différents formats : simple ( YYYY[[/mm]/dd] ) ou ISO 8601 ( YYYY-mm-DDTHH:MM:SS )

Exemples:

  • film_date >= 2002

  • film_date >= 2013/02/11

  • film_date: [1950 TO 2000]

  • film_box_office > 10000 AND film_date < 1965

Fonctions du langage de requête

Des fonctions avancées peuvent être utilisées dans le langage de requête. Les noms de fonction doivent être précédés d'un signe dièse ou d'un symbole dièse : # .

Nom de la fonction

La description

now

Renvoie la date actuelle. Cette fonction peut être appelée comme valeur de requête pour un champ. Lorsqu'elle est appelée sans argument, elle évaluera la date et l'heure actuelles : birthdate >= #now() renvoie tous les enregistrements contenant une date de naissance supérieure ou égale à la date et l'heure actuelles. Cette fonction peut également accepter des paramètres. Voir ci-dessous pour les paramètres disponibles de la fonction #now .

null

Cette fonction peut être appelée en spécifiant un nom de champ comme paramètre. Il renvoie les résultats pour lesquels aucune valeur n'est définie pour le champ spécifié. Par exemple #null(birthdate)

exact

Cette fonction permet de rechercher des enregistrements avec un champ correspondant exactement à une valeur donnée. Par exemple, #exact(firstname, "Marie") renverra des enregistrements avec un champ firstname contenant exactement "Marie" et rien d'autre.

attr

Cette fonction permet de rechercher des enregistrements avec un champ correspondant à une valeur dans les attributs SAML de l'utilisateur demandeur. Par exemple, #attr(firstname, user_first_name) , exécuté par un utilisateur qui a un attribut SAML user_first_name avec une valeur de "Marie", renverra des enregistrements avec un champ firstname contenant "Marie".

Paramètres disponibles pour la fonction #now :

  • Years, months, weeks, days, hours, minutes, seconds, microseconds: ces paramètres ajoutent du temps à la date actuelle.
    Par exemple, #now(years=-1, hours=-1) renvoie la date actuelle moins une année et une heure.

  • Year, month, day, hour, minute, second, microsecond : peuvent également être utilisés pour spécifier une date absolue.
    Par exemple, #now(year=2001) renvoie l'heure, le jour et le mois actuels pour l'année 2001.

  • Weekday : spécifie un jour de la semaine. Ce paramètre accepte soit un entier compris entre 0 et 6 (où 0 est lundi et 6 est dimanche) ou les deux premières lettres du jour (en anglais) suivies du cardinal de la première semaine sur laquelle commencer la requête.
    #now(weeks=-2, weekday=1) renvoie le mardi avant-dernier.
    #now(weekday=MO(2)) renvoie lundi après le suivant.

Géo-filtrage

La recherche d'enregistrements accepte les paramètres de géofiltre pour filtrer les enregistrements situés dans une zone géographique spécifique.

Les paramètres suivants peuvent être utilisés.

Le nom du paramètre

La description

geofilter.distance

Limite le jeu de résultats à une zone géographique définie par un cercle (coordonnées du centre du cercle exprimées en WGS84 et distance exprimée en mètres) : latitude,longitude,distance : geofilter.distance=48.8520930694,2.34738897685,1000

Ce paramètre de requête est équivalent à la fonction #distance décrite au début de cette documentation.

géofiltre.polygone

Limite le jeu de résultats à une zone géographique définie par un polygone (coordonnées des points exprimées en WGS84 comme dans (lat1,lon1),(lat2,lon2),(lat3,lon3) : geofilter.polygon=(48.883086,2.379072),(48.879022,2.379930),(48.883651,2.386968)