Solución de problemas en las consultas de Azure Stream Analytics

En este artículo se describen problemas comunes con el desarrollo de consultas a Stream Analytics y cómo solucionarlos.

En este artículo se describen los problemas comunes relacionados con el desarrollo de consultas de Azure Stream Analytics, cómo solucionar problemas con las consultas y cómo corregir estos problemas. Muchos pasos para solucionar problemas requieren que los registros de recursos estén habilitados para el trabajo de Stream Analytics. Si los registros de recursos no están habilitados, vea Solución de problemas de Azure Stream Analytics mediante registros de recursos.

La consulta no produce el resultado esperado

  1. Examine los errores mediante la comprobación local:

  2. Depure las consultas paso a paso localmente mediante un diagrama de trabajo con las herramientas de Azure Stream Analytics para Visual Studio Code. El diagrama de trabajos muestra cómo fluyen los datos de los orígenes de entrada (centro de eventos, IoT Hub, etc.) por varios pasos de consulta y, por último, a los receptores de salida. Cada paso de la consulta se asigna a un conjunto de resultados temporal definido en el script mediante la instrucción WITH. Puede ver los datos, así como las métricas, en cada uno de los conjuntos de resultados intermedios para encontrar el origen del problema.

    Job diagram preview result

  3. Si usa Marca de tiempo por, asegúrese de que los eventos tengan marcas de tiempo mayores que la hora de inicio del trabajo.

  4. Elimine los errores comunes, como:

    • Una cláusula WHERE en la consulta filtrada por todos los eventos, que impide que se genere alguna salida.
    • Un error de una función CAST, que provoca que el trabajo no se realice. Para evitar errores de conversión de tipo, utilice TRY_CAST en su lugar.
    • Cuando use funciones de ventana, espere la duración entera de la ventana para ver una salida de la consulta.
    • La marca de tiempo de los eventos es anterior a la hora de inicio del trabajo y los eventos se descartan.
    • Las condiciones JOIN no coinciden. Si no hay ninguna coincidencia, no habrá resultados.
  5. Asegúrese de que las directivas de ordenación de eventos están configuradas según lo previsto. Vaya a Configuración y seleccione Ordenación de eventos. La directiva no se aplica cuando usa el botón Probar para probar la consulta. El resultado es una diferencia entre probar en el explorador frente a ejecutar el trabajo de producción.

  6. Use registros de recursos y actividad para la depuración:

El uso de recursos es alto

Asegúrese de estar aprovechando la paralelización en Azure Stream Analytics. Puede aprender a escalar con la paralelización de consultas de los trabajos de Stream Analytics mediante la configuración de particiones de entrada y el ajuste de la definición de consultas de análisis.

Si el uso de recursos es constantemente superior al 80 % y tanto el retraso de la marca de agua como el número de eventos retrasados aumenta, considere la posibilidad de aumentar las unidades de streaming. Una alta utilización indica que el trabajo está usando casi el máximo de recursos asignados.

Depuración gradual de consultas

En el procesamiento de datos en tiempo real, puede ser útil conocer qué aspecto tendrán los datos en el medio de la consulta. Puede verlo mediante el diagrama de trabajos de Visual Studio. Si no tiene Visual Studio, puede seguir otros pasos para generar datos intermedios.

Como las entradas o pasos de un trabajo de Azure Stream Analytics se pueden leer muchas veces, puede escribir instrucciones SELECT INTO adicionales. Si lo hace, se generan daros intermedios en el almacenamiento y puede inspeccionar la integridad de los datos, igual que hacen las variables de inspección cuando se depura un programa.

La siguiente consulta de ejemplo en un trabajo de Azure Stream Analytics tiene una entrada de secuencias, dos entradas de datos de referencia y una salida a Azure Table Storage. La consulta combina datos del centro de eventos y dos blobs de referencia para obtener la información de nombre y categoría:

Example Stream Analytics SELECT INTO query

Tenga en cuenta que el trabajo está en ejecución, pero no se genera ningún evento en la salida. En el icono Supervisión, que se muestra aquí, puede ver que la entrada genera datos, pero no sabe qué paso de la cláusula JOIN ha hecho que se descarten todos los eventos.

The Stream Analytics Monitoring tile

En esta situación, puede agregar unas cuantas instrucciones SELECT INTO adicionales para "registrar" los resultados intermedios de JOIN y los datos que se leen de la entrada.

En este ejemplo, hemos agregado dos nuevas "salidas temporales", que pueden ser cualquier receptor que quiera. Aquí usamos Azure Storage como ejemplo:

Adding extra SELECT INTO statements to Stream Analytics query

A continuación, puede volver a escribir la consulta del modo siguiente:

Rewritten SELECT INTO Stream Analytics query

Ahora, inicie de nuevo el trabajo y deje que se ejecute durante unos minutos. A continuación, consulte temp1 y temp2 con Visual Studio Cloud Explorer para generar las siguientes tablas:

Tabla temp1SELECT INTO temp1 table Stream Analytics query

Tabla temp2SELECT INTO temp2 table Stream Analytics query

Como puede ver, temp1 y temp2 tienen ambas datos, y la columna de nombre está rellenada correctamente en temp2. Sin embargo, dado que todavía no hay ningún dato en la salida, algo sucede:

SELECT INTO output1 table with no data Stream Analytics query

Mediante el muestreo de los datos, puede estar casi seguro de que el problema está relacionado con la segunda cláusula JOIN. Puede descargar los datos de referencia del blob y echar un vistazo:

SELECT INTO ref table Stream Analytics query

Como puede ver, el formato del GUID en los datos de esta referencia es distinto del formato de la columna [from] en temp2. Por eso los datos no llegan a output1 como estaba previsto.

Puede corregir el formato de datos, cargarlo para que haga referencia al blob e intentarlo de nuevo:

SELECT INTO temp table Stream Analytics query

Esta vez, los datos en la salida tienen el formato adecuado y se han rellenado según lo previsto.

SELECT INTO final table Stream Analytics query

Obtener ayuda

Para más ayuda, pruebe nuestra página de preguntas y respuestas de Microsoft sobre Azure Stream Analytics.

Pasos siguientes