Compartir a través de


Funciones definidas por el usuario en Azure Stream Analytics

El lenguaje de consulta similar a SQL en Azure Stream Analytics facilita la implementación de lógica de análisis en tiempo real en los datos de streaming. Stream Analytics proporciona flexibilidad adicional a través de funciones personalizadas que se invocan en la consulta. El ejemplo de código siguiente es una UDF denominada sampleFunction que acepta un parámetro, cada registro de entrada que recibe el trabajo y el resultado se escribe en la salida como sampleResult.

SELECT 
    UDF.sampleFunction(InputStream) AS sampleResult 
INTO 
    output 
FROM 
    InputStream 

Tipos de funciones

Azure Stream Analytics admite los cuatro tipos de función siguientes:

  • Funciones definidas por el usuario de JavaScript
  • Agregados definidos por el usuario de JavaScript
  • Funciones definidas por el usuario de C# (mediante Visual Studio)
  • Azure Machine Learning

Puede usar estas funciones para escenarios como la puntuación en tiempo real mediante modelos de aprendizaje automático, manipulaciones de cadenas, cálculos matemáticos complejos, codificación y descodificación de datos.

Importante

Las funciones definidas por el usuario de C# 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.

Limitaciones

Las funciones definidas por el usuario no tienen estado y el valor devuelto solo puede ser un valor escalar. No puede llamar a puntos de conexión REST externos desde estas funciones definidas por el usuario, ya que probablemente afectará al rendimiento del trabajo.

Azure Stream Analytics no mantiene un registro de todas las invocaciones de funciones ni de los resultados devueltos. Para garantizar la repetibilidad( por ejemplo, volver a ejecutar el trabajo desde la marca de tiempo anterior produce de nuevo los mismos resultados: no use funciones como Date.GetData() o Math.random(), ya que estas funciones no devuelven el mismo resultado para cada invocación.

Registros de recursos

Los errores en tiempo de ejecución se consideran irrecuperables y se muestran a través de los registros de actividad y recursos. Se recomienda que la función controle todas las excepciones y errores y devuelva un resultado válido a la consulta. Esto impedirá que el trabajo vaya a un estado fallido.

Control de excepciones

Cualquier excepción durante el procesamiento de datos se considera un error catastrófico al consumir datos en Azure Stream Analytics. Las funciones definidas por el usuario tienen un mayor potencial para producir excepciones y hacer que el procesamiento se detenga. Para evitar este problema, use un bloque try-catch en JavaScript o C# para detectar excepciones durante la ejecución del código. Las excepciones detectadas se pueden registrar y tratar sin provocar un error del sistema. Se recomienda que siempre envuelva su código personalizado en un bloque try-catch para evitar lanzar excepciones inesperadas al motor de procesamiento.

Pasos siguientes