• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Utiliser les fonctions NRQL avancées

Jusqu'à présent, vous avez appris les bases de l'utilisation de NRQL, comment utiliser NRQL pour contrôler vos données et comment utiliser NRQL pour faire progresser votre dashboard. Dans cette dernière série de didacticiels, vous apprendrez les techniques NRQL les plus avancées qui vous permettent d'interroger absolument tout ce dont vous avez besoin à partir de vos données. Ce didacticiel abordera des techniques d'agrégation supplémentaires, des fonctions mathématiques de niveau supérieur et des fonctionnalités avancées telles que le filtrage Regex et l'agrégation imbriquée. Plus précisément, vous apprendrez à utiliser :

  • La fonction d'agrégation stddev() et comment regrouper des données agrégées à l'aide de la fonction buckets() .
  • Les fonctions mathématiques avancées disponibles dans NRQL pour lisser, limiter et manipuler les données.
  • Comment découvrir les types d'événements et les attributs disponibles dans vos données sur une période spécifique.
  • Comment filtrer des données avec Regex en utilisant RLIKE.
  • Comment utiliser l'agrégation imbriquée et les sous-requêtes.

Nous pensons que vous trouverez ces fonctionnalités tout simplement inestimables. C'est parti !

Utiliser le bucketing avec l'agrégation

L'écart type mesure la quantité de variation ou de dispersion au sein d'un ensemble de valeurs. Elle utilise une échelle allant de faible (valeurs proches de la moyenne) à élevée (valeurs éloignées de la moyenne). La fonction stddev()vous permet de regarder entre les lignes des moyennes et de comprendre les valeurs rapportées à un niveau plus profond. Dans cet exemple, vous comparez l'écart type des temps de réponse (« durée ») des transactions du dernier jour à celui du jour précédent.

SELECT stddev(duration)
FROM Transaction
SINCE 24 hours ago
COMPARE WITH 24 hours ago
TIMESERIES
A screenshot showing the use of standard deviation in a query

La fonction stdvar() fonctionne de manière similaire à stddev() mais renvoie la variance standard pour l'attribut numérique.

Dans une leçon précédente, vous avez appris à regrouper des données dans une configuration spécifique de buckets à l'aide de FACET cases(). Vous pouvez également regrouper automatiquement les données en fonction d'un attribut spécifique à l'aide de FACET buckets(). Cette fonction simplifie le regroupement des données pour toute fonction d'agrégation et prend trois arguments :

buckets(attribute, ceiling, number-of-buckets).

  • L'attribut que vous souhaitez utiliser pour effectuer le regroupement.

  • Valeur maximale de la plage d'échantillons (toute valeur hors norme apparaîtra dans le compartiment final).

  • Le nombre total de seaux dont vous avez besoin.

    Dans l'exemple de requête, vous utilisez NRQL pour trouver la durée moyenne d'une transaction entière. Mais vous regroupez ces performances en transactions qui génèrent des volumes spécifiques d’appels de base de données. Vous spécifiez donc l'attribut bucket comme databaseCallCount, définissez le plafond à 400 appels et regroupez-le en 10 buckets. Cela se traduit par des performances de transactions effectuant 0 à 40, 40 à 80, 80 à 120, 120 à 160, 160 à 200, 200 à 240, 240 à 280, 280 à 320, 320 à 360 et > 360 appels de base de données. 10 compartiments clairs répartis uniformément jusqu'au plafond.

    SELECT average(duration)
    FROM Transaction
    SINCE 12 hours ago
    FACET buckets(databaseCallCount, 400, 10)
    A screenshot showing the use of facet bucketing in queries

Avec cela, vous avez maintenant appris toutes les fonctions d’agrégation qui existent actuellement dans NRQL ! Vous pouvez découper et analyser vos données comme un pro. Si vous pensez qu'une capacité d'agrégation manque à NRQL, informez-en votre équipe de compte : nous sommes toujours à la recherche de la prochaine fonctionnalité révolutionnaire dont vous pourriez avoir besoin.

Utiliser des fonctions mathématiques avancées

NRQL prend également en charge des fonctions mathématiques plus avancées pour ceux qui ont besoin d'approfondir leurs données. Ces fonctions peuvent extrapoler des valeurs à la puissance de X, trouver des racines carrées, appliquer un serrage pour imposer des limites supérieures et inférieures, ou même simplement conserver des valeurs positives sur l'axe Y.

NRQL possède de nombreuses fonctions mathématiques qui manipulent les valeurs d'une manière ou d'une autre. Dans cet exemple, vous en verrez quelques-uns démontrés simultanément.

La fonction abs(n) renvoie la valeur absolue de n : pour les valeurs n non négatives, elle renvoie « n », et pour les valeurs n négatives, elle renvoie le nombre positif « n ». Par exemple, abs(2) = 2 et abs(-4) = 4.

Vous pouvez également arrondir les nombres décimaux en entiers en utilisant floor(), ceil() et round(). floor() renvoie l'entier complet le plus proche arrondi à l'inférieur, et ceil() fait l'inverse en arrondissant à l'entier supérieur. round() est bidirectionnel et arrondit vers le haut ou vers le bas à l'entier complet le plus proche.

SELECT abs(duration), round(duration), ceil(duration), floor(duration)
FROM Transaction
SINCE 1 day ago
A screenshot showing the results of a query using absolute value

Vous pouvez utiliser le serrage sur un attribut pour imposer une limite supérieure ou inférieure à sa valeur. Cela est utile pour des choses comme garantir que les valeurs extrêmes hors norme ne faussent pas l'échelle d'un graphique de série chronologique. clamp_max(duration, 10) renvoie la durée, sauf si elle dépasse 10, auquel cas elle renvoie 10. En termes simples, tout ce qui est supérieur à 10 renvoie toujours comme étant égal à 10. clamp_min(duration,1) fait l'inverse ; si une durée est inférieure à 1, elle renvoie comme étant égale à 1.

SELECT clamp_max(average(duration), 10), clamp_min(average(duration), 1)
FROM Transaction
SINCE 1 day ago
TIMESERIES
A screenshot showing a query that uses clamp max

Vous pouvez maintenant passer aux mathématiques avancées que beaucoup trouvent difficiles à utiliser. Comme précédemment, nous pouvons vous montrer toutes ces fonctions dans un seul exemple de requête.

La fonction pow() élève le premier argument à la puissance du deuxième argument. Dans cet exemple, vous élevez la durée à la puissance 2. Si vous avez besoin de la racine carrée d'une valeur, la fonction sqrt() peut vous la fournir rapidement. Et la fonction exp() calcule la fonction exponentielle naturelle de son argument.

Enfin, NRQL propose également des logarithmes adaptés à un certain nombre de fonctions similaires :

  • ln(n) calcule le logarithme népérien : le logarithme en base e.

  • log2(n) calcule le logarithme base 2.

  • log10(n) calcule le logarithme base 10.

  • log(n, b) permet de calculer des logarithmes avec une base b arbitraire.

    SELECT pow(duration, 2), sqrt(duration), exp(duration), ln(duration), log2(duration)
    FROM Transaction
    SINCE 1 day ago
    A screenshot showing a query using the advaned math features pow, SQRT, and EXP

Dans cette leçon, vous avez appris à lisser vos données d’événement. round()/ceil()/floor() vous permettent d'arrondir comme vous le souhaitez. Le serrage vous permet de définir des limites sur les données, et les outils mathématiques avancés pour le logarithme, la racine carrée, la puissance et l'exponentielle offrent tous un contrôle supplémentaire pour manipuler les données selon vos besoins. Ensuite, vous apprendrez à découvrir un événement et un attribut.

Découvrez l'événement et l'attribut

La découverte d'événements et d'attributs peut aider à répondre aux questions sur vos données disponibles avant de les interroger et à faciliter l'automatisation ! Prenons un moment pour explorer ce puissant utilitaire.

Disons que vous souhaitez une liste de tous les types d'événements actuellement signalés sur votre compte New Relic. La syntaxe SHOW EVENT TYPES renvoie une liste de tous les types d'événements signalés dans une période donnée. C'est l'une des rares exceptions où une requête NRQL n'a pas besoin SELECT et FROM. Vous pouvez utiliser cette fonctionnalité pour des choses comme confirmer l'existence de données d'événements personnalisés.

SHOW EVENT TYPES
SINCE 1 week ago
A screenshot showing a the result of a query using event types

Vous devrez peut-être savoir quel attribut vous disposez pour un type d’événement donné. La fonction keyset() fournit une liste de tous les attributs pour un type d'événement, regroupés par type d'attribut. Vous n'obtiendrez que des attributs contenant des valeurs dans la fenêtre temporelle fournie, que vous pouvez utiliser pour explorer vos données. Vous pouvez également l'utiliser dans l'automatisation, pour garantir par exemple que les rapports de données des clients sont corrects.

SELECT keyset()
FROM Transaction
SINCE 1 week ago
A screenshot showing the result of a keyset query

Ces fonctionnalités vous aident à découvrir les changements dans les types et les attributs d'événements. De plus en plus d'ingénieurs DevOps utilisent ces fonctionnalités pour terminer des tâches, voire les automatiser rapidement. Ensuite, vous apprendrez à filtrer les données avec Regex.

Filtrer avec regex

Vous souhaiterez peut-être occasionnellement filtrer des données avec des correspondances de modèles plus complexes que celles que LIKE peut fournir. Avec la clause RLIKE , vous pouvez filtrer avec des expressions régulières pour des correspondances plus complexes.

Dans n'importe quel scénario où vous pourriez utiliser LIKE, vous avez la possibilité d'utiliser RLIKE à la place pour fournir une expression régulière correspondante entre guillemets. Dans cet exemple, il y a une liste de tous les noms d'hôtes se terminant par des nombres pairs ou des consonnes.

SELECT uniques(host)
FROM Transaction
WHERE host
RLIKE '^.*[02468bcdfghjklmnpqrstvwxyz]'
A screenshot showing the result of a query using R like

Vous pouvez également effectuer une correspondance simple. Par instance, si vous souhaitez faire correspondre une valeur qui commence par une lettre ou un mot donné.

SELECT count(*)
FROM Transaction
WHERE name
RLIKE 'W.*|O.*'
FACET name

Le moteur d'expressions régulières utilise la syntaxe RE2. Si vous devez supprimer des caractères, vous devrez peut-être utiliser les séquences d'échappement à double barre oblique inverse. (par exemple \\).

N'oubliez pas que RLIKE présente intrinsèquement plus de complexité et moins de performances que LIKE. Utilisez-le uniquement lorsque LIKE et d’autres fonctionnalités de filtrage ne répondent pas à vos besoins.

La prise en charge des expressions régulières permet des possibilités de correspondance de modèles quasi infinies. Si vous êtes déjà un gourou des expressions régulières, vous connaissez la puissance que cela ajoute à NRQL. Mais si ce n’est pas le cas, ne vous inquiétez pas ! Regex dispose de nombreuses ressources disponibles pour référence en ligne. Maintenant que vous avez appris à utiliser les expressions régulières avec NRQL, l’étape suivante sur la liste est l’utilisation de l’agrégation imbriquée.

Utiliser l'agrégation imbriquée

Vous pouvez écrire une requête d'agrégation imbriquée avec NRQL qui utilise une requête comme FROM pour la requête parent. Cela vous permet de répondre à des questions telles que :

  • Combien de transactions par minute mon application a-t-elle traitées et quel a été le taux maximal de requests par minute au cours de la dernière heure ?
  • Quelle est l'utilisation moyenne du processeur de tous mes serveurs et quels serveurs spécifiques dépassent 90 % ?
  • Quel pourcentage de toutes les sessions utilisateur ont rebondi immédiatement (c'est-à-dire (une seule page vue dans la session) ?

Explorons chacun de ces cas d’utilisation plus en détail.

Exemple 1 : Appel d'API maximal au cours de la dernière heure

Tout d'abord, vous pouvez compter le nombre d'appels API par minute au cours de la dernière heure. Cela renvoie 60 points de données sur un graphique :

SELECT count(*) AS apicalls
FROM Transaction
TIMESERIES 1 MINUTE
A screenshot showing the results of the API call query

Maintenant, pour trouver la valeur maximale signalée sur cette période, vous placez la requête entre parenthèses et utilisez SELECT ... FROM comme ceci : SELECT z FROM (SELECT x AS z FROM y)

SELECT max(apicalls)
FROM ( SELECT count(*) AS apicalls FROM Public_APICall TIMESERIES 1 minute )

Exemple 2 : serveurs avec une charge CPU élevée

Cet exemple utilise des données de New Relic Infrastructure. Parfois, vous souhaitez uniquement voir les hôtes dont le CPU a, en moyenne, dépassé un certain pourcentage. Si vous demandez à NRQL le average(cpuPercent), vous obtenez une liste d'hôtes avec le pourcentage moyen de CPU le plus élevé. Mais vous ne pouvez pas simplement ajouter un WHERE cpuPercent > 90 pour limiter cela aux seuls hôtes fonctionnant à 90 % ou plus, car cela supprimerait les données avant de calculer la moyenne.

Mais vous pouvez résoudre ce problème avec une agrégation imbriquée ! En demandant average(cpuPercent) dans la sous-requête, vous obtenez la liste des hôtes et leur CPU moyen. Désormais, dans la requête externe, vous pouvez filtrer uniquement les résultats qui étaient > x%! (Astuce : vous devrez peut-être ajuster le seuil de cette requête pour qu'il fonctionne avec le processeur de vos hôtes. Nous l'avons fixé à 20 % ici.)

SELECT hostname, cpu
FROM (SELECT average(cpuPercent) AS cpu FROM SystemSample FACET hostname)
WHERE cpu > 20

Exemple 3 – Rebonds de session

Les gens se demandent souvent comment calculer le taux de rebond sur monitoring du front-end. Cela fait référence aux sessions qui consultent une seule page et « rebondissent » avant de visiter d'autres pages. Avec l’agrégation imbriquée, vous pouvez y parvenir facilement. Notre requête interne compte les PageViews, en les regroupant par session. L'ensemble de résultats transmis à la requête externe répertorie toutes les sessions et le nombre de pages consultées pour chacune d'elles. La requête externe calcule ensuite le pourcentage de sessions avec un compte de 1 (cela indique une « session rebondie », car elles n'ont consulté qu'une seule page).

SELECT percentage(count(*), WHERE sessionLength = 1)
FROM (SELECT count(*) AS sessionLength FROM PageView FACET session)

Dans cette leçon, vous avez appris comment utiliser une requête comme FROM d'une autre requête pour répondre à des questions plus complexes. Il ne reste plus qu'une dernière chose à apprendre : comment utiliser les sous-requêtes !

Utiliser des sous-requêtes

Les sous-requêtes dans NRQL sont similaires aux agrégations imbriquées, vous permettant d'utiliser une requête imbriquée dans une autre requête. Avec les sous-requêtes, la requête imbriquée entre dans l'instruction SELECT et la clause WHERE , tandis que les agrégations imbriquées entrent dans la clause FROM .

Regardons quelques exemples de ces différents types de sous-requêtes.

Conditions numériques

Vous pouvez utiliser n’importe quelle requête qui renvoie une seule valeur numérique dans des conditions numériques. Cet exemple utilise une sous-requête dans la clause WHERE qui renvoie la valeur du 97e percentile de la durée de l'appel d'API, puis renvoie le nom et la durée des appels supérieurs à cette valeur.

SELECT http.url, duration
FROM Public_APICall
WHERE duration > (SELECT percentile(duration,97) FROM Public_APICall)
A screenshot showing the results of a numeric condition subquery

Dans les conditions

Lorsque plusieurs valeurs sont renvoyées par une sous-requête, utilisez une condition IN pour que la requête parent effectue une comparaison avec chaque valeur. Dans l'exemple, l'attribut entity.guid fournit des données pour chaque entité unique qui présente une erreur de transaction, et cela correspond à la valeur entity.guid des transactions pour déterminer la durée moyenne de l'entité en erreur.

SELECT average(duration)
FROM Transaction
WHERE entity.guid
IN (SELECT uniques(entity.guid) FROM TransactionError)
FACET appName
TIMESERIES
A screenshot showing the result of a query using the in condition

Sous-requêtes dans l'instruction SELECT

Vous pouvez utiliser les résultats de sous-requête dans les calculs avec une instruction SELECT et spécifier une plage horaire différente de celle de la requête externe. Cet exemple calcule le delta entre la durée moyenne actuelle et celle des 7 derniers jours.

SELECT average(duration) - (SELECT average(duration) FROM Public_APICall SINCE 7 days ago)
FROM Public_APICall
TIMESERIES
A screenshot showing the results of a subquery that uses select

Les sous-requêtes sont un outil puissant pour l'exploration des données, permettant des requêtes plus sophistiquées sur différentes sources de données et plages de temps.

Félicitations pour avoir terminé ce tutoriel. Vous avez découvert des techniques d'agrégation supplémentaires, des fonctions mathématiques de niveau supérieur et des fonctionnalités avancées telles que le filtrage Regex, l'agrégation imbriquée et les sous-requêtes. Si vous avez terminé les trois didacticiels précédents, vous avez travaillé avec presque tous les aspects de NRQL que vous pouvez utiliser !

Nous espérons que vous trouverez NRQL utile pour explorer vos données, et si vous avez d'autres questions ou rencontrez des problèmes, n'hésitez pas à contacter le support New Relic. Ou, si vous préférez, vous pouvez partager votre expérience avec notre communauté en ligne.

Droits d'auteur © 2025 New Relic Inc.

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