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:

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

  1. Inicie Visual Studio.

  2. Seleccione Archivo> Nuevo > Proyecto.

  3. 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.

  4. Escriba el nombre del proyecto, la ubicación y el nombre de la solución y seleccione Aceptar.

    Create an Azure Stream Analytics Edge project in Visual Studio

Configuración de la ruta de acceso de un paquete de ensamblado

  1. Abra Visual Studio y vaya al Explorador de soluciones.

  2. Haga doble clic en el archivo de configuración de trabajos, JobConfig.json.

  3. 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.

  1. En el Explorador de soluciones, expanda Script.asql para buscar el archivo CodeBehind Script.asaql.cs.

  2. 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

  1. En el Explorador de soluciones, abra el archivo Script.asaql.

  2. 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

  1. Descargue el archivo de datos de ejemplo del simulador de temperatura.

  2. En el Explorador de soluciones, expanda Inputs, haga clic con el botón derecho en Input.jsony seleccione Agregar entrada local.

    Add local input to Stream Analytics job in Visual Studio

  3. Especifique la ruta de acceso del archivo de entrada local para los datos de ejemplo que descargó y haga clic en Guardar.

    Local input configuration for Stream Analytics job in Visual Studio

  4. 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.

    Run Azure Stream Analytics job locally with Visual Studio

  5. También puede seleccionar Abrir la carpeta de resultados para ver los archivos sin formato en formato CSV y JSON.

    View results of local Azure Stream Analytics job with Visual Studio

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.

  1. Agregue puntos de interrupción a la función de C#.

    Add breakpoints to Stream Analytics user-defined function in Visual Studio

  2. Pulse F5 para iniciar la depuración. El programa se detiene en los puntos de interrupción según lo previsto.

    View Stream Analytics user-defined function debugging results

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.

Submit your Stream Analytics Edge job to Azure from Visual Studio

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: