Filtrer des données dans un jeu de données
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 |
| Les enregistrements contenant la chaîne "abricot" |
Ceux contenant un terme de recherche spécifique dans un champ spécifique | id_field : terme |
| 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 |
| Les enregistrements contenant à la fois "pomme" et "orange" |
Ceux contenant au moins une des valeurs multiples | valeur1 OR valeur2 |
| Les enregistrements contenant "apple" ou "orange" |
Ceux qui ne contiennent pas votre terme de recherche terme | NOT terme |
| Les enregistrements qui ne contiennent pas la chaîne "banana" |
Ceux contenant un terme exact dans un champ spécifique | #exact( id_field ," terme ") |
| Les enregistrements contenant la chaîne exacte "fruit tree" dans la colonne nommée "plant". |
Ceux où les champs sont vides | #null( id_field ) |
| 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 ") |
| 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 |
| 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 ) |
| Tous les enregistrements pour lesquels la valeur du champ "timestamp" est égale au jour courant moins 7 jours
|
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 )") |
| 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") |
| 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 entrestart_date
etend_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 : |
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 |
exact | Cette fonction permet de rechercher des enregistrements avec un champ correspondant exactement à une valeur donnée. Par exemple, |
attr | Cette fonction permet de rechercher des enregistrements avec un champ correspondant à une valeur dans les attributs SAML de l'utilisateur demandeur. Par exemple, |
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 :
|
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) : |