Inicio rápido: Crear un trabajo de Stream Analytics con Visual Studio Code
En este inicio rápido, creará, ejecutará y enviará un trabajo de Azure Stream Analytics (ASA) mediante la extensión de Azure Stream Analytics Tools para Visual Studio Code en el equipo local. Aprenderá a crear un trabajo de ASA que lee datos de streaming en tiempo real de IoT Hub y que filtra los eventos con una temperatura superior a 27°. Los resultados de salida se envían a un archivo en Blob Storage. Un simulador en línea de Raspberry Pi genera los datos de entrada de esta guía de inicio rápido.
Nota
Las herramientas de Visual Studio Code no admiten trabajos de las regiones de Este de China, Norte de China, Centro de Alemania y Nordeste de Alemania.
Requisitos previos
- Suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita.
- Visual Studio Code.
Instalación de la extensión Azure Stream Analytics Tools
Abra Visual Studio Code (VS Code).
Desde Extensiones en el panel izquierdo, busque Stream Analytics y seleccione Install (Instalar) en la extensión Azure Stream Analytics Tools.
Una vez instalada, seleccione el icono de Azure en la barra de actividad e inicie sesión en Azure.
Una vez que haya iniciado sesión, verá las suscripciones de su cuenta de Azure.
Nota
La extensión Azure Stream Analytics Tools iniciará sesión automáticamente cada vez que abra VS Code. Si la cuenta tiene la autenticación en dos fases, se recomienda usar la autenticación telefónica en lugar de usar un PIN. Para cerrar la sesión de su cuenta de Azure, presione Ctrl + Shift + P
y escriba Azure: Sign Out
.
Ejecutar el simulador
Reemplace el marcador de posición de la línea 15 con la cadena de conexión del dispositivo de Azure IoT Hub que guardó en la sección anterior.
Seleccione Run (Ejecutar). La salida debe mostrar los datos y mensajes del sensor que se envían a la instancia de IoT Hub.
Importante
Seleccione Restablecer después de unos minutos para restablecer la cadena de conexión.
Creación de un almacenamiento de blobs
En la esquina superior izquierda de Azure Portal, seleccione Crear un recurso>Almacenamiento>Cuenta de almacenamiento.
En el panel Crear cuenta de almacenamiento, escriba un nombre, una ubicación y un grupo de recursos para la cuenta de almacenamiento. Elija la misma ubicación y grupo de recursos que los del centro de IoT que ha creado. Luego, seleccione Revisar y crear y Crear para crear la cuenta de almacenamiento.
En la página Cuenta de almacenamiento, seleccione Contenedores y, a continuación, seleccione + Contenedor en la barra de comandos.
En la página Nuevo contenedor, proporcione un nombre para el contenedor, deje Nivel de acceso público como Privado (sin acceso anónimo) y seleccione Aceptar.
Creación de un trabajo de Stream Analytics
En Visual Studio Code, presione Ctrl+Mayús+P y escriba ASA: Create New Project para crear un proyecto de ASA.
Escriba el nombre del proyecto, como myASAproj, y seleccione una carpeta.
Se agrega al área de trabajo un proyecto de ASA que consta de tres carpetas: Inputs, Outputs y Functions. También tiene el script de consulta (*.asaql) , un archivo JobConfig.json y un archivo de configuración asaproj.json.
El archivo asaproj.json contiene las entradas, las salidas y la configuración de trabajo para enviar el trabajo de Stream Analytics a Azure.
Nota
Al agregar las entradas y salidas de la paleta de comandos, se agregan automáticamente las rutas correspondientes a asaproj.json. Si agrega o quita entradas o salidas en el disco directamente, deberá agregarlas o quitarlas manualmente en asaproj.json. Puede colocar las entradas y salidas en un mismo lugar y, a continuación, hacer referencia a ellas en distintos trabajos especificando las rutas de acceso en cada archivo asaproj.json.
Definir la consulta de transformación
Abra el archivo myASAproj.asaql y agregue la siguiente consulta:
SELECT * INTO Output FROM Input WHERE Temperature > 27
Configuración de la entrada del trabajo
Haga clic con el botón derecho en la carpeta Entradas del proyecto de Stream Analytics. Después, seleccione ASA: Agregar entrada en el menú contextual.
También puede presionar Ctrl+Mayús+P para abrir la paleta de comandos y escribir ASA: Add Input para agregar una entrada de ASA.
Seleccione IoT Hub como tipo de entrada.
Elija Seleccionar entre las suscripciones de Azure en el menú desplegable y presione ENTER.
Escriba Entrada para el nombre y presione ENTER.
Verá que se crea un archivo IoTHub1.json en la carpeta Inputs.
En el archivo JSON, confirme que Entrada se especifica como Nombre.
En el editor JSON de Input.json, elija Seleccionar entre las suscripciones y, a continuación, seleccione la suscripción de Azure que tenga IoT Hub.
En el editor JSON, elija Seleccionar una instancia de IoT Hub y, a continuación, seleccione el centro de IoT que creó.
De forma predeterminada, el
SharedAccessPolicyName
debe establecerse eniothubowner
. Si no es así, elija Seleccionar un nombre de directiva de acceso compartido y, a continuación, seleccione iothubowner en la lista desplegable.El valor de
SharedAccessPolicyKey
debe establecerse automáticamente.Seleccione Preview data (Vista previa de los datos) para comprobar si los datos de entrada están configurados correctamente para el trabajo. Se capturará un ejemplo de la instancia de IoT Hub y se mostrará en la ventana de vista previa.
Configuración de la salida del trabajo
- Haga clic con el botón derecho en Salidas en el explorador y seleccione ASA: Agregar salida.
- Elija Data Lake Storage Gen2/Blob Storage para el tipo de receptor en la lista desplegable.
- Elija Seleccionar entre las suscripciones de Azure
- Escriba Salida para el nombre del alias y presione ENTRAR. Este nombre de salida se usa en la instrucción INTO de la consulta.
- En el editor JSON de Output.json, elija Seleccionar entre las suscripciones y, a continuación, seleccione la suscripción de Azure que tenga la cuenta de Azure Storage
- Si necesita cambiar la cuenta de almacenamiento que se rellena automáticamente, elija Seleccionar una cuenta de almacenamiento y, a continuación, seleccione la cuenta de Azure Storage. Los nombres de cuenta de almacenamiento se detectan automáticamente si se crean en la misma suscripción.
- Si necesita cambiar el nombre del contenedor, elija Seleccionar un contenedor y seleccione el contenedor de blobs que creó.
Compilación del script y envío a Azure
La compilación del script comprueba la sintaxis y genera las plantillas de Azure Resource Manager para la implementación automática.
Haga clic con el botón derecho en el archivo de script en la ventana del explorador, seleccione ASA: compilar script y, a continuación, seleccione ASA: plantilla de ARM V2 (recomendado).
Tras la compilación, verá una carpeta Deploy en el proyecto con dos plantillas de Azure Resource Manager. Estos dos archivos se usan para la implementación automática.
Seleccione Enviar a Azure en el editor de consultas.
En la ventana Enviar, siga estos pasos:
Seleccione la suscripción de Azure.
Seleccione un grupo de recursos de Azure.
Seleccione la región donde desea crear el trabajo de Stream Analytics.
Seleccione Enviar.
Seleccione Publicar en Azure y complete. Espere a que se abra una nueva pestaña de Cloud Job View (Vista de trabajo en la nube) donde se muestra el estado del trabajo.
Inicio del trabajo de Stream Analytics y consulta de la salida
En la pestaña Cloud Job View (Vista de trabajo en la nube), seleccione Iniciar para ejecutar el trabajo en la nube.
En la ventana Iniciar trabajo de streaming, seleccione Aceptar. Este proceso puede tardar unos minutos en completarse.
Si el trabajo se inicia correctamente, su estado cambia a En ejecución. Puede ver un diagrama lógico en el que se muestra cómo se está ejecutando el trabajo de ASA.
Para ver los resultados de salida, puede abrir el almacenamiento de blobs en la extensión de Visual Studio Code o en Azure Portal.
Descargue y abra el archivo para ver la salida.
{"messageId":11,"deviceId":"Raspberry Pi Web Client","temperature":28.165519323167562,"humidity":76.875393581654379,"EventProcessedUtcTime":"2022-09-01T22:53:58.1015921Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:52:57.6250000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:52:57.6290000Z"}} {"messageId":14,"deviceId":"Raspberry Pi Web Client","temperature":29.014941877871451,"humidity":64.93477299527828,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:03.6100000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:03.6140000Z"}} {"messageId":17,"deviceId":"Raspberry Pi Web Client","temperature":28.032846241745975,"humidity":66.146114343897338,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:19.5960000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:19.5830000Z"}} {"messageId":18,"deviceId":"Raspberry Pi Web Client","temperature":30.176185593576143,"humidity":72.697359909427419,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:21.6120000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:21.6140000Z"}} {"messageId":20,"deviceId":"Raspberry Pi Web Client","temperature":27.851894248213021,"humidity":71.610229530268214,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:25.6270000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:25.6140000Z"}} {"messageId":21,"deviceId":"Raspberry Pi Web Client","temperature":27.718624694772238,"humidity":66.540445035685153,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:48.0820000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:48.0830000Z"}} {"messageId":22,"deviceId":"Raspberry Pi Web Client","temperature":27.7849054424326,"humidity":74.300662748167085,"EventProcessedUtcTime":"2022-09-01T22:54:09.3393532Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:54:09.2390000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:54:09.2400000Z"}} {"messageId":28,"deviceId":"Raspberry Pi Web Client","temperature":30.839892925680324,"humidity":76.237611741451786,"EventProcessedUtcTime":"2022-09-01T22:54:47.8053253Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:54:47.6180000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:54:47.6150000Z"}} {"messageId":29,"deviceId":"Raspberry Pi Web Client","temperature":30.561040300759053,"humidity":78.3845172058103,"EventProcessedUtcTime":"2022-09-01T22:54:49.8070489Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:54:49.6030000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:54:49.5990000Z"}} {"messageId":31,"deviceId":"Raspberry Pi Web Client","temperature":28.163585438418679,"humidity":60.0511571297096,"EventProcessedUtcTime":"2022-09-01T22:55:25.1528729Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:55:24.9050000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:55:24.9120000Z"}} {"messageId":32,"deviceId":"Raspberry Pi Web Client","temperature":31.00503387156985,"humidity":78.68821066044552,"EventProcessedUtcTime":"2022-09-01T22:55:43.2652127Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:55:43.0480000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:55:43.0520000Z"}}
Limpieza de recursos
Cuando no los necesite, elimine el grupo de recursos, el trabajo de Stream Analytics y todos los recursos relacionados. La eliminación del trabajo evita la facturación de las unidades de streaming utilizadas por el trabajo. Si piensa utilizar el trabajo en el futuro, puede detenerlo y volver a iniciarlo más adelante cuando sea necesario. Si no va a seguir usando este trabajo, siga estos pasos para eliminar todos los recursos creados en este inicio rápido:
En el menú de la izquierda de Azure Portal, seleccione Grupos de recursos y después el nombre del recurso que ha creado.
En la página del grupo de recursos, seleccione Eliminar. En el cuadro de texto, escriba el nombre del recurso que desea eliminar y, después, seleccione Eliminar.
Pasos siguientes
Para obtener más información sobre la extensión Azure Stream Analytics Tools para Visual Studio Code, consulte los artículos siguientes: