Utilisation des requêtes dans l'explorateur de traces

Vous pouvez utiliser les requêtes prêtes à l'emploi affichées dans l'explorateur de traces ou les modifier pour filtrer les données de trace selon les dimensions.

A propos des requêtes de l'explorateur de traces

Une requête de l'explorateur de traces suit une syntaxe de type SQL simplifiée et se compose des éléments suivants :

  • Clauses : instructions permettant de filtrer, de catégoriser et d'afficher des informations dans l'explorateur de traces.
  • Dimensions : métadonnées ou attributs définis via le balisage d'une étendue qui permettent de surveiller efficacement les différents niveaux d'une application. La liste complète des dimensions est disponible dans la section Champs de l'explorateur de traces.

Les requêtes de l'explorateur de traces sont une combinaison de clauses et de dimensions que vous pouvez utiliser pour filtrer les données de trace. Vous pouvez utiliser les requêtes prêtes à l'emploi disponibles dans chaque sélection rapide, telles que les traces et les services, ou modifier ces requêtes pour personnaliser davantage les résultats en fonction de vos besoins spécifiques.

Lorsque vous modifiez des requêtes, ajoutez ou mettez à jour des clauses dans l'ordre indiqué dans la syntaxe suivante. Les clauses requises figurent en italique. Les autres clauses sont facultatives.

SHOW (TRACES) or (SPANS)
dimensioncolumnsToShow_oneOrMore 
WHERE filtersdimensions_oneOrMore
GROUP BY dimensioncolumnsToShow_oneOrMore
HAVING expressionOverdimensionColumns_one
ORDER BY dimensioncolumnsToShow_oneOrMore
FIRST <n> ROWS
TIMESERIES (FOR dimensions_oneOrMore) (<n> minutes) 
BETWEEN time expression AND time expression

Dans cette syntaxe, les guillemets simples (' ') sont utilisés pour les constantes de chaîne et les guillemets doubles (" ") sont utilisés pour les identificateurs entre guillemets. Si l'identificateur se compose d'un seul mot, les guillemets sont facultatifs. Notez que les valeurs de dimension ajoutées avec différentes clauses telles que where et group by sont sensibles à la casse.

Les opérations arithmétiques telles que l'addition, la soustraction, la multiplication et la division peuvent être utilisées dans les expressions comme vous pouvez le voir ci-dessous :

show (traces) min(UserName) as "User Name",
    min(BrowserName) as "Browser Name",
    min(BrowserVersion) as "Browser Version",
    sum(PageResponseTime) as "Total Response Time",
    sum(PageViews) as "Page Views",
    sum(ErrorCount) as "Error Count",
    count(*) as "Traces",
    avg(ConnectTime) as "Connect Time",
    max(TraceLatestSpanEndTime) - min(TraceFirstSpanStartTime) as "Session Duration"  
where ApmrumPageUpdateType is not omitted OR ApmrumType='Connection'
group by SessionId
order by max(TraceLatestSpanEndTime) - min(TraceFirstSpanStartTime)

Assistance de requête : lorsque vous utilisez des requêtes, la liste des attributs et fonctions disponibles apparaît après la saisie d'un espace et la mise en pause automatique. La fonctionnalité d'aide sur les requêtes peut être appelée manuellement à l'aide de CTRL+Space si nécessaire.

Langage de requête de l'explorateur de traces

Le tableau suivant fournit des informations détaillées sur les clauses qui peuvent être utilisées dans une requête de l'explorateur de traces :

Clause Description
show Permet d'indiquer la source des données de base de la requête (des étendues, des traces ou une demande de dimensions de trace ou d'étendue).

Exemple 1 : show (traces)

Exemple 2 : show (spans)

Il ne s'agit pas d'une clause requise. Si elle n'est pas spécifiée, la requête suppose que toutes les traces doivent être affichées.

Requêtes et sous-requêtes imbriquées : vous pouvez utiliser des requêtes imbriquées avec la clause show.

Exemple 1 : show (show (show traces * ) count(*) as c ) c

Exemple 2 : show traces traceid where serviceName in (show spans serviceName where serviceName is not omitted and operationName= 'A' group by serviceName first 10 rows)

Restrictions relatives aux requêtes imbriquées :
  • Ne peut pas contenir de clause de sélection. Utilisez plutôt des requêtes imbriquées IN et NOT IN.
  • Une requête imbriquée peut ne pas contenir d'opérations multi-pass (également appelées requêtes dépendantes). Seule la clause show la plus externe peut les contenir, auquel cas elles sont exécutées sur les résultats de la requête imbriquée.
  • Il n'existe pas de limite de ligne par défaut pour une requête imbriquée. Par défaut, une requête imbriquée prend en compte toutes les lignes. Voir l'exemple 1 ci-dessus.

    Si nécessaire, moins de lignes peuvent être demandées en ajoutant une clause first n rows explicite à la requête imbriquée.

  • Ne peut pas faire référence à des valeurs dans une requête externe (aucune requête imbriquée corrélée).
Restriction applicable aux sous-requêtes :
  • Une sous-requête utilisée dans une expression, comme indiqué dans l'exemple 2 ci-dessus, doit comporter une clause first n rows pour que la requête renvoie une erreur. Le nombre maximal de lignes pouvant être demandées dans une expression IN ou NOT IN est de 1 million.

Clause de sélection

Recherche un ensemble de traces ou de étendues qui seront recherchées par le reste de la requête.

Syntaxe : FROM <virtualTable> WHERE <whereClause> FIRST n rows

Exemple :

show traces from spans where serviceName='a' first 100 rows *

Une limite est requise dans cette clause, car seul un nombre limité d'éléments peut être utilisé pour la recherche et cette clause ne peut être utilisée que dans une requête de trace.

Clause des expressions renvoyées Permet d'indiquer les dimensions de trace ou d'étendue ou les fonctions d'agrégation à afficher sous forme de colonnes dans la liste. L'identificateur as fournit éventuellement un alias pour chaque en-tête de colonne. L'alias doit être unique.

Exemple :

ServiceName as Service

Si vous ajoutez un espace après l'identificateur as, vous devez placer la valeur du nom de colonne entre guillemets " ".

Voici les fonctions prises en charge pouvant être utilisées avec cette clause :

  • abs : renvoie la valeur absolue d'une expression numérique.

    Exemple :

    abs(errorcount)

  • avg : renvoie la valeur moyenne d'une dimension numérique.

    Exemple :

    avg(SpanDuration) as "Duration"

  • cast : permet de spécifier une unité pour une expression, en prenant l'expression et l'unité souhaitée comme arguments. Cela peut entraîner l'affichage différent de la valeur renvoyée par l'interface utilisateur.

    Syntaxe : cast(expression, unit)

    • expression est les données d'entrée à représenter. Il doit s'agir d'expressions numériques ou temporelles.
    • unit est l'unité qui détermine la façon dont l'entrée est affichée/transformée vers la sortie. Les valeurs suivantes sont disponibles :
      • EPOCH_TIME_MS: Temps en millisecondes.
      • DURATION_MS : durée en millisecondes.
      • BYTES : taille en octets.

    Exemple 1 :

    cast(myTimeAttribute, 'EPOCH_TIME_MS')

    Exemple 2 :

    cast(myDuration, 'DURATION_MS')

    Exemple 3 :

    cast(myStorageSize, 'BYTES')

  • ceil : renvoie la valeur longue la plus élevée suivante si l'expression comporte une partie fractionnaire différente de zéro, sinon elle renvoie la valeur en tant que valeur longue.

    Exemple :

    ceil(traceDuration)

  • conditional_count : renvoie le nombre total (nombre) d'une expression conditionnelle.

    Syntaxe : conditional_count(conditional expression)

    Exemples :

    conditional_count(dimensionA = 'abc')

  • count : renvoie le nombre total pour une dimension.

    Exemples :

    count(OperationName)as "Operation Count"

    count(*) as "Trace Count"

  • count_distinct : renvoie le nombre de valeurs distinctes pour une dimension.

    Exemple :

    count_distinct(sessionId) as "Sessions"

  • date_bucket : renvoie une expression de temps transformé.
    Syntaxe : date_bucket(numeric expression, string)
    • numeric expression est l'entrée d'heure qui doit être une valeur numérique avec une unité EPOCH_TIME_MS.
    • string est la chaîne qui détermine la façon dont l'entrée d'heure est transformée en sortie. Les options valides disponibles sont les suivantes :
      • 'day_of_week' : les valeurs de retour valides sont comprises entre 1 et 7, ce qui indique le jour UTC de la semaine (dimanche = 1).
      • 'day_of_month' : les valeurs de retour valides sont comprises entre 1 et 31, ce qui indique le jour UTC du mois.
      • 'day_of_year' : les valeurs de retour valides sont comprises entre 1 et 366 en fonction du temps universel coordonné (UTC).
      • 'month_of_year' : les valeurs de retour valides sont comprises entre 1 et 12 en fonction du temps universel coordonné (UTC).
      • 'hour_of_day' : les valeurs de retour valides sont comprises entre 0 et 23 en fonction du temps universel coordonné (UTC).
      • 'minute_of_hour' : les valeurs de retour valides sont comprises entre 0 et 59.
      • 'calendar_quarter_of_year' : les valeurs de retour valides sont comprises entre 1 et 4 en fonction du temps universel coordonné (UTC).
      • 'truncate_day' : la valeur d'heure de retour valide est le jour en cours au milieu de l'heure UTC.
      • 'truncate_hour' : la valeur de retour valide est le début de l'heure UTC.
      • 'truncate minute' : la valeur de retour valide est le début de la minute UTC.
  • floor : tronque une partie fractionnaire de la valeur des expressions et renvoie une valeur de type long.

    Exemple :

    floor(traceDuration)

  • histogram : produit un histogramme des données dans des attributs numériques. Il répartit les données dans des buckets de largeur égale (histogram(numeric_attr, min_value, max_value, num_buckets)).

    Exemple :

    histogram(spanDuration, 0, 6000, 3)

  • max : renvoie la valeur maximale d'une dimension.

    Exemple :

    max(SpanDuration) as "Maximum Duration"

  • min : renvoie la valeur minimale d'une dimension.

    Exemple :

    min(SpanDuration) as "Minimum Duration"

  • mod : renvoie le reste de expression2 divisé par expression1. Si expression1 est égal à 0, il renvoie la valeur de expression2.

    Syntaxe : mod(expression1, expression2)

    Cette fonction prend comme arguments tout type de données numériques ou tout type de données non numériques qui peut être implicitement converti en type de données numériques. L'argument avec la priorité numérique la plus élevée est déterminé, et les arguments restants sont implicitement convertis vers ce type de données, et ce type de données est renvoyé.

    Exemple :

    mod (errorcount, spancount)

  • omittedTo : permet d'affecter une valeur à une dimension qui n'a pas de valeur.

    Exemple :

    omittedTo(UserName, 'John Doe')

    Dans l'exemple ci-dessus, si une valeur est affectée à la dimension UserName, cette valeur est affichée dans les résultats. Si aucune valeur n'est affectée, la valeur John Doe est affichée.

  • percent_of_items : renvoie le pourcentage des traces ou des étendues représentées par la ligne en cours. La valeur de percent_total_items() est égale à count(*)/total_items()*100.

    Exemple :

    show traces serviceName, count(*), total_items(), percent_of_items() group by serviceName

  • percent_with_root_error : renvoie le pourcentage de traces terminées dont l'étendue racine est marquée par une erreur. Cette valeur est égale à sum(traceRootSpanErrorCount)/count(traceRootSpanErrorCount)*100.

    Exemple :

    show traces serviceName, sum(traceRootSpanErrorCount), count(traceRootSpanErrorCount), percent_with_root_error() group by serviceName

  • percentile : renvoie la valeur du centile approximatif pour un attribut numérique ((numeric_attr, 0-100) ).

    Exemple :

    percentile(traceDuration, 90)

    Remarque : cette opération est actuellement implémentée en termes de fonction oracle database approx_percentile() et calcule une valeur de centile approximative.

  • rate : renvoie count() au fil du temps.

    Exemple :

    show traces rate() between now()-1 hour and now() timeseries 5 minutes

    Dans l'exemple ci-dessus, le résultat de la requête principale est calculé sur 60 minutes, de sorte que la valeur affichée dans le résultat sera count()/60. Lorsque la série temporelle est calculée, chaque point de données calcule un nombre de 5 minutes, de sorte que la valeur de taux pour chaque point sera count()/5. Cela donne un taux par minute à la fois dans le résultat global et pour chaque point de la série chronologique.

  • regexp_count : renvoie le nombre total d'occurrences d'un modèle dans la chaîne source à partir de la position indiquée. Elle renvoie 0 si aucune correspondance n'est trouvée dans la chaîne source à partir de la position de recherche ou renvoie le nombre d'occurrences du modèle de recherche dans la chaîne source à partir de la position de début donnée.
    Syntaxe : regexp_count (expression, pattern, position, match_parameter)
    • expression est une expression de chaîne. Une expression de chaîne valide (caractère source) est un attribut valide actif ou une expression de chaîne créée à l'aide d'attributs et d'opérateurs (par exemple, serviceName || operationName).
    • pattern est un modèle d'expression régulière valide qui sera utilisé pour la validation et la recherche du modèle.
    • position est un entier positif indiquant la position du caractère source où la recherche doit commencer. Après avoir trouvé la première occurrence, il recherche la deuxième occurrence après la première.
    • match_parameter est le paramètre de correspondance qui indique le comportement de la correspondance.
      Les valeurs prises en charge sont les suivantes :
      • i : indique la correspondance sans distinction entre les majuscules et les minuscules.
      • c : indique la mise en correspondance sensible à la casse et aux accents.
      • n : autorise le point (.) dans l'expression régulière. Si ce caractère est omis, le point ne correspond pas au nouveau caractère de ligne.
      • m : la chaîne source est traitée comme plusieurs lignes. caret (^) est le début et $ est la fin de n'importe quelle ligne n'importe où dans la chaîne source, plutôt que seulement au début de la fin de la chaîne source entière. Si ce paramètre est omis, la chaîne source est traitée comme une seule ligne.
      • x : ignorer les caractères blancs. Par défaut, les caractères non imprimables correspondent à eux-mêmes.

    Exemple :

    show TRACES traceId where REGEXP_COUNT(traceId, 'a', 7, 'c') >= 2

    Dans l'exemple ci-dessus, la requête recherche des traces comportant au moins 2 occurrences du caractère :a dans traceId, la recherche commençant à la position 7 du caractère traceId.

    Remarque

    Vous pouvez également fournir seulement 2 arguments :

    regexp_count (expression, pattern)

    Exemple : show TRACES traceId where REGEXP_COUNT(traceId, 'a') >= 2

    L'exemple ci-dessus recherche les traces qui ont 2 occurrences ou plus du modèle/de la chaîne : a dans traceId.

  • regexp_instr : recherche un modèle d'expression régulière dans une expression donnée et renvoie la position de début du premier caractère du modèle dans la chaîne.
    Syntaxe : regexp_instr (expression, pattern)
    • expression est une expression de chaîne. Une expression de chaîne valide est un attribut valide actif (tel que traceId et serviceName) ou une expression de chaîne créée à l'aide d'attributs et d'opérateurs (tel que serviceName || operationName).
    • pattern est un modèle d'expression régulière valide qui sera utilisé pour la validation et la recherche du modèle.

    Exemple :

    show TRACES REGEXP_INSTR(serviceName, 'cli') as RegexInstr, traceId

    Dans l'exemple ci-dessus, la requête recherche les traces dont les valeurs serviceName commencent par le modèle/la chaîne : cli.

  • regexp_like : effectue la mise en correspondance d'expressions régulières sur l'expression de chaîne donnée et renvoie les expressions de chaîne (attributs) qui ont été mises en correspondance.

    Syntaxe : regexp_like (expression, pattern, match_parameter)

    • expression est une expression de chaîne. Une expression de chaîne valide est un attribut valide actif (tel que traceId et serviceName) ou une expression de chaîne créée à l'aide d'attributs et d'opérateurs (tel que serviceName || operationName).
    • pattern est un modèle d'expression régulière valide qui sera utilisé pour la validation et la recherche du modèle.
    • match_parameter est le paramètre de correspondance qui indique le comportement de la correspondance. Facultatif.
      Les valeurs prises en charge sont les suivantes :
      • i : indique la correspondance sans distinction entre les majuscules et les minuscules.
      • c : indique la mise en correspondance sensible à la casse et aux accents.
      • n : autorise le point (.) dans l'expression régulière. Si ce caractère est omis, le point ne correspond pas au nouveau caractère de ligne.
      • m : la chaîne source est traitée comme plusieurs lignes. caret (^) est le début et $ la fin de n'importe quelle ligne n'importe où dans la chaîne source, plutôt que seulement au début de la fin de la chaîne source entière. Si ce paramètre est omis, la chaîne source est traitée comme une seule ligne.
      • x : ignorer les caractères blancs. Par défaut, les caractères non imprimables correspondent à eux-mêmes.

    Exemples :

    • show TRACES traceId where REGEXP_LIKE(traceId, 'aa')

      Dans l'exemple ci-dessus, la requête recherche des traces dont les valeurs traceId correspondent au modèle/à la chaîne : aa.

    • show TRACES traceId where REGEXP_LIKE(traceId, '^aa', 'c')

      Dans l'exemple ci-dessus, la requête recherche les traces dont les valeurs traceId correspondent au modèle/à la chaîne : aa en minuscules (sensible à la casse).

  • regexp_replace : recherche un modèle source dans une chaîne donnée et renvoie une chaîne avec n'importe quelle occurrence du modèle source remplacée par le modèle donné.
    Syntaxe : regexp_replace (expression, pattern, replace_string, numeric expression)
    • expression est une expression de chaîne. Une expression de chaîne valide (caractère source) est un attribut valide actif (tel que traceId ou serviceName) ou une expression de chaîne créée à l'aide d'attributs et d'opérateurs (tel que serviceName || operationName).
    • pattern est un modèle d'expression régulière valide qui sera utilisé pour la validation et la recherche du modèle.
    • replace_string est la chaîne qui remplace les occurrences de la chaîne source.
    • numeric expression est un nombre ou une expression numérique valide qui indique l'occurrence de la chaîne source à remplacer. Facultatif.
    Exemples :
    • show TRACES regexp_replace(traceId, 'aa', 'ee') as traceIdReplaced, traceId where REGEXP_LIKE(traceId, 'aa')

    • show TRACES regexp_replace(traceId, 'a', 'apm', 3) as traceIdReplaced, traceId where REGEXP_LIKE(traceId, 'a')

    Remarque

    Vous pouvez également fournir 5 arguments.

    regexp_replace (expression, pattern, replace_string, numeric expression1, numeric expression2)

    Dans ce cas, numeric expression1 est un nombre ou une expression numérique valide qui indique l'occurrence de la chaîne source à partir de laquelle commencer la recherche, et numeric expression2 est un nombre ou une expression numérique valide qui indique l'occurrence de la chaîne source à remplacer.

    Par exemple, utilisez la requête ci-dessous pour commencer la correspondance de modèle avec la première occurrence du modèle/caractère a, et remplacez la deuxième occurrence de a par la chaîne apm.
    show TRACES regexp_replace(traceId, 'a', 'apm', 1, 2) as traceIdReplaced, traceId where REGEXP_LIKE(traceId, 'aa')
  • regexp_substr : recherche un modèle d'expression régulière dans une expression de chaîne ou un attribut donné et renvoie la sous-chaîne à partir de cette expression de chaîne ou de cet attribut.
    Syntaxe : regexp_substr (expression, pattern)
    • expression est une expression de chaîne. Une expression de chaîne valide (caractère source) est un attribut valide actif (tel que traceId ou serviceName) ou une expression de chaîne créée à l'aide d'attributs et d'opérateurs (tel que serviceName || operationName).
    • pattern est un modèle d'expression régulière valide qui sera utilisé pour la validation et la recherche du modèle.

    Exemple 1 :

    show TRACES REGEXP_SUBSTR(serviceName, 'cli') as RegexSubstr, traceId

    L'exemple ci-dessus recherche les traces dont serviceName commence par le modèle/la chaîne : cli.

    Exemple 2 :

    show TRACES traceId, serviceName, REGEXP_SUBSTR(serviceName, 'RUM') as RegexSubstr where REGEXP_SUBSTR(serviceName, 'RUM') = 'RUM'

    L'exemple ci-dessus recherche les traces dont serviceName contient 'RUM', supprime la métrique de valorisation de serviceName et renvoie cette valeur.

  • span_summary : renvoie un récapitulatif des étendues dans une trace. Cette fonction peut uniquement être utilisée avec show(traces) dans les requêtes non groupées.

    Exemple :

    span_summary() as Spans

  • stddev : renvoie l'écart type de l'expression donnée.

    Exemple :

    stddev(traceDuration+1)

  • substr : renvoie une sous-chaîne à partir de la chaîne donnée.
    Syntaxe : substr (expression, numeric expression1, numeric expression2)
    • expression est une expression de chaîne. Une expression de chaîne valide (caractère source) est un attribut valide actif (tel que traceId ou serviceName) ou une expression de chaîne créée à l'aide d'attributs et d'opérateurs (tel que serviceName || operationName).
    • numeric expression1 (start position) est une expression numérique qui correspond à un nombre ou à un nombre qui indique la position de début de la sous-chaîne.

      Si start position est égal à 0, il est traité comme 1.

      Si start position est positif, la fonction compte à partir du début du caractère pour trouver le premier caractère. Si elle est négative, la fonction compte en arrière à partir de la fin du caractère.

    • numeric expression2 (length) est une expression numérique qui correspond à un nombre ou à un nombre qui indique la longueur de la sous-chaîne à partir de la position de début de la sous-chaîne.

      length est toujours positif et ne renvoie que le nombre de caractères existant dans la valeur.

      Si length est inférieur à 1, la valeur NULL est renvoyée. Si length est supérieur à la longueur de l'expression de chaîne (chaîne source), la chaîne entière est renvoyée.

    Exemple :

    show TRACES SUBSTR(traceId, 0, 1) as traceShortId, traceId

    L'exemple ci-dessus recherche traceShortId avec la longueur traceShortId 1, en commençant à la position 1 de traceId.

  • sum : renvoie la valeur agrégée d'une dimension numérique.

    Exemple :

    sum(ErrorCount) as "Errors"

  • time_bucket : compte tenu de l'attribut de temps de la table (StartTime ou TraceStartTime) et d'une granularité temporelle prise en charge, la fonction renvoie un numéro de bucket dans lequel se trouve la ligne. Elle est principalement utilisée pour exprimer des requêtes de séries temporelles.

    Exemple :

    Dans une requête d'étendue : time_bucket(15, StartTime)

    Dans une requête de trace : time_bucket(15, TraceStartTime)

    Une valeur time_bucket() peut être reconvertie en une période unix en millisecondes à l'aide de l'expression java suivante : bucketNumber * TimeUnit.MINUTES.toMillis(bucketInMinutes);

  • time_bucket_start : renvoie le début de la période sous forme de valeur temporelle en millisecondes depuis la période (unité : EPOCH_TIME_MS). Il peut être appelé avec un seul argument, la taille du bucket en minutes ou sans argument, auquel cas le système détermine la taille du bucket en fonction de la durée de la requête.

    Exemple :

    Dans une requête d'étendue : time_bucket(15)

    Dans une requête de trace : time_bucket()

  • total_items : renvoie le nombre total de traces ou d'étendues prises en compte par la requête.

    Exemple 1 :

    show traces count(*), total_items()

    Exemple 2 :

    show traces count(*), total_items() group by service name

    REMARQUE : Dans l'exemple 1, count(*) et total_items() sont identiques car la requête n'est pas groupée. Dans l'exemple 2, count(*) fait référence au nombre d'éléments du groupe pour la ligne, tandis que total_items() a la même valeur que dans l'exemple 1.

  • total_rows : renvoie le nombre total de lignes qui apparaîtraient dans l'ensemble de résultats si FIRST x ROWS pouvait être défini sur illimité.

    Cela peut être utile lorsque vous recherchez la cardinalité d'une certaine combinaison de dimensions.

    Exemple :

    show spans total_rows() where component = 'SERVLET' group by serviceName, operationName first 1 rows

  • unique_values : renvoie les valeurs uniques d'une dimension et le nombre de fois où chacune des valeurs se produit. Si une dimension comporte cinq valeurs uniques ou moins, elles sont affichées dans un graphique à secteurs. Si une dimension comporte plus de cinq valeurs uniques, un lien apparaît dans la colonne. Vous pouvez cliquer dessus pour afficher la liste des valeurs uniques.

    Exemple :

    unique_values(ApmrumPageUpdateType) as "Page Load/Update"

where Permet de filtrer les résultats avant qu'ils ne soient regroupés.

Exemple :

where ApmrumPageUpdateType is not omitted OR ApmrumType='Connection' OR ApmrumType='Script Error'

Voici les expressions prises en charge :

  • Opérateur booléen AND entre deux expressions.

    Exemple :

    ServiceName='service1' and OperationName='operation1'

  • Opérateur booléen OR entre deux expressions.

    Exemple :

    ServiceName='service1' or ServiceName='service2'

  • Regroupement () permettant de déterminer l'ordre des expressions dans une expression complexe.

    Exemple :

    (ServiceName ='a' or ServiceName='b') and (OperationName='a' or OperationName='b')

  • Comparaison d'une dimension effectuée via une référence de dimension et une valeur constante. Les opérations prises en charge sont les suivantes :

    =,<>, >, >=, <, <=

    Exemple :

    ServiceName <> 'DoNotReturn'

  • Expression de valeur IN qui compare la dimension aux valeurs répertoriées.

    Exemple :

    ServiceName in ('service1', 'service2')

  • Expression de valeur IN et NOT IN qui compare plusieurs dimensions aux valeurs répertoriées.

    Exemple :

    (ServiceName, OperationName) in (('service1', 'operation1'))

  • Expression IS OMITTED pour tester si une valeur de dimension est incluse ou IS NOT OMITTED pour tester si une valeur de dimension est manquante.

    Exemple :

    OperationName is omitted

  • Expression LIKE permettant de rechercher des correspondances d'une valeur de dimension particulière ou NOT LIKE pour rechercher des valeurs de dimension à l'exception de celle indiquée.

    Exemple :

    OperationName like ‘Ajax /path/%’

group by Permet de regrouper les résultats en fonction d'une dimension donnée et de les afficher sous forme de lignes.

Exemple :

group by ServiceName

Si la clause group by fait partie d'une requête avectimeseries ou unique_values, les colonnes time series ou unique_values() ne sont pas affichées dans les lignes de résultat dans lesquelles la dimension group by n'a pas de valeur.

Exemple :

show (traces) UserName as "User Name", unique_values(OperationName), count(*) group by UserName timeseries

Dans cet exemple, les étendues sont regroupées en fonction de la dimension UserName et, si aucune valeur n'est affectée à la dimension UserName pour une étendue, cette ligne n'affiche pas les colonnes timeseries et unique_values.

having Permet de filtrer davantage les résultats regroupés à l'aide de la clause group by.

Syntaxe : group by dimension having expression

expression : l'expression de la clause having peut faire référence aux expressions de la clause group by ou aux agrégations concernant les groupes.

Voici les expressions prises en charge :

  • Opérateur booléen AND entre deux expressions.

    Exemple :

    ServiceName='service1' and OperationName='operation1'

  • Opérateur booléen OR entre deux expressions.

    Exemple :

    ServiceName='service1' or ServiceName='service2'

  • Regroupement () permettant de déterminer l'ordre des expressions dans une expression complexe.

    Exemple :

    (ServiceName ='a' or ServiceName='b') and (OperationName='a' or OperationName='b')

  • Comparaison d'une dimension effectuée via une référence de dimension et une valeur constante. Les opérations prises en charge sont les suivantes :

    =,<>, >, >=, <, <=

    Exemple :

    ServiceName <> 'DoNotReturn'

  • Expression de valeur IN qui compare la dimension aux valeurs répertoriées.

    Exemple :

    ServiceName in ('service1', 'service2')

  • Expression de valeur IN et NOT IN qui compare plusieurs dimensions aux valeurs répertoriées.

    Exemple :

    (ServiceName, OperationName) in (('service1', 'operation1'))

  • Expression IS OMITTED pour tester si une valeur de dimension est incluse ou IS NOT OMITTED pour tester si une valeur de dimension est manquante.

    Exemple :

    OperationName is omitted

  • Expression LIKE pour rechercher les correspondances d'une valeur de dimension particulière ou NOT LIKE pour rechercher des valeurs de dimension à l'exception de celle indiquée.

    Exemple :

    OperationName like ‘Ajax /path/%’

Exemples :
  • group by errorCount having ErrorCount = 0
  • show traces errorCount, count(*) group by errorCount having errorCount < 10 and count(*) = 10
order by Permet de définir le tri de la liste en fonction d'une dimension donnée dans l'ordre croissant (asc) ou décroissant (desc).

Exemple :

order by avg(ApdexScore) asc

Il s'agit d'une clause facultative. Si elle n'est pas indiquée, les résultats ne sont pas triés.

Clause de limitation Permet de limiter la liste au nombre spécifié. Si cette option est omise, la valeur par défaut est FIRST 100 ROWS.

Exemple :

FIRST 5 ROWS

timeseries Permet d'afficher un graphique de série temporelle pour les dimensions sélectionnées dans la clause select pour une période définie. Vous pouvez déterminer la dimension pour laquelle afficher le graphique de série temporelle dans la clause timeseries. Si aucune dimension n'est indiquée, les graphiques de série temporelle sont affichés pour chaque dimension numérique dans la clause des expressions renvoyées.

Si aucune période (<n> minutes) n'est ajoutée à la clause, la période dépend de la période sélectionnée dans l'explorateur de traces.

Exemples :

timeseries for avg(TraceDuration) 60 minutes

timeseries

between Permet d'afficher les résultats pour les horodatages sélectionnés au format d'heure UTC. Si cette clause est utilisée, elle remplace la période sélectionnée dans l'explorateur de traces.

Exemple :

BETWEEN 2021-02-17T01:38:49.318Z AND 2021-02-18T01:38:49.318Z

BETWEEN peut également prendre time expression au lieu d'un horodatage.

Exemple :

BETWEEN queryStartTime() AND queryEndTime()

expression d'heure Affiche une durée en millisecondes.