EngineTutoriales

Simulando datos en Onesait Platform (parte 1)

A menudo, al empezar un proyecto se cuenta con un modelo de datos pero no con los datos en si, ya sea porque todavía se tienen que cargar en las bases de datos o porque la API de acceso no se encuentra disponible.

Para salir del paso hasta que los datos estén disponibles y se pueda desarrollar la parte front, normalmente se hace uso de datos mockeados, ya sean creados por el propio equipo back, una muestra de los datos reales que llegarán, o incluso datos generados por el propio front para ir haciendo pruebas.

Tener un JSON (normalmente) para estos temas está bien, pero se aleja del funcionamiento real que tendrá la recepción de estos datos, más cuando tratamos de temas asíncronos en los que los datos no estarán ahí, sino que tendrán que ir llegando con un tiempo de espera (hola, Async/Await).

Para intentar solucionar este problema y hacer más fácil la vida a nuestros desarrolladores, en Onesait Platform contamos con la posibilidad de simular la generación de datos y disponibilizar dichos datos como si se estuviese usando una API, lo que va a permitir recibir los datos como si fuesen los datos reales.

Dependiendo de nuestras necesidades y licencia, esta simulación de datos la podemos llevar a cabo de dos maneras diferentes:

  • Mediante el simulador de datos incorporado en la Plataforma.
  • Haciendo uso de las entidades de tipo KPI.

En esta primera entrada, vamos a aprender a usar el simulador, y en una próxima entrada veremos cómo utilizar las entidades de tipo KPI.

Como espacio de trabajo, en ambos casos se utilizará CloudLab, nuestro entorno de pruebas gratuito y de acceso libre para todo el mundo.

Simuladores de datos

Creación de una entidad

A la hora de trabajar con los simuladores de datos, necesitas en primer lugar una entidad en la que ir almacenando los datos que se vayan generando.

Para crearla, navega al menú lateral de Development > My Entities.

Una vez en el listado de entidades, crea una nueva entidad pulsando en el botón de «+» situado en la parte superior derecha de la pantalla. Aparecerán diversas opciones, por lo que tendrás que seleccionar la primera de todas: «Creation Step by Step».

En primer lugar, tendrás que indicar la información genérica de la entidad: identificación, descripción y metadatos que tendrá la entidad, así como qué opciones vas a querer que tenga: que esté activa, que sea pública y todo el mundo pueda acceder a ella, etc. Aquí no hay que complicarse mucho y tras añadir un identificador, una descripción y algún metadato, puedes dejar el resto como está.

Una vez rellenados estos datos, pulsa en el botón de «Continue» y pasarás a definir la estructura de datos que tendrá la entidad. De entre las distintas opciones que aparecerán, escoge la de «General», y del desplegable interior, selecciona «Empty Base»:

Aquí tienes que tener claro qué estructura de datos quieres generar, por lo que cabe preguntarse: ¿Qué datos quiero simular? Según los campos que vays a utilizar, los tendrás que definir aquí.

Imaginemos que vas a simular un lector de temperatura, por lo que vas a estar registrando por un lado el valor de la temperatura, y por otro la unidad de medición. Esto se traduce en que vas a crear dos campos en el modelo de datos:

  • Campo numérico de nombre «temp_value»: en el que se almacenará el valor de la medición.
  • Campo de texto con el nombre «unit»: donde se meterá el tipo de unidad de la medición. Este campo no sería necesario como tal, pero se incluye para mostrar opciones en la simulación más adelante.

En la parte derecha de la pantalla, aparecerá entonces una fila de encabezados junto a un botón «+», el cual pulsaremos para ir añadiendo propiedades a la entidad.

Debería quedar algo tal que así:

A continuación, pulsa en el botón de «Update Schema», situado junto al botón de «+» para actualizar el esquema de datos de la entidad.

Aparecerá un visor de código, en el que podrás ver la estructura JSON de la entidad. En la parte superior derecha, pulsa en el botón de «Generate Instance» para generar un ejemplo de datos.

En la parte inferior de la ventana de código aparecerá algo similar a esto:

Hecho esto, vuelve a pulsar en el botón de «Continue» de la parte superior para acceder a la configuración avanzada de la entidad. Aquí, de las distintas opciones que aparecerán, marca la de «Delete from Database», para habilitar la eliminación de datos pasado un tiempo, y en el desplegable de «Delete Entities created before», escoge un plazo de tiempo corto (para no generar una entidad muy grande).

Una vez configurado todo esto, pulsa en el botón de «Create» para terminar la creación de tu entidad. Si todo ha ido correctamente, en el listado de entidades aparecerá, por alguna parte del paginado, tu entidad recién creada:

Creación de un cliente digital

Ahora que tienes ya la entidad preparada, el siguiente paso consistirá en crear el cliente digital que dará lugar a la lógica y funcionamiento del simulador.

Para ello, navegas al menú de Clients & Digital Twins > My Digital Clients.

Aparecerá el listado con los clientes digitales que tengas creados (si es que tienes alguno, claro). Para generar uno nuevo, pulsa en el botón de «+» situado en la parte superior derecha de la pantalla.

Con ello se lanzará el asistente de creación del nuevo cliente digital, en donde tendrás que introducir cierta información genérica, como el identificador o la descripción del mismo.

Seguidamente tendrás que indicar qué entidad es la que quieres añadir al cliente digital. En este caso, selecciona del desplegable la entidad que has creado previamente, que será la utilizada para almacenar la información simulada.

Una vez encontrada y seleccionada, asegúrate de que los permisos de acceso son totales.

Seguidamente, pulsa en el botón de «+ Add Entity» para añadirla al listado.

Pues con esto ya estaría todo lo que habría que hacer. Pulsa en el botón de «Create» para terminar de crear tu cliente digital. Como en casos anteriores, si todo ha ido bien, aparecerá tu nuevo cliente en el listado de clientes que tienes disponibles.

Creación de un simulador

Ahora ya tienes todas las piezas necesarias para pasar a crear tu simulador. Esto lo harás desde el menú de Clients & Digital Twins > My Digital Clients Simulations.

Accede al listado de simuladores disponibles, y pulsa como en casos anteriores en el botón de «+» para crear un nuevo simulador. Esto lanzará el asistente de creación de simulaciones, donde tendrás que rellenar información variada.

Por un lado, tienes que indicar el identificador del simulador, así como la definición del cliente digital, el cual seleccionarás del desplegable. Hecho esto, se habilitarán más opciones de configuración. Indica un tiempo de inserción (Cada cuánto quieres que se simule un valor). El token y la entidad de registro se añadirán por defecto y no tienes que tocar nada.

El siguiente paso será el configurar las opciones del simulador, propiedades que se encuentran en la parte de la derecha de la pantalla y que inicialmente verás así:

Para el caso del campo «temp_value»: Aquí es donde quieres que se vayan añadiendo valores aleatorios de temperatura. Entonces, pulsa sobre el desplegable de «Choose function» y selecciona la opción de «RANDOM_NUMBER».

Esto habilitará en la parte derecha del selector nuevas opciones: «Begin value» hace referencia al valor a partir del cual empezará a calcularse el número aleatorio, mientras que «End value» se refiere al valor hasta el que se tendrá en cuenta. La opción de «Decimal precision» se refiere al número decimales que tendrá el valor calculado.

Para este ejemplo, supongamos que estás simulando la variación de temperatura del interior de una habitación, por lo que pondrás un rango de valores de 22,0 a 24,0 grados centígrados. Quedará por tanto como:

Ahora bien, como decimos, estás simulado valores de temperatura en grados centígrados, y esta otra información, la unidad, debes añadirla en el campo de «unit» que también has creado. Para ello, abre el desplegable de opciones y elige «FIXED_STRING»:

A la derecha aparecerá una nueva opción, en donde introducirás «ºC» para indicar que la medición es en grados centígrados.

Con esto ya lo tendrás todo configurado, así que pulsa en el botón de «Create» para crear y empezar a correr el simulador. Regresa a la pantalla con el listado de simuladores, y si todo ha ido bien, aparecerá el simulador con la opción de «Active» en verde.

Comprobando la simulación

El simulador ya está funcionando pero: ¿Cómo puedes saber a ciencia cierta que está funcionando? Pues con la herramienta de consulta de entidades, que encontrarás en el menú Tools > Query Tool.

Una vez que se lance la herramienta, selecciona el nombre de la entidad que estés utilizando para la ingesta de los datos simulados. El tipo y formato, puedes dejarlos como están.

Seguidamente, puedes hacer una consulta SQL para contar cuantos registros tiene la entidad. Como estás simulando datos cada diez segundos (para este tutorial), ya deberías tener unos cuantos.

SELECT COUNT(*) FROM tutorial_blog_simulacion_parte1

Para ver algunos registros de ejemplo, puedes realizar otra consulta y ver qué datos salen:

SELECT * FROM tutorial_blog_simulacion_parte1 LIMIT 10

Como ves, se están simulando los datos tal como te interesaba: con valores aleatorios para el campo «temp_value» y con un texto fijo para el campo «unit».


Como hemos podido ver, simular datos es algo sencillo y rápido, que nos puede sacar de un apuro a la hora de trabajar sin datos finales o sin las conexiones del back end preparadas.

Aunque ésta es la forma más correcta para simular datos, existen una serie de limitaciones, como que no podemos meter una lógica de evolución del dato simulado. Por ejemplo, si ponemos una valor entre 20 y 40, no obtendremos una evolución del valor desde el mínimo al máximo, sino que será algo aleatorio.

En próximas entradas veremos cómo utilizar datos previamente preparados para simularlos, y así conseguir un resultado más realista mediante el uso de entidades de KPI.

Imagen de cabecera: Joanna Kosinska en Unsplash.

✍🏻 Author(s)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *