Las ventajas que te ofrece Microsoft Azure y el mundo.NET

Desgranando IoT (III): Azure Stream Analytics

Stream Analytics

En este tercer post de la serie de artículos en los que vamos a adentrarnos en toda la temática de IoT, vamos a profundizar y a explicar con mayor nivel de detalle, el siguiente de los componentes clave de cualquier solución de IoT:  Azure Stream Analytics.

Si este es el primer artículo de la serie que lees, aquí  tienes el resto de artículos de la serie:

Como veremos más adelante, Azure Stream Analytics nos permite realizar un procesado de flujos de datos en tiempo real, descrito en funciones y consultas en un lenguaje similar a SQL llamado Stream Analytics Query Language, el cuál es un subconjunto de T-SQL.

Visto desde el exterior, y abstrayéndonos de su funcionamiento e interioridades, un trabajo de Stream Analytics podríamos imaginarlo como una caja negra a la cual se le introducen N entradas de flujos de datos, y nos devuelve como salida otro número M de salidas distintas. Esto, en apariencia simple, aplicado a nuestros flujos de datos y nuestras soluciones de IoT nos va a dar bastante poder y mucho valor a la hora de diseñar y realizar nuestras soluciones.

Stream Analytics

Así, a la hora de aplicarlo a nuestra solución de IoT, Stream Analytics sería el elemento que  realizaría un procesado inicial de nuestros datos. En nuestro caso, Stream Analytics se encargaría de leer los datos que han llegado al IoT Hub, realizar los procesamientos iniciales que necesitemos en nuestra solución, y dirigir los datos mediante las salidas a los diferentes almacenamientos de que dispongamos, ya sea DocumentDB, un Blob storage, o algo más clásico como un SQL.

Los procesamientos típicos que podríamos implementar sería la detección y limpieza de datos o valores que no sean válidos (por errores en la transmisión o en el dispositivo que los envía…), cálculo de medias, valores máximos o valores mínimos en un intervalo… Estos intervalos, que son llamados ventanas, pueden ser de diferentes clases o tipos según cómo se generen o se desplacen. Si necesitas más información, en éste enlace puedes ver una descripción en detalle de qué tipos de ventanas hay y cuáles son sus características y peculiaridades.

Además, cada una de estas fuentes de resultados de salida la podríamos guardar en un almacenamiento diferente, pudiendo, por ejemplo, reservar todo el flujo de datos que nos llega en una colección de DocumentDB, guardar los puntos formateados además de los valores promedio en otra colección, así como calcular y guardar medias y máximos y mínimos en una base de datos SQL.

Incluso nos podría ser útil generar tareas, de modo que si alguno de los valores que estamos midiendo y obteniendo de nuestros dispositivos es mayor o menor que unos determinados umbrales para en ése caso generar una alarma. Ésta salida de la regla de alarma podría estar conectada a otro sistema nuestro, ya sea una Logic App, un Event Hub, una web app o algún elemento personalizado, para lanzar una alarma o aviso al usuario de que algo no va bien. En el siguiente enlace puedes ver recopiladas las consultas más típicas que se suelen realizar con Stream Analytics.

Ejemplo práctico

En este ejemplo, vamos a ver qué aspecto tiene Stream Analytics en Azure, qué parámetros podemos y debemos configurar, y realizaremos un ejemplo de configuración de entradas, salidas y consultas para una entrada de datos como la que teníamos en el IoT Hub del artículo anterior.

Para crearlo, deberemos buscarlo por Stream Analytics job, como vemos en la imagen inferior.

Stream Analytics

Los únicos parámetros de configuración que necesitamos para crearlo, es el nombre que le queramos dar, su Resource Group y la ubicación (datacenter) donde lo queramos desplegar. Una vez desplegado tendremos éste panel de información general, dónde la parte en la que nos vamos a centrar es la que está marcada con cuadros. En dicha parte, podemos tanto ver cómo acceder a la llamada topología del trabajo, la cual comprende tanto entradas, como salidas, como funciones o consultas que se realicen sobre dichos datos.

Primero configuraremos las entradas. En nuestro caso sólo tendremos una entrada, que será nuestro IoT Hub, y si, como es el caso, el IoT Hub se encuentra en la misma subscripción que el Stream Analytics job, la configuración será mucho más sencilla, ya que en el momento que seleccionemos del desplegable el nombre nuestro hub, el resto de parámetros se configurarán automáticamente.

A la hora de configurar las salidas donde almacenaremos los datos una vez procesados, podemos optar por diferentes opciones, las cuales van desde el clásico SQL con los datos estructurados, a modelos NoSQL como DocumentDB, e incluso aún más sencillos como Azure Blob Storage. En nuestro caso, como queremos una forma sencilla rápida y fácil de almacenar los datos, y no nos es tan relevante que estén estructurados o no, elegiremos un Blob Storage para el ejemplo (más información).

Seguidamente, podremos acceder y configurar nuestra consulta, usando los nombres de las entradas y salidas que hemos creado. En la imagen podemos ver una consulta muy simple de ejemplo, pero esto podría complicarse tanto como quisiéramos, y se repetiría una vez por cada salida configurada.

Stream Analytics

Por último, si arrancamos el trabajo de Stream Analytics y las aplicaciones de consola que creamos en el artículo anterior, podremos ver en el Blob Storage como aparece un fichero en el que se van guardando los datos recibidos. Para ello, lo más cómodo es usar Microsoft Azure Storage Explorer, y navegando por las carpetas llegaremos a ver nuestro fichero con los datos, con un aspecto similar al siguiente:

Stream Analytics

Y nuestro fichero de datos tendrá un contenido similar a lo que podemos ver debajo:

Conclusiones

Como hemos podido ver, Stream Analytics es una herramienta bastante poderosa, que nos va a permitir realizar bastantes acciones, y que usaremos en nuestras soluciones, sobre todo para realizar un primer procesado inicial de los datos, detectar alarmas, limpiar valores incorrectos, y guiar los datos limpios y procesados a las fuentes de almacenamiento que más nos interese en cada caso.
Además, recientemente se han presentado las Azure Stream Analytics Tools for Visual Studio, de las cuales podéis ver sus funcionalidades y descargarla en el siguiente enlace.

Dichas herramientas nos permitirán realizar y depurar nuestras consultas de los trabajos de Stream Analytics directamente desde Visual Studio, pudiendo además insertar datos de prueba, y publicarlas también directamente desde allí, con lo que podríamos también tener nuestro Stream Analytics job integrado en el ciclo de vida de nuestra solución.

En el siguiente artículo de la serie, hablaremos de otro de los elementos que, aun no siendo un elemento nuevo, ni específico del mundo IoT, nos puede ser muy útil en nuestras soluciones de IoT, como es Azure Service Bus Event Hubs.

 

mm

Sobre Adrián Del Rincón López

Ingeniero Superior de Telecomunicaciones por la Universidad Politécnica de Valencia. Desde hace varios años trabajo en el departamento de desarrollo de ENCAMINA. Sobre todo, me apasiona estar al tanto de lo último en tecnología, y si es en el mundo/ecosistema Microsoft y .NET, mejor que mejor. Además, también participo de las redes sociales, si quieres encontrarme, búscame con el usuario @adderin
Esta entrada ha sido publicada en IoT, Microsoft Azure. Enlace permanente.
ENCAMINA, piensa en colores