• /
  • 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

Contrôlez vos données avec NRQL

Dans le premier didacticiel NRQL , nous avons exploré les principes fondamentaux de la création de requêtes. Nous avons abordé la structure de base des requêtes, la définition des fenêtres temporelles et la manière de sélectionner un attribut spécifique à observer. Nous avons également appris comment commencer à agréger et afficher des données à l’aide de graphiques et d’autres visualisations.

Dans ce didacticiel, nous allons approfondir un peu plus et explorer davantage de fonctions pour créer des agrégations utiles. Ici, vous apprendrez à comparer les données renvoyées avec les périodes précédentes et à regrouper les données dans des fenêtres temporelles spécifiques. Vous trouverez également encore plus de choses à faire avec les fonctionnalités SINCE et UNTIL et explorerez l'utilisation des caractères génériques dans les filtres. Plus précisément, vous apprendrez à :

  • requête pour la valeur unique en utilisant uniques(attributeName)
  • Déterminez combien de valeurs uniques existent dans un attribut en utilisant uniqueCount(attributeName)
  • Récupérer les earliest(attributeName) et latest(attributeName) dans une fenêtre de temps spécifique
  • Calculez des pourcentages en fonction d'un qualificatif ou d'un autre point de données avec percentile()
  • Effectuer des calculs mathématiques de base à l'aide de fonctions d'attribut et d'agrégation, ou d'une combinaison des deux
  • Convertissez les noms d'attributs en quelque chose de personnalisé et de plus lisible
  • Rechercher pour inclure/exclure en utilisant des caractères génériques avec LIKEou NOT LIKE, ou limiter les résultats à ceux IN d'une liste ou NOT IN qui répertorient
  • requête dans des fenêtres temporelles plus avancées utilisant des dates, des époques et WITH TIMEZONE
  • Regroupez les données dans des fenêtres temporelles intéressantes à l'aide de cohortes temporelles

C'est parti !

Fonctions d'agrégation

Après avoir terminé le premier didacticiel NRQL, vous avez utilisé count(), average(), sum(), max() et min() pour transformer vos données de manière significative. Mais que faire si vous souhaitez trouver et compter la valeur unique ? Pour trouver le nombre de valeurs uniques enregistrées pour un attribut sur une plage de temps spécifiée, vous pouvez utiliser la fonction uniqueCount() . Il vous suffit de fournir l’attribut que nous souhaitons inspecter comme argument. Par instance, voici une requête pour afficher tous les appels d'API publics uniques :

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

Pour optimiser les performances des requêtes, la fonction ci-dessus renvoie des résultats approximatifs pour les requêtes qui inspectent plus de 256 valeurs uniques. Pour renvoyer la liste réelle des valeurs uniques pour un attribut sur une plage de temps spécifiée, nous pouvons utiliser la fonction uniques() .

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

Si vous souhaitez fournir un deuxième paramètre de limite pour spécifier une valeur limite différente de la valeur par défaut de 1 000. Vous pouvez le faire en utilisant uniques(attribute[,limit]), qui modifiera la limite à la valeur souhaitée jusqu'à un maximum de 10 000.

Pour récupérer la valeur la plus récente d'un attribut sur une plage de temps spécifiée, utilisez la fonction latest() . Dans cet exemple de requête, vous pouvez localiser les temps de réponse les plus récents pour un appel d'API au cours du dernier jour. Cela pourrait vous aider à localiser la valeur la plus récente d'une transaction ou d'un service signalé par intermittence.

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

À l’autre bout du spectre, vous pourriez utiliser la fonction earliest() pour obtenir l’effet inverse. Il renverra la valeur la plus ancienne d'un attribut enregistré dans la plage de temps spécifiée. Dans cet exemple de requête, vous pouvez récupérer les temps de réponse les plus anciens pour un appel d'API au cours du dernier jour. Si les données sont rapportées de manière cohérente, cela signalera le point de données de l'événement le plus ancien au cours des dernières 24 heures.

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

Vous constaterez peut-être que vous avez besoin de pourcentages plutôt que de décomptes, de sommes ou de moyennes. L'utilisation de la fonction percentage() vous permet de calculer le pourcentage d'une valeur dans l'ensemble de données qui correspond à une condition spécifiée. Cette fonction prend deux arguments : le premier est une fonction d'agrégation pour l'attribut souhaité, tel que count(). La deuxième est une condition WHERE pour spécifier le sous-ensemble de données que vous souhaitez interroger.

Dans cet exemple de requête, vous pouvez trouver le pourcentage d'appels d'API au cours du dernier jour qui ont eu une durée (ou temps de réponse) supérieure à 100 millisecondes.

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

Il est très courant de visualiser les performances des applications ou les données d'expérience client en utilisant des centiles plutôt que des moyennes. Vous pouvez utiliser la fonction percentile() pour comprendre l’expérience du n-ième percentile.

Par exemple, disons que vous souhaitez savoir quelle a été la pire expérience (durée la plus élevée) de 98 % de vos clients au cours de la dernière journée. Vous pouvez demander à NRDB percentile(duration, 98) des dernières 24 heures.

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

Comme vous pouvez le constater, l’agrégation peut manipuler les données de manière puissante. Vous pouvez utiliser uniqueCount() pour compter les entrées uniques d’un attribut particulier. Mais vous pouvez également l'utiliser pour identifier un nombre de machines uniques, un conteneur de rapports ou même le nombre de points de données personnalisés envoyés à New Relic. Et, si vous voulez savoir quelles valeurs uniques sont disponibles pour la requête, vous pouvez toujours demander une liste en utilisant uniques().

Les fonctions latest() et earliest() ont une valeur particulière lorsqu'il s'agit de traiter des données éparses ou de rechercher le moment où quelque chose a commencé ou a cessé d'être signalé (en supposant que New Relic stocke toujours les données). La fonction percentage() peut vous montrer quel pourcentage d'événements correspond à un qualificatif par rapport à l'ensemble des résultats globaux. Enfin, vous pouvez utiliser percentile() comme indicateur de performance clé en définissant un objectif pour garantir que 90 % de toutes les transactions finales des utilisateurs dépassent la durée fournie.

À l’étape suivante, vous apprendrez à effectuer des mathématiques de base avec NRQL.

Utiliser les opérateurs mathématiques

NRQL prend en charge les opérateurs mathématiques de base. Vous pouvez effectuer une addition (+), une soustraction (-), une multiplication (*) et une division (/) sur des valeurs d'attributs numériques et sur les résultats des fonctions d'agrégation.

Par exemple, nous capturons à la fois le temps de réponse total (comme duration) et le temps de réponse de la base de données (comme databaseDuration) lorsque nous enregistrons un événement de transaction. Mais que faire si vous souhaitez connaître le temps moyen passé en dehors du traitement de la base de données ? Vous pouvez commencer par calculer cette valeur pour chaque événement de votre ensemble de données à l'aide d'une requête telle que celle-ci.

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

Super! Vous venez d’effectuer quelques calculs mathématiques de base. Ceci est utile pour vous aider à répertorier les événements individuels. Mais que faire si vous souhaitez connaître la durée moyenne des transactions sans l'heure de la base de données ? De manière pratique, vous pouvez effectuer l'arithmétique dans la fonction :

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

Et maintenant, que se passerait-il si vous vouliez rendre les choses encore plus compliquées en soustrayant, divisant et multipliant dans la même requête pour déterminer la durée sans temps de base de données, en pourcentage du temps global ? Eh bien, vous pouvez ajouter les mathématiques :

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

New Relic signale les horaires dans le cadre de votre événement, afin que vous puissiez les utiliser pour calculer des points de données significatifs ou même générer des résultats en pourcentage. Vous pouvez encore maximiser la puissance des mathématiques de base en effectuant des tâches telles que la synchronisation d'actions ou d'événements personnalisés, ou l'envoi de données personnalisées. Par instance, une plateforme de commerce électronique qui fournit des données sur la taille des commandes et les méthodes de paiement pourrait utiliser les mathématiques pour calculer des éléments tels que le taux de conversion des commandes par rapport aux visites uniques des clients.

À l’étape suivante, vous apprendrez à utiliser NRQL pour étiqueter votre attribut.

Attribut d'étiquette

Lorsque vous commencez à exécuter des fonctions NRQL plus complexes, vous vous demandez peut-être si vous pouvez rendre les noms affichés pour l'attribut de requête plus utiles, en particulier pour les autres qui ne connaissent pas NRQL! Prenons un exemple utilisant ce que vous avez appris dans le didacticiel précédent.

SELECT average(duration-externalDuration)
FROM Transaction

Vous pouvez utiliser la clause AS après une fonction ou un attribut pour donner au résultat un nom plus lisible et significatif. Cela permet à vous et à votre équipe de comprendre plus facilement ce que représente exactement un graphique.

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

Cela peut sembler simplement esthétique, mais lorsque vous créez un dashboard détaillé, il est important d'étiqueter clairement vos données. Cela garantit une absence totale d'ambiguïté pour quiconque consulte votre widget, vos panneaux d'affichage, vos graphiques linéaires ou vos tableaux.

Nous y reviendrons dans une prochaine leçon sur le regroupement, pour découvrir comment AS peut également créer des ensembles de résultats propres dans des scénarios plus avancés. Ensuite, vous apprendrez à comparer des données dans différentes fenêtres temporelles.

Comparer les fenêtres temporelles

Vous avez maintenant l’habitude d’utiliser des plages de temps avec les clauses SINCE et UNTIL . Mais que faire si vous souhaitez comparer des valeurs provenant de différentes plages de temps ? Vous pouvez y parvenir avec la clause COMPARE WITH .

NRQL utilise SINCE et UNTIL pour définir une période d'intérêt. Ensuite, vous pouvez indiquer la période que vous souhaitez comparer en utilisant une clause COMPARE WITH [time period] AGO contenant une valeur de décalage relative.

Par exemple, dans l'exemple de requête ci-dessous, vous pouvez comparer les données du dernier jour avec les données de la semaine précédente en utilisant un décalage relatif d'il y a 1 semaine.

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

Pour cartographier la comparaison des valeurs au fil du temps, ajoutez TIMESERIES. Cela crée un graphique linéaire de la comparaison, vous permettant de visualiser comment cette période se compare aux données récentes et de la suivre au fil du temps.

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

Vous pouvez également spécifier plusieurs périodes de temps relatives différentes dans le même format, similaire à UNTIL. Par instance, vous pouvez spécifier 4 WEEKS AGO ou 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

Les comparaisons peuvent répondre rapidement aux questions sur ce qui se passe dans vos applications. Les différentes valeurs de ventes, de performances, de MTTR ou d’erreur sont-elles en hausse ou en baisse par rapport à la semaine dernière ? Et si vous enquêtez sur un problème, vous trouverez utile de comparer une période de performances problématiques à une période de performances normales.

Utiliser des filtres génériques

Vous savez maintenant comment utiliser une clause WHERE pour filtrer les résultats de notre requête. Outre l'utilisation d'opérateurs de comparaison standard, vous pouvez également utiliser LIKE et NOT LIKE si vous souhaitez déterminer si un attribut contient ou non une sous-chaîne spécifiée. Pour ce faire, vous pouvez utiliser le symbole de pourcentage (%) comme caractère générique n’importe où dans la chaîne.

Dans notre exemple de requête, vous pouvez obtenir le nombre de transactions avec le terme « amazonaws » n'importe où (début, milieu ou fin) dans le nom.

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 vous modifiez votre requête pour utiliser NOT LIKE à la place, vous obtiendrez le nombre de transactions qui ne contiennent pas le mot choisi (tel que « google », comme ci-dessous) dans leur nom.

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

Vous pouvez utiliser % comme caractère générique au début et à la fin, ce qui signifie que New Relic vérifie la valeur de l'attribut que vous avez choisi s'il contient le terme, tel que « Web », n'importe où dans le texte. De même, vous pouvez utiliser %Web OU Web% pour faire correspondre quelque chose qui se termine par « Web » ou commence par « Web », respectivement.

Vous pouvez également ajouter le caractère générique entre les chaînes pour une recherche plus précise. Cette requête recherche un nom de transaction qui contient le mot « amazon » suivi de n'importe quel texte, mais qui contient également le terme « .com » suivi d'un nombre quelconque de caractères. Ainsi, les résultats ne seront que des transactions avec « amazon » et « .com » dans le nom.

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

Que faire si vous avez besoin d'une spécificité extrême et que les noms n'ont pas de chaîne commune que vous pouvez faire correspondre à l'aide de caractères génériques ? Les opérateurs IN et NOT IN vous permettent de spécifier un ensemble de valeurs que vous souhaitez vérifier par rapport à un attribut. Au lieu de spécifier plusieurs clauses WHERE avec les opérateurs AND ou OR , vous pouvez simplifier une condition en répertoriant les valeurs entre parenthèses séparées par des virgules.

Dans cet exemple de requête, vous pouvez compter le nombre de transactions dont le sous-type est « graph.microsoft.com » ou « s3.amazonaws.com ». Si vous modifiez la requête pour utiliser NOT IN à la place, vous obtiendrez le nombre de transactions dont le sous-type n'est ni « 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

Vous pouvez désormais contrôler vos données et les manipuler pour faire ce dont vous avez besoin, ce qui vous permet de créer des tableaux de bord et des alertes puissants et significatifs. Ensuite, vous apprendrez à définir des plages horaires spécifiques à l’aide de NRQL.

Spécifier les plages horaires

Les clauses SINCE et UNTIL font plus que vous donner des informations sur des plages de temps relatives : vous pouvez également leur fournir une date ou une heure spécifique. Dans l'exemple de requête suivant, vous pouvez utiliser une date SINCE au format YYYY-MM-DD .

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

Vous pouvez l'utiliser pour créer des rapports SLA pour une période spécifiée. Vous pouvez même inclure une heure spécifique avec le format YYYY-MM-DD HH:MM. Dans cette requête, vous pouvez voir que les données sont définies à 18 heures.

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

Parfois, vous pouvez recevoir une heure d'événement au format Epoch (Unix). De manière pratique, vous pouvez utiliser l'horodatage d'époque avec les clauses SINCE et UNTIL afin de ne pas avoir à traduire manuellement ces valeurs dans un autre format de date.

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

Lorsque NRDB affiche des données sur une période donnée, il suppose que vous souhaitez voir les données du point de vue de votre fuseau horaire. Mais avec des équipes internationales dispersées, votre aujourd'hui pourrait être le demain ou le hier d'un coéquipier, selon leur emplacement. Vous pouvez utiliser la clause WITH TIMEZONE pour définir un fuseau horaire à partir duquel afficher les données. Cela affecte l'interprétation des valeurs dans les clauses SINCE et UNTIL .

Considérez les deux exemples de graphiques ci-dessous. Chaque requête a un fuseau horaire spécifié à l'aide de WITH TIMEZONE. Les deux sont à 8 heures d'intervalle. Notez que le modèle de données est le même, mais décalé de 8 heures pour s'aligner sur chaque fuseau horaire respectif :

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

Avant cette leçon, tous vos mécanismes de contrôle du temps dépendaient des temps relatifs à partir de maintenant. Vous pouvez désormais ajuster la vue en fonction de l'emplacement d'une personne dans le monde. Il se peut qu’un client de la côte est des États-Unis signale un problème à votre équipe d’ingénierie située sur la côte ouest. Votre équipe peut créer un dashboard et traduire la vue pour cartographier le fuseau horaire comme le citeraient les clients. Ainsi, si un client vous informe d'un problème à 9 heures du matin sur la côte est, vous pouvez être sûr, à 9 heures du matin, que vous n'aurez pas à traduire mentalement la différence.

Lorsque vous devez concentrer vos données sur des dates spécifiques d'un incident et que vous souhaitez étudier les données sans fenêtre temporelle mobile par rapport à l'heure actuelle, cela vous aidera à obtenir des données dans une fenêtre temporelle statique. Dans la prochaine et dernière leçon, vous continuerez à apprendre comment utiliser le temps dans vos rapports avec la cohorte basée sur le temps.

Utilisation de la cohorte basée sur le temps

Même si cela peut paraître complexe, la cohorte basée sur le temps signifie simplement un moyen d'organiser les données en groupes basés sur le temps tels que minuteOf, hourOf, weekOf, etc.

Lorsque vous utilisez la clause SINCE pour les durées, vous récupérez la durée totale de la requête. Mais ces données ne racontent pas toujours toute l’histoire ! Que faire si vous avez besoin d’analyser plus en détail les performances sur une période donnée ? Grâce au regroupement basé sur le temps, vous pouvez trier davantage les données en groupes logiques basés sur le temps.

En utilisant une combinaison de FACET et l'une des nombreuses fonctions basées sur le temps (telles que hourOf(timestamp)), vous pouvez prendre une semaine de données et comprendre les performances en fonction de l'heure spécifique à laquelle elles se sont produites. Cela révèle les tendances et identifie les moments les plus critiques pour vos applications :

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

Après avoir exécuté la requête ci-dessus, vous pouvez voir le temps de réponse le plus lent en fonction de l’heure de la journée. New Relic propose de nombreuses options différentes à adapter en fonction du temps. L'exemple précédent regroupe par heure, mais vous pouvez également regrouper par jour de la semaine pour déterminer quels jours ont les meilleurs et les pires temps de réponse.

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

Vous pouvez désormais voir les périodes les plus lentes de vos applications à un jour précis. Vous pouvez l'utiliser pour répondre à des questions essentielles pour l'entreprise, telles que « Quand vendons-nous le plus de produits ? », ou "Quand avons-nous le plus d'inscriptions ou de connexions ?".

Vous pouvez également regrouper les résultats par une date spécifique. Cela est utile lors de l'examen des rapports SLA ou de l'analyse des changements de performances sur une période donnée.

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 ate of functions

Les cohortes basées sur le temps exposent les problèmes qui se produisent à des minutes, des heures, des jours ou des semaines spécifiques. Quelles que soient les données que vous envoyez à New Relic, NRQL vous permet de les découper, de les organiser et de les visualiser comme vous le souhaitez.

Il existe également de nombreuses autres options disponibles pour regrouper, notamment la semaine, le mois et l'année en fonction de votre conservation des données. Pour voir la liste complète, rendez-vous sur notre page de documentation Résultats de groupe au fil du temps.

Quelle est la prochaine étape ?

Grâce aux connaissances que vous avez acquises ici, vous pouvez créer des visualisations dashboard et contrôler les aspects de vos données qui vous intéressent le plus. Vous pouvez utiliser ces techniques puissantes pour affiner la mise au point afin d'obtenir des alertes plus granulaires et spécifiques et produire des visualisations beaucoup plus intéressantes. Lorsque vous êtes prêt, vous pouvez passer à notre troisième didacticiel, où vous apprendrez des compétences NRQL plus intéressantes, notamment les filtres, les cas de facettes, l'histogramme, l'apdex, le filtrage sur les types d'événements, le remplacement des valeurs et l'extrapolation.

Droits d'auteur © 2025 New Relic Inc.

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