Tutorial: Escritura de una función de C# definida por el usuario para un trabajo de Azure Stream Analytics (Versión preliminar)
Importante
Las funciones definidas por el usuario de .Net Standard para Azure Stream Analytics se retirarán el 30 de septiembre de 2024. Después de esa fecha, no será posible usar la característica. Realice la transición a funciones definidas por el usuario de JavaScript para Azure Stream Analytics.
Las funciones definidas por el usuario de C# (UDF) creadas en Visual Studio le permiten ampliar el lenguaje de consulta de Azure Stream Analytics con sus propias funciones. Puede reutilizar el código existente (incluidos los archivos DLL) y usar lógica compleja o matemática con C#. Hay tres maneras de implementar las UDF:
- Archivos CodeBehind en un proyecto de Stream Analytics
- UDF de un proyecto de C# local
- UDF de un paquete existente de una cuenta de almacenamiento.
En este tutorial se utiliza el método CodeBehind para implementar una función de C# básica. La característica UDF para trabajos de Stream Analytics está actualmente en versión preliminar y no debe usarse en las cargas de trabajo de producción.
En este tutorial, aprenderá a:
- Crear una función de definidos por el usuario de C# mediante CodeBehind.
- Probar el trabajo de Stream Analytics localmente.
- Publicar un trabajo en Azure.
Requisitos previos
Antes de empezar, asegúrese de que cumple los siguientes requisitos previos:
- Si no tiene una suscripción a Azure, cree una cuenta gratuita.
- Instale las herramientas de Stream Analytics para Visual Studio y las cargas de trabajo de desarrollo de Azure o de almacenamiento y procesamiento de datos.
- Eche un vistazo a la guía de desarrollo de Stream Analytics Edge existente si va a crear un trabajo de IoT Edge.
Creación de un contenedor en una cuenta de Azure Storage
El contenedor creado se usa para almacenar el paquete compilado C#. Si crea un trabajo de Edge, esta cuenta de almacenamiento también se usa para implementar el paquete en el dispositivo IoT Edge. Use un contenedor dedicado para cada trabajo de Stream Analytics. No se admite la reutilización del mismo contenedor para varios trabajos de Stream Analytics en dispositivos perimetrales. Si ya tiene una cuenta de almacenamiento con los contenedores existentes, puede usarlos. De lo contrario, tendrá que crear un nuevo contenedor.
Creación de un proyecto de Stream Analytics en Visual Studio
Inicie Visual Studio.
Seleccione Archivo> Nuevo > Proyecto.
En la lista de plantillas de la izquierda, seleccione Stream Analytics y Aplicación de Azure Stream Analytics Edge o Aplicación de Azure Stream Analytics.
Escriba el nombre del proyecto, la ubicación y el nombre de la solución y seleccione Aceptar.
Configuración de la ruta de acceso de un paquete de ensamblado
Abra Visual Studio y vaya al Explorador de soluciones.
Haga doble clic en el archivo de configuración de trabajos,
JobConfig.json
.Expanda la sección Configuración de código definido por el usuario y rellene la configuración con los siguientes valores sugeridos:
Configuración Valor sugerido Recurso de configuración de almacenamiento global Selección del origen de datos desde la cuenta actual Suscripción de configuración de almacenamiento global < su suscripción > Cuenta de almacenamiento de la configuración de almacenamiento global < su cuenta de almacenamiento > Recurso de configuración de almacenamiento de código personalizado Selección del origen de datos desde la cuenta actual Cuenta de almacenamiento de configuración de almacenamiento de código personalizado < su cuenta de almacenamiento > Contenedor de configuración de almacenamiento de código personalizado < su contenedor de almacenamiento >
Escritura de un UDF de C# con CodeBehind
Un archivo CodeBehind es un archivo de C# asociado con un script de consulta de ASA individual. Las herramientas de Visual Studio comprimen automáticamente el archivo CodeBehind y lo cargarán en su cuenta de Azure Storage tras el envío. Todas las clases deben definirse como pública y los objetos deben definirse como público estático.
En el Explorador de soluciones, expanda Script.asql para buscar el archivo CodeBehind Script.asaql.cs.
Reemplace el código por el del ejemplo siguiente:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace ASAEdgeUDFDemo { public class Class1 { // Public static function public static Int64 SquareFunction(Int64 a) { return a * a; } } }
Implementación de UDF
En el Explorador de soluciones, abra el archivo Script.asaql.
Reemplace la consulta existente por la consulta siguiente:
SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint)) INTO Output FROM Input
Pruebas locales
Descargue el archivo de datos de ejemplo del simulador de temperatura.
En el Explorador de soluciones, expanda Inputs, haga clic con el botón derecho en Input.jsony seleccione Agregar entrada local.
Especifique la ruta de acceso del archivo de entrada local para los datos de ejemplo que descargó y haga clic en Guardar.
Haga clic en Ejecutar localmente en el editor de scripts. Una vez que la ejecución local haya guardado correctamente los resultados de la salida, presione cualquier tecla para ver los resultados en formato de tabla.
También puede seleccionar Abrir la carpeta de resultados para ver los archivos sin formato en formato CSV y JSON.
Depuración de una UDF
Los UDF de C# se pueden depurar localmente de la misma manera que el código de C# estándar.
Agregue puntos de interrupción a la función de C#.
Pulse F5 para iniciar la depuración. El programa se detiene en los puntos de interrupción según lo previsto.
Publicación de un trabajo en Azure
Una vez que haya probado una consulta localmente, seleccione Enviar a Azure en el editor de scripts para publicar el trabajo en Azure.
Implementación en dispositivos de IoT Edge
Si decide compilar un trabajo de Stream Analytics Edge, ahora se puede implementar como un módulo de IoT Edge. Siga la guía de inicio rápido de IoT Edge para crear una instancia de IoT Hub, registrar un dispositivo de IoT Edge e instalar e iniciar el runtime de IoT Edge en el dispositivo. A continuación, siga el tutorial de implementación del trabajo para implementar el trabajo de Stream Analytics como un módulo de IoT Edge.
Pasos siguientes
En este tutorial, ha creado una función simple definida por el usuario de C# mediante CodeBehind, ha publicado un trabajo en Azure y lo ha implementado en el dispositivo de IoT Edge o Azure.
Para más información acerca de las distintas formas de usar funciones definidas por el usuario de C# para los trabajos de Stream Analytics, continúe en este artículo: