Esperamos que ver ejemplos de consultas y explicaciones en el contexto de sus propios datos le ayude a comprender mejor cómo transformar datos con conceptos más avanzados como tasa de cambio y agregación. En este tutorial, desarrollará los conceptos que se encuentran en los fundamentos del uso de NRQL y el control de sus datos con NRQL con conceptos más avanzados.
Aprenderá cómo mejorar su panel mediante el uso de facetas por caso, funciones de agregación avanzadas, la palabra clave EXTRAPOLATE
, funciones de agregación de filtrado y valores anulados. Específicamente, aprenderá a utilizar:
- Funciones de agregación avanzadas como
filter()
,apdex()
,rate()
,funnel()
,histogram()
. - Las cláusulas
EXTRAPOLATE
. FACET CASES()
, incluido cómo utilizar valores coincidentes de atributos y grupos.filter()
para combinar tipos de eventos.- Valores primordiales, cuando sea necesario.
Es posible que no utilices estas funciones y características en todos los dashboard, pero sin duda te resultarán útiles a la hora de abordar problemas y requisitos específicos. ¡Empecemos!
Usar agregador avanzado
Calcular la tasa
Comencemos con la función rate()
. Le permite visualizar la frecuencia del evento a lo largo del tiempo, lo que ayuda a ver la frecuencia del evento durante períodos pequeños dentro de ventanas de tiempo más grandes.
En el siguiente ejemplo, puede ver la frecuencia promedio de solicitudes cada 5 minutos durante la última hora en comparación con la frecuencia promedio de 5 minutos de la hora anterior. Observe que la consulta usa SINCE 1 hour ago
. Esta es la ventana de tiempo general en la que estás calculando la tarifa.
Puede utilizar rate()
para calcular solicitudes por minuto o solicitudes por segundo configurando el intervalo de tiempo en 1 minuto o 1 segundo.
Comprender el comportamiento del usuario final con gráficos embudos
Los gráficos embudos rastrean la aparición de un valor de atributo en varios registros y muchas personas los utilizan para comprender el comportamiento del usuario final. Puede utilizarlos a menudo para visualizar con qué éxito avanza el usuario a través de rutas definidas, y especialmente cuando utiliza un atributo personalizado.
Puede utilizar la función de agregador funnel()
para visualizar cuántos usuarios visitan una página específica antes de pasar a otra página. El primer parámetro es el atributo de identificación de las entradas únicas que estás contando. En este caso, New Relic asigna y retiene un atributo session ID
para cada usuario de su sitio (sujeto a que se habiliten las cookies). También puedes configurar tu propia ID de sesión usando un atributo personalizado.
El parámetro restante determina cómo se calcula cada paso de los embudos, escrito en el formato , WHERE attr OP value
. En este caso, tienes dos: uno que muestra cuántas sesiones de usuario visitaron la página de inicio, luego otro que muestra cuántas de ellas también navegaron a otras páginas. Pruebe una consulta como esta con sus propios datos y vea lo que obtiene.
filtros agregadores
filter()
es una poderosa herramienta que le permite agregar múltiples puntos de datos en una sola consulta, ofreciendo más control sobre qué evento devuelve el resultado de la función. En este ejemplo, utiliza filter()
para devolver los valores separados para transacción total, transacción total web y transacción total no web:
SELECT count(*) AS 'All Transactions', filter(count(*), WHERE awsAPI = 'dynamodb') AS 'DynamoDB', filter(count(*), WHERE awsAPI = 'sqs') AS 'SQS' FROM Public_APICall SINCE 1 day ago
Dado que devuelve un número, también puede realizar operaciones matemáticas con los resultados de la consulta. Por ejemplo, puede dividir el total de API de llamadas por todas las API de llamadas para ver qué porcentaje de ellas eran DynamoDB:
Histograma
Histograma le permite visualizar mejor la distribución de sus datos. Esto le ayuda a comprender la agrupación de puntos de datos por frecuencia, no solo por promedios. La función histogram()
toma tres argumentos:
El atributo que desea trazar (como la duración).
El valor máximo del rango que desea considerar (como "1" durante 1 segundo o menos).
La cantidad de depósitos en los que desea agrupar los datos. En este ejemplo, creará un gráfico
histogram()
para todos los valores de duración entre 0 y 1 segundo, agrupándolos en períodos de 50 ms. Para ello, especifique "20" como número de depósitos. Todas las duraciones superiores a 1 segundo se agrupan en el último segmento.
Apdex
La función apdex()
calcula una puntuación Apdex sobre cualquier valor numérico (como la duración). Puede calcular Apdex para una o más transacciones específicas para tener en cuenta los valores de atributos personalizados. Incluso puede proporcionar su propio valor de Apdex-T sin interferir con la configuración de la aplicación. En este ejemplo, proporciona a la función un atributo de "duración" y un valor de Apdex-T de 0,01, informándolo como "Apdex de duración":
SELECT apdex(duration, 0.1) AS 'Apdex Of Duration' FROM Public_APICall SINCE 1 week ago
También puede agregar el operador TIMESERIES
para representar gráficamente los datos a lo largo del tiempo. Observe que esto también traza el umbral de satisfacción, tolerancia y frustración de Apdex.
Ahora ha explorado un conjunto completamente nuevo de visualizaciones con funnel()
y histogram()
. También aprendió cómo filter()
puede ayudarle a ser más específico en la consulta con las cláusulas WHERE
y cómo rate()
puede mostrar la tasa de un atributo a lo largo del tiempo.
Estas consultas mejoran aún más su capacidad NRQL. Apdex es un estándar de la industria y se aplica a muchos escenarios. Los embudos pueden rastrear el progreso a través de las rutas deseadas mientras que los histogramas visualizan la distribución clara de los datos. Finalmente, los filtros le permiten ser extremadamente específico con los valores devueltos. A continuación, aprenderá sobre EXTRAPOLATE
.
Utilice la extrapolación para grandes cantidades de datos
¡La base de datos New Relic (NRDB) recibe y procesa grandes cantidades de datos todos los días a la velocidad del rayo! Cuando APM registra una gran cantidad de datos de eventos, el agente New Relic implementa una técnica de muestreo para continuar recopilando datos significativos y al mismo tiempo reducir el impacto potencial en su aplicación. Por lo general, esto solo sucede cuando un único evento en una aplicación o servicio maneja volúmenes extremadamente altos de solicitudes.
Si tiene varios agentes distribuidos en varias instancias de un servicio con equilibrio de carga, es posible que nunca observe este límite. Averigüemos qué puedes hacer cuando esto suceda. El operador EXTRAPOLATE
le dice a New Relic que compense matemáticamente los efectos del muestreo, devolviendo así resultados que representan más fielmente la actividad en su sistema. Puede almacenar un valor adicional para registrar cuántos eventos similares ocurrieron por encima del límite, lo que le permite ofrecer resultados estadísticamente precisos.
SELECT count(*) FROM Transaction SINCE 60 minutes ago FACET appName TIMESERIES 1 minute EXTRAPOLATE
Podría pensar que puede llegar al límite al hacer esto. Intente eliminar EXTRAPOLATE
de la consulta y vea si su recuento cambia. Si no es así, lo más probable es que no hayas alcanzado el límite.
Cuando incluye EXTRAPOLATE
en una consulta, calculamos la relación entre el evento informado y el evento total. Luego usamos esta relación para extrapolar una aproximación de datos no muestreados. Tenga en cuenta que sólo algunas consultas admiten este uso. Cuando se incluye en una consulta NRQL que no la admite o no utiliza datos de muestra, no tiene ningún efecto.
Los datos homogéneos, como el rendimiento, aprovechan al máximo la función EXTRAPOLATE
. Tiene menos efecto cuando se intenta extrapolar un recuento de cosas distintas (como uniqueCount()
o uniques()
). Entonces, EXTRAPOLATE
solo funciona con consultas NRQL que usan una de las siguientes funciones de agregador:
apdex
average
count
histogram
sum
percentage
rate
stddev
Una vez que EXTRAPOLATE
haya terminado, pasemos al uso de casos facetados.
Usar casos de facetas
Como aprendió anteriormente, FACET
segmenta sus datos y lo ayuda a comprenderlos desde perspectivas agrupadas de manera diferente (como ver el tiempo de respuesta promedio según diferentes códigos de respuesta). Cuando usas FACET
, NRDB organiza los datos en grupos según los valores del atributo proporcionado. Pero, ¿qué pasaría si quisiera agrupar diferentes valores, como los códigos de respuesta HTTP 200 y 201?
FACET CASES()
resuelve este problema al permitirle elegir cómo se dividen los grupos de facetas. El operador toma cualquier número de parámetros en el formato WHERE attr OP value
. En el siguiente ejemplo, clasifica todas las transacciones con http.url
que comienzan con "amazon", "google" y "microsoft" en un depósito. También puede hacer esto para cosas como códigos de respuesta de error para agrupar nuestros datos de manera que aumenten la legibilidad y nos ayuden a comprender lo que sucede en nuestras aplicaciones.
SELECT count(*) FROM Public_APICall FACET CASES(WHERE http.url LIKE '%amazon%', WHERE http.url LIKE '%google%', WHERE http.url LIKE '%microsoft%')
Como puede ver, estas agrupaciones tienen valor pero es posible que tenga dificultades para leerlas. Limpiémoslos usando algo que aprendimos en un tutorial anterior:
SELECT count(*) FROM Public_APICall FACET CASES(WHERE http.url LIKE '%amazon%' AS 'Amazon', WHERE http.url LIKE '%google%' AS 'Google', WHERE http.url LIKE '%microsoft%' AS 'Microsoft')
FACET CASES()
le permite unir y agrupar atributos con diferentes valores que desee combinar. Esta funcionalidad tiene muchos usos y también es aún más poderosa cuando etiqueta datos personalizados en los datos de su transacción. Esto le permite mayor granularidad y control al navegar y agrupar datos. A continuación, profundizará en el filtrado, esta vez por tipo de evento.
Filtrar por tipo de evento
Ahora explorará algo que pocos clientes de New Relic conocen: ¡filtrar por tipos de eventos! Hasta ahora, ha realizado consultas que extraen datos de una única fuente. Pero, ¿qué sucede si desea trazar 2 puntos de datos almacenados como dos tipos de eventos diferentes? La consulta de datos NRDB no tiene límites en un solo tipo de evento, y puede consultar desde diferentes tipos de eventos separándolos con comas.
Para que esto sea aún más útil, la función eventType()
le indica de qué tipo de evento proviene el registro. Puede utilizar esto para controlar la salida de datos. En este ejemplo, puede ver el número total de eventos Transaction
y PageView
combinados, así como los totales solo de Transaction
y PageView
.
SELECT count(*) AS 'Combined Events', filter(count(*), WHERE eventType() = 'PageView') AS 'Page Views', filter(count(*), WHERE eventType()='Transaction') AS 'Transactions' FROM Transaction, PageView SINCE 1 day ago
Veamos esto con más detalle: count(*)
muestra el número total de eventos Transaction
y PageView
. Sin embargo, puedes usar la función agregador filter()
que aprendiste recientemente para hacer algo único. La consulta tiene WHERE eventType()='PageView'
, que invoca la función de filtro para observar el tipo de evento como parte del conjunto de resultados total. Luego filtra para mostrar solo esos eventos específicos. Incluso puedes agregar TIMESERIES
para visualizar 2 puntos de datos directamente comparables en un gráfico lineal.
SELECT count(*) AS 'Combined Events', filter(count(*), WHERE eventType() = 'PageView') AS 'Page Views', filter(count(*), WHERE eventType()='Transaction') AS 'Transactions'FROM TransactionSINCE 1 day ago TIMESERIES max
Ahora ha localizado, devuelto y representado gráficamente datos de dos tipos de eventos diferentes. Este ejemplo muestra cómo NRQL puede permitirle navegar por los datos necesarios de forma rápida y concisa; ¡No se requieren declaraciones complejas de unión o unión! A continuación, aprenderemos a utilizar valores de anulación.
Anular valores
Contando valores NULL
A veces, los datos simplemente no se presentan en el formato necesario. Por ejemplo, a veces los números enteros regresan como cadenas, pero los necesitas como números enteros para realizar cálculos. O tal vez obtenga un resultado NULL
, pero en su caso NULL
en realidad significa 0. ¡No se preocupe! Lo escuchamos y hemos agregado funciones para ayudar a solucionar este problema.
NULL
Los valores del atributo pueden aparecer tanto en datos personalizados como listos para usar. Cuando utiliza un agregador como count()
y average()
, NRQL elimina automáticamente NULL
valores del cálculo y solo realiza la función en eventos sin NULL
valores. NRQL le permite tener en cuenta valores NULL
inesperados en los cálculos mediante la cláusula OR value
. Por ejemplo, si desea asegurarse de que los valores NULL
para un atributo cartValue
cuenten como 0, puede utilizar cartValue OR 0
en su consulta.
En este ejemplo, ejecutando count()
en "http.url" sólo cuenta el número de veces "http.url" tiene un valor. Pero si agrega OR 'Null'
a la consulta, puede contar todas las transacciones donde "http.url" existe, y también aquellos con un valor NULL
.
SELECT count(duration) AS 'Events With Durations', count(http.url OR 'Null') AS 'Events With and Without URL' FROM Public_APICall SINCE 1 day ago
¡Casi has aprendido todo lo que necesitas para ayudarte a avanzar en tu panel de control! A continuación, aprenderá a utilizar la coerción.
Coerción
NRQL no aplica coerción automáticamente. Esto significa que tratamos un flotante almacenado como una cadena como lo haríamos con cualquier otra cadena, y no puedes usarlos con funciones matemáticas como sum()
o average()
. Para anular este comportamiento, utilice boolean()
o numeric()
para convertir argumentos a valores booleanos o numéricos. En este ejemplo, una función average()
en "duración" no proporciona ningún valor ya que este atributo es una cadena. Pero si convierte el atributo en un número usando numeric(duration)
, podrá usar la función average()
con éxito.
SELECT average(numeric(duration)) AS 'Ensuring stored value is treated as numeric', average(duration) AS 'Non-Converted Attribute' FROM Public_APICall SINCE 1 day ago
Otro ejemplo común son los valores BOOLEAN
(VERDADERO o FALSO), que a menudo se formatean incorrectamente como cadenas. Cuando esto sucede, puede cambiar la forma en que la fuente envía los datos para que sean booleanos adecuados. O puede utilizar la función boolean()
. La consulta de ejemplo siguiente devuelve el mismo resultado, pero solo porque utiliza un valor enviado por el agente como BOOLEAN
. Si su atributo fuera una cadena "VERDADERO", boolean()
la convertiría a un formato booleano adecuado, permitiendo que la consulta se ejecute según lo previsto.
SELECT count(boolean(sampleDataSet)), count(sampleDataSet) FROM Public_APICall SINCE 24 hours ago
También puede convertir valores booleanos y numéricos en cadenas utilizando la función string()
. Con valores numéricos como números de punto flotante, puede utilizar el argumento opcional precision
para limitar el número de decimales de la cadena. Esta consulta devuelve el valor de duración como una cadena limitada a tres decimales.
SELECT string(duration, precision: 3) FROM Public_APICall SINCE 24 hours ago
Aquí le hemos dado el poder de controlar sus formatos de datos y decirle a NRQL cómo desea que actúe. NRQL funciona de la manera que consideramos más lógica, pero si eso no se adapta a su escenario particular, puede usar las funciones exploradas en esta lección para anular esos valores. Sólo te queda una cosa por aprender: la concatenación de cadenas.
Utilice la concatenación de cadenas para añadir argumentos
Puede haber algunos casos en los que necesite agregar o anteponer texto al valor devuelto de un atributo. Puede lograr esto usando la función concat()
. Puede proporcionar hasta 20 argumentos para que la función concat()
los concatene en una cadena.
SELECT concat('The duration of ', http.url, ' is ', duration, ' seconds') FROM Public_APICall
Puede limitar el número de decimales que utiliza para cualquier número de punto flotante en los valores del atributo concatenado. Para hacer esto, use el argumento opcional precision:
como último valor. En este ejemplo, agrega una 's' para indicar segundos y limita el valor a 3 decimales.
SELECT http.url, concat(duration, 's', precision: 3) FROM Public_APICall
Los valores que comienzan con http(s)
se muestran automáticamente como enlaces en los que puede hacer clic para abrir una nueva página, lo que significa que puede crear integración con soluciones donde una URL dinámica puede abrir una página relacionada con una entidad. El siguiente ejemplo muestra una URL de ejemplo donde se establecen los valores del parámetro de consulta mediante los valores del atributo.
SELECT http.url, concat('https://www.example.com/?appId=', api, '&error=', error) AS 'URL' FROM Public_APICall
Puede utilizar la función concat()
para combinar valores, como una ciudad y un país para la ubicación, y anteponer o agregar cadenas adicionales para presentar los datos que necesite.
En este tutorial, exploró una potente y específica funcionalidad NRQL. Estas habilidades le serán de gran utilidad la próxima vez que trabaje con NRQL y profundice en el meollo de la cuestión de sus datos.
¡Ya has completado el tercer tutorial de NRQL! Cuando esté listo, tenemos aún más características y funciones que queremos mostrar en el próximo y último tutorial de esta serie: Funciones avanzadas de NRQL.