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

explore

renvoie tous les enregistrements contenant la chaîne de caractères “explore”

contenant une valeur dans un champ spécifique

id_field:value

action:explore

renvoie tous les enregistrements contenant la chaîne de caractères “explore” dans la colonne nommée action

contenant plusieurs valeurs

value1 AND value2

explore AND search

renvoie tous les enregistrements contenant les chaînes de caractères “explore” et “search”

contenant au moins une des valeurs

value1 OR value2

action OR explore

renvoie tous les enregistrements contenant les chaînes de caractères “explore” ou “search”

ne contenant pas de valeur

NOT value

NOT anonymous

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”)

#exact(user_id,"anonymous")

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)

#null(referer)

renvoie tous les enregistrements pour lesquels aucune valeur n’existe dans la colonne nommée referer

où la date du champ est antérieure à une valeur

id_date_field<=AAAA/MM/JJ

timestamp<=2016/09

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)

timestamp>#now(days=-7)

renvoie tous les enregistrements avec un timestamp égal au jour actuel moins 7 jours

contenant un champ géographique dans une zone spécifique

#distance(“latitude,longitude”,distance)

#distance(48.866667,2.333333,1000)

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

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.

Expressions booléennes

Le langage de requêtes prend en charge 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 clés du langage de requêtes est qu’il permet le filtrage par champ. Vous pouvez utiliser les noms de champ comme préfixe dans vos requêtes pour filtrer les résultats en fonction de la valeur d’un champ spécifique.

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

references

Références pour le jeu de données

L’administrateur du domaine a la possibilité de définir un modèle de métadonnées plus complet, ce qui vous permet d’accéder à davantage de champs pour le filtrage.

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 arguments start_date et end_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 actuelle : 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, reportez-vous aux paramètres disponibles pour la fonction #now ci-dessous.

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 #null(birthdate).

exact

Cette fonction permet de rechercher des enregistrements dont un champ correspond exactement à la valeur spécifiée. Par exemple #exact(firstname, "Marie") renvoie les enregistrements dont le champ firstname contient exactement “Marie” et rien d’autre.

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 #attr(firstname, user_first_name) réalisé par un utilisateur avec un attribut SAML user_first_name avec une valeur à “Marie” renverra les 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 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 acceptent des paramètres de filtrage géographique afin de filtrer les enregistrements correspondant à 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: geofilter.distance=48.8520930694,2.34738897685,1000

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)) : geofilter.polygon=(48.883086,2.379072),(48.879022,2.379930),(48.883651,2.386968)