Effectuer une recherche dans les données¶
Rechercher des enregistrements |
Requête |
Exemple (basé sur le jeu de données ods-api-monitoring) |
---|---|---|
contenant une valeur |
valeur |
renvoie tous les enregistrements contenant la chaîne de caractères "explore" |
contenant une valeur dans un champ spécifique |
id_field:value |
renvoie tous les enregistrements contenant la chaîne de caractères "explore" dans la colonne nommée action |
contenant plusieurs valeurs |
value1 AND value2 |
renvoie tous les enregistrements contenant les chaînes de caractères "explore" et "search" |
contenant au moins une des valeurs |
value1 OR value2 |
renvoie tous les enregistrements contenant les chaînes de caractères "explore" ou "search" |
ne contenant pas de valeur |
NOT value |
renvoie tous les enregistrements ne contenant pas la chaîne de caractères "anonymous" |
contenant une valeur exacte dans un champ |
#exact(id_field,"value") |
renvoie tous les enregistrements contenant la chaîne de caractères exacte "anonymous" dans la colonne nommée user_id |
si un champ est vide |
#null(id_field) |
renvoie tous les enregistrements pour lesquels aucune valeur n'existe dans la colonne nommée referer |
contenant une valeur commençant par la chaîne de caractères spécifiée dans le champ indiqué |
#startswith(id_field,"string") |
renvoie tous les enregistrements contenant une valeur commençant par |
où la date du champ est antérieure à une valeur |
id_date_field<=AAAA/MM/JJ |
renvoie tous les enregistrements avec un timestamp antérieur et égal à septembre 2016 |
où la date du champ est la date actuelle moins une période |
id_date_field>#now(days=-value) |
renvoie tous les enregistrements avec un timestamp égal au jour actuel moins 7 jours |
contenant un champ géographique dans une zone spécifique |
pour une zone circulaire : #distance("latitude,longitude",distance) pour une zone carrée ou polygonale : #polygon(geo_field,"(lat1,lon1),(lat2,lon2),(lat3,lon3)") |
renvoie tous les enregistrements situés à 1 km du centre de Paris
renvoie tous les enregistrements se trouvant dans le polygone |
Langage de requêtes et filtrage géographique¶
Langage de requêtes¶
Le langage de requêtes Opendatasoft permet d'exprimer des conditions booléennes complexes en tant que contexte de filtrage.
Recherche en texte intégral¶
Le langage de requêtes accepte les requêtes en texte intégral.
Si un mot ou une expression est entouré de guillemets, seules les correspondances exactes seront renvoyées (les correspondances renvoyées peuvent présenter des différences au niveau des caractères accentués et de la casse).
film
renvoie des résultats contenant la chaîne de caractères film, par exemple films, filmographie..."film"
renvoie uniquement des résultats contenant exactement la chaîne de caractères film.
Expressions booléennes¶
Le langage de requêtes supporte les opérateurs booléens suivants : AND`, OR
et NOT
.
Des parenthèses peuvent être utilisées pour regrouper des expressions et modifier le modèle de priorité par défaut :
NOT
AND
OR
Exemples
film OR trees
(film OR trees) AND paris
Requêtes sur des champs¶
L'une des fonctionnalités majeures du langage de requêtes ODSQL est qu'il permet un filtrage par champ. Vous pouvez utiliser des noms de champs comme préfixe pour vos requêtes afin de filtrer le résultat en fonction de la valeur d'un champ en particulier.
Pour la recherche de jeux de données, la liste de champs disponibles correspond exactement aux métadonnées disponibles. Par défaut :
Nom du champ |
Description |
---|---|
publisher | Producteur du jeu de données |
title | Le titre du jeu de données |
description | Description du jeu de données |
license | Licence du jeu de données |
records_count | Nombre d'enregistrements dans le jeu de données |
modified | Date de la dernière modification du jeu de données |
language | Langue du jeu de données (code ISO) |
theme | Thème du jeu de données |
keyword | Un mot-clé décrivant le jeu de données |
references | Références pour le jeu de données |
L'administrateur du domaine peut définir un modèle de métadonnées plus riche, ce qui donne accès à un ensemble de champs à filtrer plus riche.
Pour la recherche d'enregistrements, la liste des champs disponibles dépend du schéma du jeu de données. Pour récupérer la liste des champs disponibles d'un jeu de données, vous pouvez utiliser les API de recherche de jeux de données ou de récupération de jeux de données.
Plusieurs champs d'opérateurs peuvent être utilisés entre le nom de champ et la requête :
:
,=
,==
: renvoie des résultats dont le champ correspond exactement à la valeur donnée (sous réserve que les champs soient de type textuel ou numérique)>
,<
,>=
,<=
: renvoie des résultats dont les valeurs de champ sont supérieures, inférieures, supérieures ou égales, inférieures ou égales à la valeur donnée (sous réserve que le champ soit de type numérique ou un champ de date).[start_date TO end_date]
: effectue une requête sur les enregistrements dont la date est située entre les argumentsstart_date
etend_date
.
Il est possible de spécifier différents formats de date : simple (AAAA[[/mm]/jj]
) ou ISO 8601 (AAAA-mm-JJTHH: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êtes¶
Il est possible d'intégrer des fonctions avancées au langage de requêtes. Les noms des fonctions doivent être précédés d'un croisillon (#
).
Nom de la fonction |
Description |
---|---|
now | Renvoie la date actuelle. Cette fonction peut être appelée en tant que valeur de requête pour un champ. Lorsqu'elle est appelée sans argument, elle effectue une évaluation jusqu'à la date et à l'heure actuelles : |
null | Cette fonction peut être appelée en spécifiant un nom de champ en tant que paramètre. Elle renvoie les correspondances pour lesquelles aucune valeur n'est définie dans le champ spécifié. Par exemple |
exact | Cette fonction permet de rechercher des enregistrements dont un champ correspond exactement à la valeur spécifiée. Par exemple |
attr | Cette fonction permet de rechercher des enregistrements dont un champ correspond exactement à la valeur spécifiée dans les attributs SAML d'un utilisateur. Par exemple |
Paramètres disponibles pour la fonction ``#now`` :
years, months, weeks, days, hours, minutes, seconds, microseconds : ces paramètres ajoutent ou soustraient 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 : ces paramètres 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 entre 0 et 6 (0 étant lundi et 6 dimanche), soit les deux premières lettres du jour (en anglais) suivies du cardinal de la première semaine sur laquelle porte la requête.
#now(weeks=-2, weekday=1)
renvoie le mardi précédant le dernier.#now(weekday=MO(2))
renvoie le lundi suivant le prochain.
Filtrage géographique¶
La recherche d'enregistrements accepte des paramètres de filtrage géographique afin de filtrer les enregistrements situés dans une zone géographique spécifique.
Les paramètres suivants peuvent être utilisés.
Nom du paramètre |
Description |
---|---|
geofilter.distance | Limite les résultats à une zone géographique délimitée par un cercle (les coordonnées du centre du cercle sont exprimées au format WGS84 et la distance en mètres) : latitude,longitude,distance: Remarque Ce paramètre de requête équivaut à la fonction |
geofilter.polygon | Limite les résultats à une zone géographique délimitée par un polygone (les coordonnées du polygone sont exprimées au format WGS84 sous la forme (lat1,lon1),(lat2,lon2),(lat3,lon3) : |