Com NRQL, você pode executar um subquery, que é uma consulta aninhada dentro de outra consulta. Uma subconsulta é uma consulta aninhada dentro de outra consulta: elas permitem que você use o resultado de uma consulta em outra consulta. Com subconsultas, você pode:
- Realizar cálculos nas entidades filhas de uma entidade controladora
- Consulte o log de erros para hosts com alta carga de CPU com base na utilização de CPU do agente de infraestrutura
No NRQL, as subconsultas podem aparecer na instrução SELECT
e na cláusula WHERE
.
Aqui está um exemplo de consulta para obter uma contagem de transações com duração acima da média:
SELECT count(*) FROM Transaction WHERE duration > (SELECT average(duration) FROM Transaction)
Os resultados de uma subconsulta devem fazer sentido no contexto. No exemplo acima, a condição maior que na cláusula WHERE
requer uma subconsulta que retorne um único valor. Uma subconsulta que retorna um conjunto de valores (por exemplo, uma subconsulta uniques()
) falharia.
Você também pode aninhar uma subconsulta dentro de outra subconsulta. NRQL permite no máximo três subconsultas, aninhadas ou não aninhadas, em uma única consulta.
O intervalo de tempo da subconsulta será igual ao da consulta externa, a menos que seja explicitamente especificado com SINCE
/UNTIL
. Em um painel, escolher uma janela no seletor de hora alinha o intervalo de tempo da subconsulta com o da consulta externa. Se você definiu Ignore Time Picker para esse gráfico, o intervalo de tempo da subconsulta e o intervalo de tempo da consulta externa não serão iguais.
Execução de subconsulta
Durante a execução da consulta, cada subconsulta é executada de forma independente e seu resultado é usado como um valor constante, ou conjunto de valores, na consulta externa. Devido a este modelo de execução, as subconsultas não podem referenciar atributos e valores da consulta externa.
O limite de duração da consulta é respeitado para consultas com subconsultas. Isso significa que todas as subconsultas e a consulta externa devem concluir a execução dentro do limite de duração.
O número máximo de resultados que uma subconsulta pode retornar é igual ao valorLIMIT MAX
: 5.000. Quando esse limite é excedido, isso pode resultar em resultados incompletos e nesta mensagem de erro: "A subconsulta pode ter atingido o limite máximo de membros de resultado, o que pode causar um resultado incompleto."
Subconsultas e agregação aninhada
Embora pareçam semelhantes, as subconsultas são diferentes das agregações aninhadas, que permitem a agregação do resultado de uma consulta aninhada. Agregações aninhadas são usadas na cláusula FROM
, enquanto subconsultas são usadas na instrução SELECT
e na cláusula WHERE
.
Limites
- Subconsultas não são suportadas em regras NRQL condição do alerta ou evento para métricas (E2M). Como a consulta com subconsultas exige múltiplas passagens pelos dados, as subconsultas são incompatíveis com alertas de streaming ou outros produtos baseados em processamento de dados de streaming.
- As cláusulas
TIMESERIES
eCOMPARE WITH
, que fazem com que a consulta retorne vários conjuntos de resultados, não são suportadas em subconsultas. - As subconsultas não podem aparecer na cláusula
FACET
, embora possam aparecer nas cláusulasWHERE
usadas emFACET CASES
. - Tem limites no número de resultados
Exemplos de subconsulta
Aqui estão alguns exemplos de subconsultas: