Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Cuando las funciones definidas por el usuario (UDF) no funcionan como se espera, es necesario depurarlas para encontrar el problema. Puede depurar las UDF de los trabajos de Stream Analytics al ejecutar los trabajos localmente mediante Visual Studio Code o Visual Studio.
Cuando se ejecuta el trabajo en un flujo de entrada activo de forma local, solo se imita la ejecución del motor de Azure Stream Analytics en la nube en un nodo. Las pruebas locales de datos activos no pueden reemplazar las pruebas de rendimiento y escalabilidad que se realizan en la nube, pero puede ahorrar tiempo durante las pruebas funcionales al no tener que enviar el trabajo a la nube cada vez que quiera probarlo. Además, las directivas de tiempo se deshabilitan para la ejecución local con datos de ejemplo o locales, pero se admiten para las pruebas de datos activos.
Selección del lenguaje
Puede escribir UDF para Azure Stream Analytics con .NET (C#) o JavaScript.
Funciones en C#
Al escribir UDF de .NET con Visual Studio, obtendrá el mismo nivel de compatibilidad que para cualquier proyecto de clase de .NET. Esta compatibilidad incluye:
Compatibilidad con la compilación, como comprobación de sintaxis y compatibilidad con el compilador.
Capacidad de agregar y compilar artefactos y proyectos de C# y hacer referencia a estos en la solución de Stream Analytics.
Reutilización sencilla del código encapsulado en un proyecto que se puede compartir.
Compatibilidad con la depuración directamente en Visual Studio. Establezca el proyecto de Stream Analytics como proyecto de inicio y establezca puntos de interrupción en código de C#. Luego, presione F5 para depurar el código de C# como haría con cualquier otro proyecto de C#.
Funciones en JavaScript
JavaScript es otra opción para crear funciones en Stream Analytics. El código de JavaScript se coloca directamente en el área de función del proyecto de Stream Analytics, lo que dificulta el uso compartido entre los proyectos.
La compilación se produce cuando se compila o se ejecuta el proyecto de Stream Analytics. La posibilidad de detectar un problema solo en tiempo de ejecución es mayor. No hay compatibilidad con la depuración de las funciones de JavaScript directamente en Stream Analytics.
Opciones de depuración de JavaScript
Dado que no hay compatibilidad con la depuración de las funciones de JavaScript directamente en Stream Analytics, puede realizar la depuración si encapsula la función en un sitio HTML y obtiene la salida desde allí.
En el ejemplo siguiente se muestra cómo se depuran UDF de JavaScript con algunas limitaciones en un entorno de ejecución integrado en Visual Studio Code.
Requisitos previos
Antes de empezar, asegúrese de que el proyecto de Azure Stream Analytics tenga los siguientes elementos:
- Una entrada
- Una salida
- Una consulta de Stream Analytics (.asaql)
- Una configuración de trabajos de Stream Analytics (JobConfig.json)
- Una UDF de JavaScript
Preparación de los archivos
En la imagen siguiente, el archivo de consulta .asaql incluye solo la llamada a la UDF (fxcharCount). Este cambio garantiza que siga pudiendo compilar el proyecto después de que se realicen cambios.
Cree una carpeta adicional en Tests (Prueba) para hospedar el archivo de prueba, al que se llama para ejecutar la prueba con la función de JavaScript. En este ejemplo, el nombre de la carpeta es fxcharCount y el nombre de la prueba es Test_UDF.js.
En la imagen siguiente se muestra el código del archivo de prueba, que carga el archivo de función y ejecuta la función. Este ejemplo es sencillo, pero podría cargar archivos de datos de prueba adicionales y recorrer en bucle otras pruebas para obtener la salida. La notación de la llamada de función es ligeramente diferente de las llamadas comunes, ya que se hace referencia al archivo y no se carga en el entorno de ejecución, lo que hace posible la depuración.
En la función, agregue las siguientes líneas de código al archivo para exponer los métodos. No afectan a la capacidad de compilar el código en Visual Studio Code.
var methods = {};
methods.fxchartCount = fxchartCount;
exports.data = methods;
Instalación de compatibilidad con la depuración
Para depurar, debe descargar e instalar node.js. Instale la versión correcta en función de la plataforma que use. Después de instalar el entorno de ejecución de Node.js, reinicie Visual Studio Code para implementar los cambios.
Seleccione Run and Debug (Ejecutar y depurar) o presione CTRL+Mayús+D para iniciar la depuración. Aparece un cuadro combinado en el que puede seleccionar node.js como entorno de ejecución. Si solo tiene instalado Node.js, se usa de forma predeterminada. Si es necesario, debería poder avanzar paso a paso por el código hasta el archivo satélite con F11.
Depuración de agregados definidos por el usuario
Puede usar el método de depuración de las UDF de JavaScript para depurar agregados definidos por el usuario (UDA). En este ejemplo, se agrega un UDA al archivo de consulta .asaql y al archivo de prueba.
Al igual que con la UDF, debe incluir una llamada al UDA para asegurarse de que el proyecto se compile una vez que se hayan realizado los cambios.
En el archivo Test_UDA.js, haga referencia al archivo de UDA como hizo con la UDF. Además, llame a main(), init() y accumulate(). Se llama al método accumulate() en un bucle para colocar los valores en la pila de estado. Se llama al método computeresult() para crear la consulta final.
Como en el ejemplo de UDF, es necesario agregar código al UDA para exponer los métodos pertinentes.
var methods = {};
methods.main = main;
methods.init = main.init;
methods.accumulate = main.accumulate;
methods.computeResult = main.computeResult;
exports.data = methods;
Seleccione Run and Debug (Ejecutar y depurar) o presione CTRL+Mayús+D para iniciar la depuración. Aparece un cuadro combinado en el que puede seleccionar node.js como entorno de ejecución. Si solo tiene instalado Node.js, se usa de forma predeterminada. Si es necesario, debería poder avanzar paso a paso por el código hasta el archivo satélite con F11.