Voulez-vous mieux comprendre vos données New Relic ? Le langage de requête New Relic (NRQL) peut vous aider. NRQL vous permet d'analyser vos données en temps réel. Même si cela peut paraître insurmontable à première vue, ne vous inquiétez pas.

Dans la première partie et la deuxième partie, nous avons couvert 10 fonctions et clauses NRQL essentielles qui vous aideront à mieux comprendre NRQL et à obtenir des informations plus détaillées sur vos données. Nous avons abordé les pourcentages, les cartes de densité, les widgets conditionnels et quelques autres fonctions et clauses qui vous aideront à analyser facilement vos données télémétriques.

Dans la prochaine partie de cette série de blogs, nous explorons les fonctions existantes de NRQL ainsi que les nouveaux ajouts intéressants qui peuvent faciliter les transformations, le formatage et la visualisation des données.

Formatage

toDateTime

Utilisez cette fonction pour transformer un horodatage brut en une chaîne datetime formatée de votre choix.

Cette fonction est utile lorsque vous avez de grands datasets ou logs dans lesquels l'horodatage n'est pas facilement lisible ou présenté sous plusieurs formats différents. Avec cette fonction, vous pouvez convertir ces horodatages bruts en un format plus lisible pour vous, ce qui facilite l'analyse et la compréhension de vos données.

toDateTime() prend trois arguments, dont deux sont facultatifs :

  • Timestamp : il doit s'agir d'un horodatage brut au format millisecondes d'epoch. Par exemple :  1709787389000 
  • (Facultatif) Pattern : un modèle de chaîne pour formater la date et l'heure dans le format spécifié. Cela peut être YYYY-MM-dd HH:mm:ss ou YYYY-MMM-dd hh:mm:ss et bien d'autres.
  • (Facultatif) Timezone : un paramètre facultatif de troisième position pour spécifier le fuseau horaire. Reportez-vous à la section des références pour obtenir la liste de toutes les valeurs de chaîne de fuseau horaire prises en charge.

Voici un exemple d'horodatage au format YYYY-MMM-dd hh:mm:ss z et le fuseau horaire Amérique/chicago

WITH 1709787389000 as timestampValue 
SELECT toDatetime(timestampValue,'yyyy-MM-dd  HH:mm:ss z', timezone: 'America/Chicago') as formattedTimeStamp 

Vous pouvez également utiliser la clause WITH TIMEZONE au lieu de timezone comme troisième paramètre.

WITH 1709787389000 as timestampValue 
SELECT toDatetime(timestampValue, 'yyyy-MM-dd hh:mm:ss') AS 'Formatted TimeStamp' 
FROM Event WITH TIMEZONE 'America/Los_Angeles'

Si aucun paramètre de modèle et de fuseau horaire n'est fourni, la fonction est par défaut au format « 1970-01-01T00:20:34.567Z », qui est également au format UTC.

Références


Transformations

jparse

Utilisez cette fonction pour analyser la chaîne JSON brute d'événements ou de logs sur une mappe de valeurs structurées qui peuvent être référencées directement dans NRQL en tant que type de première classe

jparse() prend deux arguments :

  • Attribut : une valeur de chaîne JSON
  • (Facultatif) Path : un paramètre facultatif de chemin pour analyser des valeurs spécifiques de la chaîne JSON.

Voici un exemple simple avec une chaîne JSON brute et l'extraction de la valeur du champ name :

WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString 
SELECT jparse(jsonString)[name] as Name

Si aucun sélecteur de clés n'est fourni, la fonction jparse() renvoie un JSON sérialisé.

jparse peut également fonctionner avec tableau de chaîne. Si vous avez un tableau simple, il peut être interrogé de la même manière qu'un objet JSON et la valeur d'index peut être utilisée comme sélecteur :

WITH '["key1","key2"]' as jsonString 
SELECT jparse(jsonString)[0]

Le paramètre de chemin (path) peut être utile s'il existe un objet JSON imbriqué et que plusieurs valeurs doivent être extraites. Ce qui suit est un exemple dans lequel le tableau contient une liste d'utilisateurs avec leurs noms et identifiants. Le paramètre path peut être fourni sous forme d'expression régulière pour récupérer tous les identifiants de chaque utilisateur.

WITH  '{"users": [{"name": "A", "id": 5}, {"name": "B", "id": 10}]}' as jsonString, jparse(jsonString, 'users[*].id') as ids 
SELECT ids as UserIDs

Références :

pour plus d'informations, consultez référence sur la syntaxe du chemin.

mapKeys

Utilisez cette fonction pour extraire la liste des clés de la mappe fournie ou d'une chaîne JSON. La chaîne JSON peut être convertie en mappe à l'aide de la fonction jparse().

mapKeys prend un argument unique ; attribut : le dataset d'une mappe.

Voici un exemple simple d'extraction de toutes les clés d'une chaîne JSON fournie :

WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
 SELECT mapKeys(jparse(jsonString)) as keys

La requête NRQL ci-dessus désérialise les valeurs JSON, et mappe et renvoie toutes les clés ; c'est-à-dire ['name','gender','age'].

Cette fonction peut également être utilisée avec les chaînes JSON imbriquées. Cependant, elle extrait uniquement les clés de premier niveau :

WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString 
SELECT mapKeys(jparse(jsonString)) AS keys

mapValues

Comme la fonction mapKeys, mapValues peut aider à extraire toutes les valeurs du dataset de mappage fourni.

mapValues prend un seul argument ; attribut : un dataset de mappage.

Extrayons les valeurs de cette simple chaîne JSON :

WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString 
SELECT mapValues(jparse(jsonString)) as Values

Cette fonction est utilisée de la même manière que la chaîne JSON imbriquée, mais elle n'extrait et ne désérialise que les valeurs de premier niveau.

WITH  '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString 
SELECT mapValues(jparse(jsonString)) AS values

La valeur de l'objet imbriqué peut être affichée en changeant la visualisation en graphique JSON :


Visualisations

Dans les billets de blog précédents de cette série, nous avons abordé certaines visualisations prêtes à l'emploi telles que les mappes de densité, l'histogramme et le widget de mappe. Ici, je souhaite (ré)introduire une clause NRQL existante qui peut aider à lisser les graphiques ou à fournir plus de points de données pour la visualisation des lignes, des zones ou des diagrammes à barres empilées.

Slide By

La clause SLIDE BY autorise ce qu'on appelle des fenêtres glissantes. Celles-ci regroupent les données en fenêtres temporelles ou compartiments de temps qui se chevauchent, ce qui est différent des fenêtres en cascade.

Ces fenêtres peuvent aider à lisser les graphiques linéaires, offrant ainsi une résolution plus élevée à vos graphiques. Cette fonctionnalité peut être particulièrement utile lorsque vous souhaitez évaluer un dataset plus volumineux au format TIMESERIES avec plus de données dans chaque compartiment de temps.

Syntaxe

La clause SLIDE BY peut être utilisée avec la clause TIMESERIES.

La syntaxe est la suivante : SELECT ... TIMESERIES units SLIDE BY units

Usage

Dans l'exemple suivant, nous recherchons la durée moyenne de la transaction SINCE 5 MINUTES AGO en utilisant un compartiment TIMESERIES de 1 minute chacun. Le diagramme à barres empilées ci-dessous affiche les résultats de 5 tranches ou fenêtres temporelles.

SELECT average(duration) FROM Transaction
TIMESERIES 1 minute SINCE 5 minutes ago

Le même graphique peut être affiché sans les espaces dans chaque compartiment à l'aide de la clause SLIDE BY.

SELECT average(duration) FROM Transaction
TIMESERIES 1 minute SLIDE BY 30 seconds
SINCE 5 minutes ago

Voici un autre exemple avec les métriques PageView dans un graphique linéaire

La clauseTIMESERIES fournit plus de compartiments et un plus grand dataset à analyser, mais si vous souhaitez analyser plus de points de données dans la plage de fenêtre glissante, ajoutez simplement la clause SLIDE BY à la même requête, comme indiqué dans cet exemple :

 FROM PageView SELECT count(*) TIMESERIES 1 minute SLIDE BY 10 seconds

Notez que la taille du compartiment reste la même, mais les points de données sont bien plus élevés qu'avant et vous offrent un aperçu de résolution plus élevée dans les métriques PageView.

Références

 : - En savoir plus sur les fenêtres glissantes

Conclusion

En maîtrisant NRQL, vous pouvez capturer, transformer et interpréter vos données, ce qui vous permet de décomposer la situation dans son ensemble en éléments facilement compréhensibles. Cela vous aidera à identifier les problèmes au fur et à mesure qu'ils surviennent et à analyser vos données en temps réel, en tirant parti de vos données télémétriques. Que vous cherchiez à optimiser les performances, à identifier les tendances, à surveiller les indicateurs clés pour guider les décisions commerciales ou simplement à créer des dashboards avec des données personnalisées, NRQL est un outil indispensable qui peut vous aider à comprendre vos données de manière globale.