Mantener los datos actualizados

La plataforma OpenDataSoft permite, dentro del mismo catálogo de datos, manejar conjuntos de datos totalmente estáticos (que necesitan publicarse una sola vez) y conjuntos de datos dinámicos (que precisan actualizaciones periódicas). Para llevar a cabo la renovación de los conjuntos se datos, dispone de 2 mecanismos diferentes.

El primero, denominado planificación, consiste en volver a publicar automáticamente un conjunto de datos en intervalos fijos. Este modo resulta de especial utilidad para los conjuntos de datos con un recurso remoto de actualización periódica.

El segundo consiste en insertar datos en la plataforma OpenDataSoft mediante un extremo de API específico. Este método resulta de especial utilidad cuando los datos pueden ser enviados directamente por el sistema que produce los puntos de datos (como un programa informático que envía métricas de eventos o un conjunto de sensores que envían lecturas).

Utilizar la planificación para mantener actualizado un conjunto de datos

Esta solución es la más fácil de implementar; no requiere ningún desarrollo, únicamente un origen remoto y una serie de valores en la configuración del conjunto de datos.

Especificar un recurso

resource interface

A fin de poder planificar un conjunto de datos, su recurso subyacente debe ser un recurso remoto, especificado como una dirección URL (http o ftp funcionan bien), y no un archivo cargado. Para añadir un recurso de este tipo, simplemente pegue una dirección URL en la entrada de dirección URL.

Especificar el intervalo de planificación

scheduling tab

Una vez que un conjunto de datos se guarda con un recurso remoto, se activa la ficha Planificación. El intervalo mínimo es el minuto, pero no se activa de forma predeterminada. Póngase en contacto con el equipo de soporte de OpenDataSoft si necesita una planificación a nivel de minutos en el dominio. Puede añadir tantas planificaciones como desee. Por ejemplo, según sus necesidades, puede decidir planificar que se vuelva a procesar un conjunto de datos todos los lunes por la mañana y miércoles por la tarde.

Insertar datos en tiempo real

En el caso de algunos tipos de datos, puede ser útil insertar los datos en lugar de seguir el método tradicional por el cual la plataforma extrae los datos de un recurso. Para atender esta necesidad, la plataforma OpenDataSoft ofrece una API de inserción en tiempo real. No debe confundirse con la posibilidad de planificar el procesamiento de un conjunto de datos. Con la planificación, el conjunto de datos periódicamente extrae el recurso y procesa los datos de su interior; en cambio, con la API de inserción, una aplicación alimenta el conjunto de datos a través de la API de inserción y los registros se procesan uno a uno a medida que se reciben.

Nota

Al ser una función todavía en fase beta, no está activada de forma predeterminada. Póngase en contacto con el equipo de soporte de OpenDataSoft para probarla.

Configurar el esquema de conjunto de datos

source dropdown

Para empezar a crear un conjunto de datos en tiempo real, desplácese a la interfaz de creación del conjunto de datos y seleccione "Añadir un origen en tiempo real".

realtime resource pane

Se le pedirá que especifique los datos de arranque y, si lo desea, algunas opciones adicionales. Los datos de arranque deben tener todos los campos que se enviarán a través de la API. Tenga presente que los datos de arranque no se utilizan en el conjunto de datos: su única finalidad es hacer posible la configuración del conjunto de datos.

Utilizar la dirección URL de inserción

push url in the realtime resource

Una vez que el conjunto de datos se guarda con la configuración de recurso en tiempo real correspondiente, aparecerá una ruta de dirección URL con una clave de API de inserción. Esta ruta, anexada a la dirección URL base del dominio, es donde la plataforma espera que se envíen los datos tras la publicación. Al igual que con los datos de arranque, los datos deben enviarse en formato JSON, o bien como un único objeto JSON para un único registro o bien como una matriz de objetos JSON para insertar varios registros a la vez.

table view with a single record with value "Hello World!" in the "message" field

Este sería un ejemplo mínimo del uso de la API para un conjunto de datos con un único campo denominado "message", utilizando curl:

curl -XPOST <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/push/?pushkey=<PUSH_API_KEY> -d'{"message":"Hello World!"}'

Este sería un ejemplo mínimo con el mismo conjunto de datos, utilizando el formulario de matriz para enviar varios registros a la vez:

curl -XPOST <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/push/?pushkey=<PUSH_API_KEY> -d'[{"message":"¡Hola Mundo!"},{"message":"Hallo Welt!"}]'

Si los registros se han recibido correctamente, el servidor mostrará el mensaje siguiente.

{
    "status": "OK"
}

Si se ha producido un error al intentar insertar un registro, la respuesta especificará el error.

Insertar un campo de tipo archivo

Para insertar un campo de tipo imagen, es preciso enviar un objeto JSON con el contenido con codificación Base 64 y el tipo MIME del archivo, de este modo:

{
    "image_field": {
        "content": "BASE64 data",
        "content-type": "image/jpg"
    }
}

Actualizar los datos definiendo una clave exclusiva

table view with 2 records containing respectively 978-0060589462 and 978-2862744506 as isbn and 3 and 5 as number_of_copies

En ocasiones, es útil actualizar los registros existentes en lugar de simplemente insertar otros nuevos. Un ejemplo de esto sería un conjunto de datos que hace el seguimiento del número de copias disponibles de cada uno de los libros de una biblioteca pública. Supongamos que tenemos este conjunto de datos con 2 campos: isbn, que representa el número ISBN del libro, y number_of_copies que hace el seguimiento del número actual de copias disponibles en la biblioteca. No tendría mucho sentido añadir un registro para cada uno de los valores nuevos de number_of_copies; sería mucho mejor establecer el valor number_of_copies nuevo como el registro correspondiente al valor isbn del libro.

unique ID option in the field dropdown

Para configurar un sistema de este tipo con la plataforma OpenDataSoft, los campos que se usarán a modo de clave exclusiva deben marcarse como tal. En nuestro ejemplo, la clave exclusiva sería isbn, dado que los demás datos están vinculados con los libros individuales y estos se identifican por el ISBN. Esta tarea se puede realizar en la vista de procesamiento, en el menú que aparece al pulsar el botón de configuración. Se pueden establecer varios campos como claves exclusivas. A continuación, una vez guardado y publicado, si se inserta un registro nuevo cuyo valor clave es igual a un registro existente, el registro nuevo sobrescribirá el antiguo. En nuestro ejemplo de biblioteca, si el conjunto de datos tiene isbn como clave exclusiva y contiene estos 2 registros.

[
    {
        "isbn": "978-0060589462",
        "number_of_copies": 3
    }, {
        "isbn": "978-2862744506",
        "number_of_copies": 5
    }
]

Si alguien toma en préstamo una copia de Zen and the Art of Motorcycle Maintenance y se inserta el registro siguiente, seguirá habiendo 2 registros, el primero actualizado con el valor nuevo.

{
    "isbn": "978-0060589462",
    "number_of_copies": 2
}
table view with 2 records containing respectively 978-0060589462 and 978-2862744506 as isbn and 2 and 5 as number_of_copies

Suprimir datos

Hay 2 puntos de entrada que permiten suprimir los registros insertados: uno utiliza los valores de registro; y otro, el ID de registro.

Usar los valores de registro

Para suprimir un registro sabiendo los valores de los campos de registro, ejecute POST para el registro como si lo añadiera por primera vez, pero sustituya /push/ por /delete/ en la dirección URL de inserción. Si la ruta de dirección URL de inserción es /api/push/1.0/realtime-dataset/<CONJUNTO_DATOS>/push/?pushkey=<CLAVE_API_INSERCIÓN>, utilice en su lugar /api/push/1.0/realtime-dataset/<CONJUNTO_DATOS>/push/delete/?pushkey=<CLAVE_API_INSERCIÓN>. A continuación se muestra un ejemplo mínimo de supresión del registro insertado anteriormente.

curl -XPOST <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/delete/?pushkey=<PUSH_API_KEY> -d'{"message":"Hello World!"}'

Usar el ID de registro

Si sabe el ID de registro del registro que desea suprimir, basta con efectuar una solicitud GET para la dirección URL que se obtiene sustituyendo /push/ por /<ID_REGISTRO>/delete/ en la dirección URL de inserción. A continuación se muestra un ejemplo mínimo de esta operación.

curl -XGET <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/<RECORD_ID>/delete/?pushkey=<PUSH_API_KEY>

Recibir una notificación en caso de inactividad

inactivity alerting settings in RT resource view

Si prevé que un sistema inserte datos en la plataforma con frecuencia, tal vez desee recibir una notificación si la plataforma no recibe ningún registro durante un tiempo. Para recibir una notificación, puede activar la opción "Alertas" en la configuración de origen y configurar un umbral de tiempo en minutos. Si no recibe ningún registro durante un intervalo de tiempo superior al umbral, se le enviará un correo electrónico.

Cancelar la publicación y desactivar la API

"disable push" button in RT resource view

Tenga cuidado al cancelar la publicación del conjunto de datos, ya que no se conservarán los registros existentes para la próxima vez que se publique el conjunto de datos. Por contra, si desea evitar obtener datos nuevos, haga clic en el botón "Desactivar inserción" en la configuración del recurso. De este modo se evitará el uso de la API de inserción, aunque no afectará a los datos actuales. Si se insertan datos mientras la inserción está desactivada en el recurso, no se añadirán datos y se enviará un error.

Recuperación

recovery option in realtime resource view

En caso de pérdida de datos, por ejemplo si se ha cancelado la publicación del conjunto de datos o se ha configurado erróneamente un procesador, existe la posibilidad de recuperar los registros perdidos. Para ello, debe haberse activado la opción de recuperación antes de insertar los registros en la plataforma.

recover data button in realtime resource view

Una vez activada la recuperación, se realizará una copia de seguridad de todos los registros posteriores que se reciban, de modo que serán válidos para recuperarse. Para recuperar los registros válidos, se puede emplear el botón "Recuperar datos" de la página Configuración de origen.