• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Controla tus datos con NRQL

|View as Markdown (English)

En el primer tutorial de NRQL, exploramos los fundamentos de la creación de consultas. Cubrimos la estructura básica de la consulta, la definición de ventanas de tiempo y cómo seleccionar atributos específicos para observar. También aprendimos a comenzar a agregar y mostrar datos mediante gráficos y otras visualizaciones.

En este tutorial, profundizaremos un poco más y exploraremos más funciones para crear agregaciones útiles. Aquí aprenderá a comparar los datos devueltos con períodos de tiempo anteriores y a agrupar los datos en ventanas de tiempo específicas. También encontrará aún más cosas que hacer con las funciones SINCE y UNTIL , y explorará el uso de comodines en los filtros. Específicamente, aprenderá cómo:

  • Consulta de valor único usando uniques(attributeName)
  • Determine cuántos valores únicos existen en un atributo usando uniqueCount(attributeName)
  • Recuperar el earliest(attributeName) y latest(attributeName) dentro de un período de tiempo específico
  • Calcular porcentajes en función de un calificador u otro punto de datos con percentile()
  • Realizar cálculos básicos utilizando atributos y funciones de agregación, o una combinación de ambos.
  • Transmitir nombres de atributos a algo personalizado y más legible
  • Buscar para incluir/excluir mediante comodines con LIKE o NOT LIKE, o limitar los resultados a aquellos IN una lista o NOT IN esa lista
  • Consulta dentro de ventanas de tiempo más avanzadas usando fechas, época y WITH TIMEZONE
  • Agrupar datos en ventanas de tiempo mediante cohortes basadas en el tiempo

¡Empecemos!

Funciones agregadas

Después de completar el primer tutorial de NRQL, ha utilizado count(), average(), sum(), max() y min() para transformar sus datos de manera significativa. Pero ¿qué sucede si desea encontrar y contar el valor único? Para encontrar la cantidad de valor único registrado para un atributo durante un rango de tiempo específico, puede usar la función uniqueCount(). Solo necesita proporcionar el atributo que queremos inspeccionar como argumento. Por ejemplo, aquí hay una consulta para mostrar todas las llamadas API públicas únicas:

SELECT uniqueCount(http.url)
FROM Public_APICall
SINCE 1 day ago
A screenshot displaying a query for aggregating functions

Para optimizar el rendimiento de la consulta, la función anterior devuelve resultados aproximados para consultas que inspeccionan más de 256 valores únicos. Para devolver la lista real de valor único para un atributo durante un rango de tiempo específico, podemos usar la función uniques() .

SELECT uniques(http.url)
FROM Public_APICall
SINCE 1 day ago

Para especificar un valor límite diferente al predeterminado de 1000, utilice uniques(attribute[,limit]), que acepta un máximo de 10 000.

Para recuperar el valor más reciente de un atributo durante un rango de tiempo específico, utilice la función latest() . En esta consulta de ejemplo, puede localizar el tiempo de respuesta más reciente para una llamada API en el último día. Esto podría ayudarle a localizar el valor más reciente para una transacción o servicio que informa de forma intermitente.

SELECT latest(duration)
FROM Public_APICall
WHERE awsAPI = 'sqs'
SINCE 1 day ago
A screenshot displaying a query for aggregating using the latest function

En el otro lado del espectro, podrías utilizar la función earliest() para lograr lo contrario. Devolverá el valor más antiguo de un atributo registrado en el rango de tiempo especificado. En esta consulta de ejemplo, puede recuperar el tiempo de respuesta más temprano para una llamada API en el último día. Si los datos se informan de manera consistente, esto informará el punto de datos del primer evento en las últimas 24 horas.

SELECT earliest(duration)
FROM Public_APICall
WHERE awsAPI = 'sqs'
SINCE 1 day ago
A screenshot displaying a query for aggregating using the earliest function

Es posible que necesite porcentajes en lugar de recuentos, sumas o promedios. Usar la función percentage() le permite calcular el porcentaje de un valor en el conjunto de datos que coincida con una condición especificada. Esta función toma dos argumentos: el primero es una función de agregador para el atributo deseado, como count(). El segundo es una condición WHERE para especificar el subconjunto de datos sobre el que desea realizar una consulta.

En esta consulta de ejemplo, puede encontrar el porcentaje de llamadas API durante el último día que tuvieron una duración (o tiempo de respuesta) superior a 100 milisegundos.

SELECT percentage(count(*), WHERE duration > 0.1)
FROM Public_APICall
SINCE 1 day ago
A screenshot displaying a query for aggregating using the where condition

Es muy común ver los datos del rendimiento de la aplicación o de la experiencia de los clientes utilizando percentiles en lugar de promedios. Puede utilizar la función percentile() para comprender la experiencia del percentil n.

Por ejemplo, digamos que desea saber cuál fue la peor experiencia (la mayor duración) del 98% de la experiencia de sus clientes durante el último día. Puede solicitar a NRDB percentile(duration, 98) de las últimas 24 horas.

SELECT percentile(duration,98)
FROM Public_APICall
SINCE 1 day ago
A screenshot displaying a query for aggregating using the percentile duration function

Como puede ver, la agregación le brinda un control flexible sobre sus datos. Puede usar uniqueCount() para contar las entradas únicas de un atributo en particular. Pero también podría usar esto para identificar un recuento de máquinas únicas, contenedores de informes o incluso cuántos puntos de datos personalizados envía a New Relic. Y, si desea saber qué valor único está disponible para la consulta, siempre puede solicitar una lista usando uniques().

Las funciones latest() y earliest() tienen un valor particular al tratar con datos dispersos, o al investigar cuándo algo comenzó o dejó de informar (asumiendo que New Relic aún almacena los datos). La función percentage() puede mostrarle qué porcentaje de eventos coincidió con un calificador en comparación con el conjunto de resultados general. Por último, puede usar percentile() como indicador de rendimiento clave al establecer un objetivo para garantizar que el 90 % de todas las transacciones del usuario final superen la duración proporcionada.

En el siguiente paso, aprenderá a hacer matemáticas básicas con NRQL.

Usa operadores matemáticos

NRQL admite operadores matemáticos básicos. Puede realizar sumas (+), restas (-), multiplicaciones (*) y divisiones (/) tanto en valores de atributo numéricos como en resultados de funciones de agregador.

Por ejemplo, capturamos tanto el tiempo de respuesta total (como duration) como el tiempo de respuesta de la base de datos (como databaseDuration) cuando registramos un evento de transacción. Pero ¿qué sucede si desea encontrar el tiempo promedio que se pasa fuera del procesamiento de la base de datos? Podría comenzar calculando ese valor para cada evento en el conjunto de datos utilizando una consulta como esta.

SELECT GigabytesIngestedBillable - GigabytesIngestedFree, metric
FROM NrMTDConsumption
WHERE productLine IS NOT NULL

¡Genial! Acaba de realizar algunas operaciones matemáticas básicas. Esto es útil para ayudarle a listar eventos individuales. Pero ¿qué pasa si desea conocer la duración promedio de las transacciones sin el tiempo de la base de datos? También puede realizar operaciones aritméticas dentro de la función:

SELECT average(GigabytesIngestedBillable - GigabytesIngestedFree)
FROM NrMTDConsumption
WHERE GigabytesIngestedBillable IS NOT NULL

Ahora, ¿qué pasaría si quisiera complicarse aún más restando, dividiendo y multiplicando en la misma consulta para calcular la duración sin el tiempo de la base de datos, como porcentaje del tiempo total? Bueno, puedes agregar las matemáticas:

SELECT average(GigabytesIngestedBillable - GigabytesIngestedFree) / unitPrice * 100
FROM NrMTDConsumption
WHERE GigabytesIngestedBillable IS NOT NULL

New Relic informa los tiempos como parte de sus eventos, por lo que puede usarlos para calcular puntos de datos o incluso generar resultados porcentuales. Puede ampliar esto aún más aplicando estos operadores matemáticos a acciones o eventos personalizados, o a datos personalizados que envíe a New Relic. Por ejemplo, una plataforma de comercio electrónico que informa datos sobre el tamaño de los pedidos y los métodos de pago podría usar las matemáticas para calcular cosas como la tasa de conversión de los pedidos frente a las visitas únicas de los clientes.

En el siguiente paso, aprenderá cómo usar NRQL para etiquetar su atributo.

Etiqueta atributo

A medida que comience a ejecutar funciones de NRQL más complejas, es posible que se pregunte si puede hacer que los nombres mostrados para los atributos de consulta sean más útiles, especialmente para quienes no conocen NRQL. Consideremos un ejemplo utilizando lo que aprendió en el tutorial anterior.

SELECT average(duration-externalDuration)
FROM Transaction

Puede usar la cláusula AS después de una función o atributo para darle al resultado un nombre más legible y significativo. Esto le ayuda a usted y a su equipo a comprender exactamente qué representa un gráfico.

SELECT average(duration-externalDuration)
AS 'Non-External Response Time'
FROM Transaction

Esto puede parecer meramente estético, pero cuando crea un dashboard detallado, es importante etiquetar claramente los datos. Esto deja clara la fuente de datos para cualquiera que vea los widgets, billboards, gráficos de líneas o tablas.

Volveremos a consultar esto en una próxima lección sobre agrupación para explorar cómo AS puede crear conjuntos de resultados limpios también en escenarios más avanzados. A continuación, aprenderá a comparar datos en diferentes períodos de tiempo.

Comparar ventanas de tiempo

A estas alturas ya tiene práctica en el uso de rangos de tiempo con cláusulas SINCE y UNTIL . Pero ¿qué pasa si quieres comparar valores de diferentes rangos de tiempo? Puedes lograr esto con la cláusula COMPARE WITH .

NRQL utiliza SINCE y UNTIL para definir un período de interés. Luego, puede indicar el período de tiempo con el que desea comparar utilizando una cláusula COMPARE WITH [time period] AGO que contenga un valor de compensación relativo.

Por ejemplo, en la consulta de ejemplo siguiente, puede comparar los datos del último día con los datos de la semana anterior utilizando un desplazamiento relativo de hace 1 semana.

SELECT average(duration)
FROM Public_APICall
SINCE 1 day ago
COMPARE WITH 1 week ago
A screenshot displaying a query using the compare with function

Para mapear la comparación de valores a lo largo del tiempo, agregue TIMESERIES. Esto crea un gráfico de líneas de la comparación, lo que le permite visualizar cómo se compara este período con los datos recientes y realizar un seguimiento a lo largo del tiempo.

SELECT average(duration)
FROM Public_APICall
SINCE 1 day ago
COMPARE WITH 1 week ago
TIMESERIES
A screenshot displaying a query using the compare with function using a time series

También puede especificar muchos períodos de tiempo relativos diferentes en el mismo formato, similar a UNTIL. Para instancia, puede especificar 4 WEEKS AGO o 6 HOURS AGO.

SELECT average(duration)
FROM Public_APICall
SINCE 1 hour ago
COMPARE WITH 6 hours ago
TIMESERIES
A screenshot displaying a query using the compare with function using a relative time series

Las comparaciones pueden responder rápidamente preguntas sobre lo que sucede en sus aplicaciones. ¿Los diferentes valores de ventas, rendimiento, MTTR o errores han subido o bajado en comparación con la semana pasada? Y, si está investigando un problema, le resultará útil comparar un período de rendimiento problemático con un período de rendimiento normal.

Usar filtros comodín

Ahora sabe cómo utilizar una cláusula WHERE para filtrar los resultados de nuestra consulta. Además de utilizar operadores de comparación estándar, también puede utilizar LIKE y NOT LIKE si desea saber si un atributo contiene o no una subcadena específica. Para lograr esto, puede utilizar el símbolo de porcentaje (%) como comodín en cualquier parte de la cadena.

En nuestra consulta de muestra, puede obtener la cantidad de transacciones con el término "amazonaws" en cualquier parte (al principio, en el medio o al final) del nombre.

SELECT count(*)
FROM Public_APICall
WHERE http.url
LIKE '%amazonaws%'
FACET http.url
SINCE 1 day ago
A screenshot displaying a query using a wildcard filter

Si cambia su consulta para usar NOT LIKE en su lugar, obtendrá la cantidad de transacciones que no contienen la palabra elegida (como "google", como se muestra a continuación) en su nombre.

SELECT count(*)
FROM Public_APICall
WHERE http.url NOT
LIKE '%google%'
FACET http.url
SINCE 1 day ago
A screenshot displaying a query using a Not like filter

Puede usar % como comodín al principio y al final, lo que significa que New Relic comprueba el valor del atributo que eligió si contiene el término, como "Web" en cualquier parte del texto. Igualmente, podría usar %Web O Web% para coincidir con algo que termina en "Web" o comienza con "Web", respectivamente.

También puede agregar comodines entre cadenas para una búsqueda más refinada. Esta consulta busca un nombre de transacción que contenga la palabra "amazon" seguida de cualquier texto, pero que también contenga el término ".com". seguido de cualquier número de caracteres. Entonces, los resultados solo serán transacciones con "amazon" y ".com" en el nombre.

SELECT count(*)
FROM Public_APICall
WHERE http.url NOT
LIKE '%amazon%.com'
FACET http.url
SINCE 1 day ago
A screenshot displaying a query using a % filter

¿Qué sucede si necesita una especificidad extrema y los nombres no tienen una cadena común que pueda coincidir mediante comodines? Los operadores IN y NOT IN le permiten especificar un conjunto de valores que le gustaría comparar con un atributo. En lugar de especificar varias cláusulas WHERE con operadores AND o OR , puede simplificar una condición enumerando los valores entre paréntesis separados por comas.

En esta consulta de ejemplo, puede contar el número de transacciones cuyo subtipo es "graph.microsoft.com" o "s3.amazonaws.com". Si cambia la consulta para usar NOT IN en su lugar, obtendrá el número de transacciones cuyo subtipo no es "graph.microsoft.com". ni "s3.amazonaws.com".

SELECT count(*)
FROM Public_APICall
WHERE http.url IN ('graph.microsoft.com', 's3.amazonaws.com')
SINCE 1 day ago
A screenshot displaying a query using an In filter

Ahora puede controlar sus datos y manipularlos para hacer lo que necesita, lo que le permite crear dashboards y alertas. A continuación, aprenderá a especificar rangos de tiempo utilizando NRQL.

Especificar rangos de tiempo

Las cláusulas SINCE y UNTIL hacen más que darle información sobre rangos de tiempo relativos: también puede proporcionarles una fecha u hora específica. En la siguiente consulta de muestra, puede usar una fecha SINCE en formato YYYY-MM-DD.

SELECT average(duration)
FROM Public_APICall SINCE '2023-10-28'
TIMESERIES MAX
A screenshot displaying a time range using since

Puede usar esto para crear informes de SLA para un período de tiempo específico. Incluso puede incluir una hora específica con el formato YYYY-MM-DD HH:MM. En esta consulta, puede ver que los datos están configurados a las 6 p. m.

SELECT average(duration)
FROM Public_APICall SINCE '2023-10-28 18:00'
TIMESERIES MAX
A screenshot displaying a specific time range using YYYY-MM-DD HH:MM

A veces puede recibir una hora de evento en tiempo epoch (unix). También puede usar timestamp epoch con las cláusulas SINCE y UNTIL para no tener que traducir manualmente estos valores a otro formato de fecha.

SELECT average(duration)
FROM Public_APICall SINCE 1698525489519 UNTIL 1698698289519
TIMESERIES MAX
A screenshot displaying a specific time range using unix

Cuando NRDB muestra datos durante un período de tiempo, asume que desea ver los datos desde la perspectiva de su zona horaria. Pero con equipos internacionales dispersos, tu hoy podría ser el mañana o el ayer de un compañero de equipo, dependiendo de su ubicación. Puede utilizar la cláusula WITH TIMEZONE para definir una zona horaria desde la que mostrar datos. Esto afecta la interpretación de los valores en las cláusulas SINCE y UNTIL .

Considere los dos cuadros de ejemplo a continuación. Cada consulta tiene una zona horaria especificada usando WITH TIMEZONE. Los dos están separados por 8 horas. Observe que el patrón de datos es el mismo, pero con un desplazamiento de 8 horas para alinearse con cada zona horaria respectiva:

SELECT count(*)
FROM Public_APICall
SINCE yesterday
UNTIL today WITH TIMEZONE 'America/Los_Angeles'
TIMESERIES
A screenshot displaying a specific time range using with timezone
SELECT count(*)
FROM Public_APICall
SINCE yesterday
UNTIL today WITH TIMEZONE 'Europe/London'
TIMESERIES
A screenshot displaying a specific time range using with the Europe/London timezone

Antes de esta lección, todos sus mecanismos de control de tiempo dependían de tiempos relativos desde ahora. Ahora, puede ajustar la vista dependiendo de la ubicación de alguien en el mundo. Tal vez un cliente en la Costa Este informe un problema a su equipo de ingeniería ubicado en la Costa Oeste. Su equipo puede crear un dashboard y traducir la vista para que coincida con la zona horaria que citaría un cliente. Por lo tanto, si un cliente informa un problema a las 9 a. m. en la Costa Este, puede asegurarse de que, al mirar a las 9 a. m., no tenga que traducir mentalmente la diferencia.

Cuando necesite centrarse en fechas específicas de un evento de alerta y quiera investigar los datos sin una ventana de tiempo móvil relativa a la hora actual, esto le ayudará a obtener datos en una ventana de tiempo estática. En la siguiente y última lección, continuará aprendiendo cómo utilizar el tiempo en sus reportes con cohortes basadas en el tiempo.

Utilice la agrupación en cohortes basada en el tiempo

Si bien puede parecer complejo, la creación de cohortes basada en el tiempo simplemente significa una forma de organizar datos en grupos basados en el tiempo como minuteOf, hourOf, weekOf y más.

Cuando usa la cláusula SINCE para duraciones, recupera toda la longitud de tiempo de la consulta. Pero ¡es posible que esos datos no siempre cuenten toda la historia! ¿Qué sucede si necesita analizar más de cerca el rendimiento en un período de tiempo? Con la agrupación por cohortes basada en el tiempo, puede clasificar aún más los datos en agrupaciones lógicas basadas en el tiempo.

Al utilizar una combinación de FACET y una de las muchas funciones basadas en el tiempo (como hourOf(timestamp)), puede tomar datos de una semana y comprender el rendimiento en función de la hora específica en la que ocurrió. Esto revela tendencias e identifica los momentos más críticos para su aplicación:

SELECT average(duration)
FROM Public_APICall
FACET hourOf(timestamp)
SINCE 1 week ago
A screenshot displaying the use of time-based cohorting using Facet and hour of functions

Después de ejecutar la consulta anterior, puede ver el tiempo de respuesta más lento según la hora del día. New Relic ofrece muchas opciones diferentes para desglosar según el tiempo. El ejemplo anterior agrupa por hora, pero también puede agrupar por día de la semana para determinar qué días tienen el mejor y el peor tiempo de respuesta.

SELECT average(duration)
FROM Public_APICall
FACET weekdayOf(timestamp)
SINCE 1 week ago
A screenshot displaying the use of time-based cohorting using Facet and weekday of functions

Ahora puedes ver los periodos más lentos de tu aplicación en cualquier día específico. Puede utilizar esto para responder preguntas críticas para el negocio como "¿Cuándo vendemos la mayor cantidad de productos?", o "¿Cuándo tenemos la mayor cantidad de registros o inicios de sesión?".

También puedes agrupar los resultados por una fecha específica. Esto ayuda a la hora de considerar informes de SLA o analizar cambios de rendimiento durante un período determinado.

SELECT average(duration)
FROM Public_APICall
FACET dateOf(timestamp)
SINCE 1 week ago
A screenshot displaying the use of time-based cohorting using Facet and date of functions

La agrupación en cohortes basada en el tiempo expone problemas que ocurren en minutos, horas, días o semanas específicos. Sin importar los datos que envíe a New Relic, NRQL le permite dividir, desglosar, organizar y visualizar sus datos en cualquier formato que necesite.

También hay muchas otras opciones disponibles para agrupar, como semana, mes y año, según su retención de datos. Para ver la lista completa, diríjase a nuestra página de documentación Agrupar resultados a lo largo del tiempo.

Próximos pasos

Con el conocimiento que ha adquirido aquí, puede crear visualizaciones de dashboard y controlar los aspectos de los datos que más le interesan. Puede usar estas técnicas para reducir el enfoque y obtener alertas más granulares y específicas, y producir visualizaciones más detalladas. Cuando esté listo, puede avanzar a nuestro tercer tutorial, donde aprenderá habilidades adicionales de NRQL, que incluyen filtros, casos de facetas, histograma, apdex, filtrado por eventTypes, anulación de valores y extrapolación.

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.