Con NRQL, puede ejecutar un subquery, que es una consulta anidada dentro de otra consulta. Una subconsulta es una consulta anidada dentro de otra consulta: le permiten utilizar el resultado de una consulta en otra consulta. Con subconsultas, puedes:
- Realizar cálculos sobre las entidades hijas de una entidad matriz.
- Consulte el registro de errores para hosts con alta carga de CPU según la utilización de CPU del agente de infraestructura
En NRQL, las subconsultas pueden aparecer en la declaración SELECT
y en la cláusula WHERE
.
Aquí hay una consulta de ejemplo para obtener un recuento de transacciones con una duración superior al promedio:
SELECT count(*) FROM Transaction WHERE duration > (SELECT average(duration) FROM Transaction)
Los resultados de una subconsulta deben tener sentido en contexto. En el ejemplo anterior, la condición mayor que en la cláusula WHERE
requiere una subconsulta que devuelva un valor único. Una subconsulta que devuelva un conjunto de valores (por ejemplo, una subconsulta uniques()
) fallaría.
También puede anidar una subconsulta dentro de otra subconsulta. NRQL permite un máximo de tres subconsultas, anidadas o no, dentro de una única consulta.
El rango de tiempo de la subconsulta será el mismo que el de la consulta externa, a menos que se especifique explícitamente con SINCE
/UNTIL
. En un panel, al elegir una ventana del selector de tiempo , se alinea el rango de tiempo de la subconsulta con el de la consulta externa. Si ha configurado Ignore Time Picker para ese gráfico, entonces el rango de tiempo de la subconsulta y el rango de tiempo de la consulta externa no serán los mismos.
Ejecución de subconsulta
Durante la ejecución de la consulta, cada subconsulta se ejecuta de forma independiente y su resultado se utiliza como un valor constante o conjunto de valores en la consulta externa. Debido a este modelo de ejecución, es posible que las subconsultas no hagan referencia a atributos y valores de la consulta externa.
El límite de duración de la consulta se respeta para consultas con subconsultas. Esto significa que todas las subconsultas y la consulta externa deben completar la ejecución dentro del límite de duración.
El número máximo de resultados que puede devolver una subconsulta es el mismo que el valorLIMIT MAX
: 5000. Cuando se excede ese límite, es posible que se obtengan resultados incompletos y este mensaje de error: "La subconsulta puede haber alcanzado el límite máximo de miembros de resultados, lo que puede provocar un resultado incompleto".
Subconsultas y agregación anidada
Aunque parecen similares, las subconsultas son diferentes de las agregaciones anidadas, que permiten agregar el resultado de una consulta anidada. Las agregaciones anidadas se utilizan en la cláusula FROM
, mientras que las subconsultas se utilizan en la declaración SELECT
y la cláusula WHERE
.
Límites
- Las subconsultas no son compatibles con las reglas de condición de alerta o evento a métrica (E2M) NRQL. Debido a que la consulta con subconsultas requiere realizar múltiples pases sobre los datos, las subconsultas son incompatibles con las alertas de transmisión u otros productos basados en el procesamiento de datos de transmisión.
- Las cláusulas
TIMESERIES
yCOMPARE WITH
, que hacen que consulta devuelva múltiples conjuntos de resultados, no se admiten en subconsultas. - Las subconsultas no pueden aparecer en la cláusula
FACET
, aunque pueden aparecer en las cláusulasWHERE
utilizadas enFACET CASES
. - Tiene límites en el número de resultados.
Ejemplos de subconsultas
Aquí hay algunos ejemplos de subconsultas: