Buscar en los datos

Búsqueda de registros

Consulta

Ejemplo (basado en el conjunto de datos ods-api-monitoring)

que contengan un valor

valor

explore

Devuelve todos los registros que contienen la cadena explore.

que contengan un valor en un campo específico

id_campo:valor

action:explore

Devuelve todos los registros que contienen la cadena explore en la columna denominada action.

que contengan varios valores

valor1 AND valor2

explore AND search

Devuelve todos los registros que contienen tanto explore como search.

que contengan como mínimo uno de los valores

valor1 OR valor2

explore OR search

Devuelve todos los registros que contienen o bien explore o bien search.

que no contengan un valor

NOT valor

NOT anonymous

Devuelve todos los registros que no contienen la cadena anonymous.

que contengan un valor exacto en un campo

#exact(id_campo,"valor")

#exact(user_id,"anonymous")

Devuelve todos los registros que contienen la cadena exacta anonymous en la columna denominada user_id.

si un campo está vacío

#null(id_campo)

#null(referer)

Devuelve todos los registros que no tienen ningún valor en la columna denominada referer

Devuelve todos los registros que contienen un valor que empieza por la cadena especificada, en el campo especificado

#startswith(id_field,"string")

#startswith(user_id,"anon")

Devuelve todos los registros que contienen un valor que empieza por anon en la columna denominada user_id

cuando un campo de fecha es anterior a un valor

id_campo_fecha<=AAAA/MM/DD

timestamp<=2016/09

Devuelve todos los registros con una marca de tiempo anterior o igual a septiembre de 2016.

cuando un campo de fecha es la fecha actual menos un período

id_campo_fecha>#now(days=-valor)

timestamp>#now(days=-7)

Devuelve todos los registros con una marca de tiempo igual al día actual menos 7 días.

que contengan un campo geográfico situado en una área específica

de un área circular:

#distance("latitud,longitud",distancia)

de un polígono o área cuadrada:

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

#distance("48.866667,2.333333",1000)

Devuelve todos los registros situados a 1 km del centro de París.

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

Devuelve todos los registros situados en el polígono.

Lenguaje de consulta y filtros geográficos

Lenguaje de consulta

El lenguaje de consulta de Opendatasoft permite expresar condiciones booleanas complejas a modo de contexto de filtro.

Expresiones booleanas

El lenguaje de consulta admite los operadores booleanos AND, OR y NOT.

Se pueden usar paréntesis para agrupar expresiones y alterar el modelo de prioridad predeterminado:

  • NOT

  • AND

  • OR

Ejemplos

  • film OR trees

  • (film OR trees) AND paris

Consultas de campos

Una de las funciones primordiales del lenguaje de consulta es permitir los filtros por campos. Puede usar los nombres de campo como prefijo de las consultas para filtrar los resultados en función del valor de un campo específico.

En el caso de la búsqueda de conjuntos de datos en el catálogo, la lista de campos disponibles se corresponde exactamente con los metadatos disponibles. De forma predeterminada:

Nombre de campo

Descripción

Publicador

Publicador del conjunto de datos

Título

Título del conjunto de datos

Descripción

Descripción del conjunto de datos

Licencia

Licencia del conjunto de datos

records_count

Número de registros del conjunto de datos

modified

Fecha de la última modificación del conjunto de datos

Idioma

Idioma del conjunto de datos (código ISO)

Tema

Tema del conjunto de datos

keyword

Una palabra clave que describe el conjunto de datos

references

Referencias del conjunto de datos

El administrador del dominio puede definir una plantilla de metadatos más rica y así dar acceso a un conjunto de campos de filtro más rico.

En el caso de la búsqueda de registros en un conjunto de datos, la lista de campos disponibles depende del esquema del conjunto de datos. Para capturar la lista de campos disponibles para un conjunto de datos determinado, puede usar las API de consulta o búsqueda de conjunto de datos.

Se pueden emplear varios campos de operadores entre el nombre de campo y la consulta:

  • :, =, ==: Devuelven los resultados cuyo campo coincide exactamente con el valor especificado (siempre que los campos sean de tipo texto o numérico).

  • >, <, >=, <=: Devuelven los resultados cuyos valores de campo son superiores, inferiores, superiores o iguales, o inferiores o iguales que el valor especificado (siempre que los campos sean de tipo fecha o numérico).

  • [start_date TO end_date]: Consulta los registros cuya fecha se encuentra entre start_date y end_date.

Las fechas se pueden especificar en diversos formatos: simple (YYYY[[/mm]/dd]) o ISO 8601 (YYYY-mm-DDTHH:MM:SS).

Ejemplos:

  • film_date >= 2002

  • film_date >= 2013/02/11

  • film_date: [1950 TO 2000]

  • film_box_office > 10000 AND film_date < 1965

Funciones del lenguaje de consulta

Se pueden usar funciones avanzadas en el lenguaje de consulta. Debe anteponerse como prefijo a los nombres de función un signo #.

Nombre de función

Descripción

now

Devuelve la fecha actual. Se puede invocar esta función como un valor de consulta para un campo. Si se invoca sin argumentos, se evaluará como la fecha y hora actual: birthdate >= #now() devuelve todos los registros que contienen una fecha de nacimiento superior o igual a la fecha y hora actual. Esta función también puede aceptar parámetros. Consulte más adelante los parámetros de la función #now disponibles.

null

Se puede invocar esta función especificando un nombre de campo como parámetro. Devuelve las coincidencias para las cuales no se ha definido ningún valor para el campo especificado. Por ejemplo #null(birthdate).

exact

Esta función permite buscar registros con un campo que coincida exactamente con un valor determinado. Por ejemplo, #exact(firstname, "Marie") devuelve los registros cuyo campo firstname contiene exactamente "Marie" y nada más.

attr

Esta función permite buscar registros con un campo que coincida exactamente con un valor en los atributos SAML del usuario que efectúa la consulta. Por ejemplo, #attr(firstname, user_first_name), ejecutado por un usuario que tiene un atributo SAML user_first_name con el valor "Marie" devolverá los registros cuyo campo firstname contenga "Marie".

Parámetros disponibles para la función ``#now``:

  • years, months, weeks, days, hours, minutes, seconds, microseconds: Estos parámetros añaden tiempo a la fecha actual.

    Por ejemplo, #now(years=-1, hours=-1) devuelve la fecha actual menos un año y una hora.

  • year, month, day, hour, minute, second, microsecond: También se pueden utilizar para especificar una fecha absoluta.

    Por ejemplo, #now(year=2001) devuelve la hora, el día y el mes actuales para el año 2001.

  • weekday: Especifica un día de la semana. Este parámetro acepta o bien un entero entre 0 y 6 (donde 0 es lunes y 6 es domingo), o bien las 2 primeras letras del día (en inglés) seguidas del cardinal de la primera semana en que se debe iniciar la consulta.

    #now(weeks=-2, weekday=1) devuelve el martes anterior al último.

    #now(weekday=MO(2)) devuelve el lunes posterior al siguiente.

Filtros geográficos

Las búsquedas de registros aceptan parámetros de filtros geográficos para filtrar los registros que se encuentran en un área geográfica determinada.

Se pueden emplear los parámetros siguientes.

Nombre de parámetro

Descripción

geofilter.distance

Limita el conjunto de resultados a un área geográfica definida por un círculo (coordenadas del centro del círculo expresadas en WGS84 y distancia expresada en metros): latitud,longitud,distancia: geofilter.distance=48.8520930694,2.34738897685,1000

Nota

Este parámetro de consulta equivale a la función #distance descrita al principio de esta documentación.

geofilter.polygon

Limita el conjunto de resultados a un área geográfica definida por un polígono (coordenadas de los puntos expresadas en WGS84 como en (lat1,lon1),(lat2,lon2),(lat3,lon3): geofilter.polygon=(48.883086,2.379072),(48.879022,2.379930),(48.883651,2.386968)