Gestione query in Trace Explorer

È possibile utilizzare le query pronte all'uso visualizzate nei prelievi rapidi in Trace Explorer oppure modificarle per filtrare i dati di trace in base alle dimensioni.

Informazioni sulle query Trace Explorer

Una query in Trace Explorer segue una sintassi SQL semplificata e consiste in:

  • Clausole: istruzioni che filtrano, classificano e visualizzano le informazioni in Trace Explorer.
  • Dimensioni: metadati o attributi definiti mediante l'applicazione di tag a un intervallo, che consentono il monitoraggio efficace dei vari livelli di un'applicazione. La lista completa delle dimensioni è disponibile in Campi in Trace Explorer.

Le query in Trace Explorer sono una combinazione di clausole e dimensioni che è possibile utilizzare per filtrare i dati di trace. È possibile utilizzare le query pronte all'uso disponibili in ogni selezione rapida, ad esempio Tracce e Servizi, oppure modificare queste query per personalizzare ulteriormente i risultati in base ai requisiti specifici.

Quando si modificano le query, aggiungere o aggiornare le clausole nell'ordine indicato nella seguente sintassi. La clausola obbligatoria si trova in italics e le altre clausole sono facoltative.

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

Nella sintassi, tenere presente che ' ' (virgolette singole) vengono utilizzate per le costanti stringa e " " (virgolette doppie) per gli identificativi tra virgolette. Se l'identificativo è una singola parola, le virgolette sono facoltative. Tenere presente che i valori di dimensione aggiunti con varie clausole, ad esempio where e group by, fanno distinzione tra maiuscole e minuscole.

Le operazioni aritmetiche come addizione, sottrazione, moltiplicazione e divisione possono essere utilizzate nelle espressioni come illustrato di seguito.

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)

Assistenza query: quando si utilizzano le query, viene visualizzato un elenco di attributi e funzioni disponibili dopo aver digitato uno spazio e dopo essere stati sospesi automaticamente. Se necessario, è possibile richiamare la funzione di assistenza per le query utilizzando CTRL+Space manualmente.

Lingua query Trace Explorer

Nella tabella riportata di seguito vengono fornite informazioni dettagliate sulle clausole che possono essere utilizzate in una query di Trace Explorer.

Clausola descrizione;
show Specifica l'origine dei dati di base per la query, che possono essere intervalli, trace o una richiesta di trace o dimensioni intervallo.

Esempio 1: show (traces)

Esempio 2: show (spans)

Questa non è una clausola obbligatoria. Se non viene specificato, la query presuppone che tutti i trace debbano essere visualizzati.

Query e subquery nidificate: è possibile utilizzare query nidificate con la clausola show.

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

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

Limitazioni delle query nidificate:
  • Non può contenere una clausola di selezione. Utilizzare invece le query nidificate IN e NOT IN.
  • Una query nidificata non può contenere operazioni con più passaggi (dette anche query dipendenti). Solo la clausola show più esterna può contenerla, nel qual caso viene eseguita sui risultati della query nidificata.
  • Nessun limite di righe predefinito per una query nidificata. Per impostazione predefinita, una query nidificata considererà tutte le righe. Cfr. l'esempio precedente 1.

    Se necessario, è possibile richiedere un numero inferiore di righe aggiungendo una clausola first n rows esplicita alla query nidificata.

  • Non può fare riferimento a valori in una query esterna (nessuna query nidificata correlata).
Limitazione subquery:
  • Una subquery utilizzata in un'espressione, come illustrato nell'esempio precedente 2, deve avere una clausola first n rows oppure la query restituirà un errore. Il numero massimo di righe che è possibile richiedere in un'espressione IN o NOT IN è 1 milione.

Clausola di selezione

Trova un set di trace o intervalli che verranno cercati dal resto della query.

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

Ad esempio:

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

In questa clausola è necessario un limite, in quanto solo un numero limitato di elementi può essere utilizzato per la ricerca e questa clausola può essere utilizzata solo all'interno di una query di trace.

Clausola Espressioni restituite Specifica quali dimensioni di trace o intervallo o funzioni di aggregazione devono essere visualizzate come colonne nell'elenco. L'identificativo as fornisce facoltativamente un alias per ogni intestazione di colonna. L'alias deve essere univoco.

Ad esempio:

ServiceName as Service

Se esiste uno spazio dopo l'identificativo as, il valore del nome della colonna deve essere racchiuso tra virgolette " ".

Di seguito sono riportate le funzioni supportate che possono essere utilizzate con questa clausola.

  • abs: restituisce il valore assoluto di un'espressione numerica.

    Ad esempio:

    abs(errorcount)

  • avg: restituisce il valore medio di una dimensione numerica.

    Ad esempio:

    avg(SpanDuration) as "Duration"

  • cast: consente di specificare un'unità per un'espressione, prendendo come argomenti l'espressione e l'unità desiderata. Ciò potrebbe causare il rendering del valore restituito dall'interfaccia utente in modo diverso.

    Sintassi: cast(expression, unit)

    • expression è il dato di input da rappresentare. Devono essere espressioni numeriche o temporali.
    • unit è l'unità che determina la modalità di visualizzazione/trasformazione dell'input nell'output. I valori disponibili sono:
      • EPOCH_TIME_MS: Tempo in millisecondi.
      • DURATION_MS: durata in millisecondi.
      • BYTES: dimensione in byte.

    Esempio 1:

    cast(myTimeAttribute, 'EPOCH_TIME_MS')

    Esempio 2:

    cast(myDuration, 'DURATION_MS')

    Esempio 3:

    cast(myStorageSize, 'BYTES')

  • ceil: restituisce il valore long più alto successivo se l'espressione ha una parte frazionaria diversa da zero, altrimenti restituisce il valore come lungo.

    Ad esempio:

    ceil(traceDuration)

  • conditional_count: restituisce il conteggio totale (numero) di un'espressione condizionale.

    Sintassi: conditional_count(conditional expression)

    Esempi:

    conditional_count(dimensionA = 'abc')

  • count: restituisce il conteggio totale per una dimensione.

    Esempi:

    count(OperationName)as "Operation Count"

    count(*) as "Trace Count"

  • count_distinct: restituisce il numero di valori distinti per una dimensione.

    Ad esempio:

    count_distinct(sessionId) as "Sessions"

  • date_bucket: restituisce un'espressione temporale trasformata.
    Sintassi: date_bucket(numeric expression, string)
    • numeric expression è l'input di tempo che deve essere un valore numerico con un'unità EPOCH_TIME_MS.
    • string è la stringa che determina la modalità di trasformazione dell'input temporale nell'output. Le opzioni valide disponibili sono:
      • 'day_of_week': i valori restituiti validi sono compresi tra 1 e 7 e indicano il giorno UTC della settimana (la domenica è 1).
      • 'day_of_month': i valori restituiti validi sono compresi tra 1 e 31 e indicano il giorno UTC del mese.
      • 'day_of_year': i valori restituiti validi sono compresi tra 1 e 366 in base a UTC.
      • 'month_of_year': i valori restituiti validi sono compresi tra 1 e 12 in base a UTC.
      • 'hour_of_day': i valori restituiti validi sono compresi tra 0 e 23 in base a UTC.
      • 'minute_of_hour': i valori restituiti validi sono 0-59.
      • 'calendar_quarter_of_year': i valori restituiti validi sono 1-4 in base a UTC.
      • 'truncate_day': il valore dell'ora di restituzione valida è il giorno corrente a mezzogiorno UTC.
      • 'truncate_hour': il valore restituito valido è l'inizio dell'ora UTC.
      • 'truncate minute': il valore restituito valido è l'inizio del minuto UTC.
  • floor: tronca la parte frazionaria del valore delle espressioni e restituisce un valore long.

    Ad esempio:

    floor(traceDuration)

  • histogram: produce un istogramma dei dati in attributi numerici. Distribuisce i dati nei bucket di larghezza uguale (histogram(numeric_attr, min_value, max_value, num_buckets)).

    Ad esempio:

    histogram(spanDuration, 0, 6000, 3)

  • max: restituisce il valore massimo di una dimensione.

    Ad esempio:

    max(SpanDuration) as "Maximum Duration"

  • min: restituisce il valore minimo di una dimensione.

    Ad esempio:

    min(SpanDuration) as "Minimum Duration"

  • mod: restituisce il resto di expression2 diviso per expression1. Se expression1 è 0, restituisce il valore di expression2.

    Sintassi: mod(expression1, expression2)

    Questa funzione accetta come argomenti qualsiasi tipo di dati numerico o qualsiasi tipo di dati non numerico che può essere convertito in modo implicito in un tipo di dati numerico. Viene determinato l'argomento con la priorità numerica più alta e gli argomenti rimanenti vengono convertiti implicitamente in tale tipo di dati e viene restituito tale tipo di dati.

    Ad esempio:

    mod (errorcount, spancount)

  • omittedTo: consente di assegnare un valore a una dimensione che non ha un valore.

    Ad esempio:

    omittedTo(UserName, 'John Doe')

    Nell'esempio precedente, se alla dimensione UserName è assegnato un valore, il valore assegnato viene visualizzato nei risultati e se non viene assegnato un valore, viene visualizzato John Doe.

  • percent_of_items: restituisce la percentuale dei trace o degli intervalli rappresentati dalla riga corrente. Il valore di percent_total_items() è uguale a count(*)/total_items()*100.

    Ad esempio:

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

  • percent_with_root_error: restituisce la percentuale di trace completati con un intervallo radice contrassegnato da un errore. Questo valore è uguale a sum(traceRootSpanErrorCount)/count(traceRootSpanErrorCount)*100.

    Ad esempio:

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

  • percentile: restituisce il valore percentile approssimativo per un attributo numerico ((numeric_attr, 0-100)).

    Ad esempio:

    percentile(traceDuration, 90)

    NOTA: questa opzione è attualmente implementata in termini di funzione approx_percentile() del database oracle e calcola un valore percentile approssimativo.

  • rate: restituisce il valore count() nel tempo.

    Ad esempio:

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

    Nell'esempio precedente, il risultato della query principale viene calcolato in 60 minuti in modo che il valore mostrato nel risultato sia count()/60. Quando la serie temporale viene calcolata, ogni datapoint calcola un conteggio per 5 minuti, quindi il valore della velocità per ogni punto sarà count()/5. Ciò consente di ottenere una velocità al minuto sia nel risultato complessivo che per ogni punto della serie temporale.

  • regexp_count: restituisce il numero totale di volte in cui si verifica un pattern nella stringa di origine a partire dalla posizione specificata. Restituisce 0 se non viene trovata alcuna corrispondenza nella stringa di origine a partire dalla posizione di ricerca oppure restituisce il numero di occorrenze del pattern di ricerca nella stringa di origine dalla posizione iniziale specificata.
    Sintassi: regexp_count (expression, pattern, position, match_parameter)
    • expression è un'espressione stringa. Un'espressione stringa valida (carattere di origine) è un attributo valido attivo o un'espressione stringa creata utilizzando attributi e operatori (ad esempio serviceName || operationName).
    • pattern è un pattern di espressione regolare valido che verrà utilizzato per la convalida e la ricerca del pattern.
    • position è un numero intero positivo che indica la posizione del carattere di origine da cui deve iniziare la ricerca. Dopo aver trovato la prima occorrenza, cerca la seconda occorrenza dopo la prima.
    • match_parameter è il parametro di corrispondenza che indica il funzionamento della corrispondenza.
      I valori supportati sono:
      • i: specifica la corrispondenza senza distinzione tra maiuscole e minuscole.
      • c: specifica la corrispondenza con distinzione tra maiuscole e minuscole e tra accenti.
      • n: consente il periodo (.) nell'espressione regolare. Se questo carattere viene omesso, il punto non corrisponde al nuovo carattere di riga.
      • m: la stringa di origine viene considerata come più righe. caret (^) è l'inizio e $ è la fine di qualsiasi riga in qualsiasi punto della stringa di origine, anziché solo all'inizio della fine dell'intera stringa di origine. Se questo parametro viene omesso, la stringa di origine viene considerata come una singola riga.
      • x: ignora gli spazi vuoti. Per impostazione predefinita, gli spazi vuoti corrispondono a se stessi.

    Ad esempio:

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

    Nell'esempio precedente, la query cerca i trace con 2 o più occorrenze del carattere:a all'interno di traceId con la ricerca che inizia nella posizione 7 del traceId.

    Nota

    È inoltre possibile fornire solo 2 argomenti:

    regexp_count (expression, pattern)

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

    Nell'esempio precedente vengono cercati i trace con 2 o più occorrenze del pattern/carica: a all'interno di traceId.

  • regexp_instr: cerca un pattern di espressione regolare in una determinata espressione e restituisce la posizione iniziale del primo carattere del pattern nella stringa.
    Sintassi: regexp_instr (expression, pattern)
    • expression è un'espressione stringa. Un'espressione stringa valida è un attributo valido attivo (ad esempio traceId e serviceName) o un'espressione stringa creata utilizzando attributi e operatori (ad esempio serviceName || operationName).
    • pattern è un pattern di espressione regolare valido che verrà utilizzato per la convalida e la ricerca del pattern.

    Ad esempio:

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

    Nell'esempio precedente, la query cerca i trace con valori serviceName che iniziano con il pattern/carattere: cli.

  • regexp_like: esegue la corrispondenza delle espressioni regolari sull'espressione stringa specificata e restituisce le espressioni stringa (attributi) corrispondenti.

    Sintassi: regexp_like (expression, pattern, match_parameter)

    • expression è un'espressione stringa. Un'espressione stringa valida è un attributo valido attivo (ad esempio traceId e serviceName) o un'espressione stringa creata utilizzando attributi e operatori (ad esempio serviceName || operationName).
    • pattern è un pattern di espressione regolare valido che verrà utilizzato per la convalida e la ricerca del pattern.
    • match_parameter è il parametro di corrispondenza che indica il funzionamento della corrispondenza. Facoltativo.
      I valori supportati sono:
      • i: specifica la corrispondenza senza distinzione tra maiuscole e minuscole.
      • c: specifica la corrispondenza con distinzione tra maiuscole e minuscole e tra accenti.
      • n: consente il periodo (.) nell'espressione regolare. Se questo carattere viene omesso, il punto non corrisponde al nuovo carattere di riga.
      • m: la stringa di origine viene considerata come più righe. caret (^) è l'inizio e $ è la fine di qualsiasi riga in qualsiasi punto della stringa di origine, anziché solo all'inizio della fine dell'intera stringa di origine. Se questo parametro viene omesso, la stringa di origine viene considerata come una singola riga.
      • x: ignora gli spazi vuoti. Per impostazione predefinita, gli spazi vuoti corrispondono a se stessi.

    Esempi:

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

      Nell'esempio precedente, la query cerca i trace con valori traceId che corrispondono al pattern/carattere: aa.

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

      Nell'esempio precedente, la query cerca i trace con valori traceId che corrispondono al pattern/carattere: aa in lettere minuscole (con distinzione tra maiuscole e minuscole).

  • regexp_replace: cerca un pattern di origine in una determinata stringa e restituisce una stringa con qualsiasi ricorrenza del pattern di origine sostituito con il pattern specificato.
    Sintassi: regexp_replace (expression, pattern, replace_string, numeric expression)
    • expression è un'espressione stringa. Un'espressione stringa valida (carattere di origine) è un attributo valido attivo (ad esempio traceId o serviceName) oppure un'espressione stringa creata utilizzando attributi e operatori (ad esempio serviceName || operationName).
    • pattern è un pattern di espressione regolare valido che verrà utilizzato per la convalida e la ricerca del pattern.
    • replace_string è la stringa che sostituisce le occorrenze della stringa di origine.
    • numeric expression è un numero o un'espressione numerica valida che indica l'occorrenza della stringa di origine da sostituire. Facoltativo.
    Esempi:
    • 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')

    Nota

    È inoltre possibile fornire 5 argomenti.

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

    In questo caso, numeric expression1 è un numero o un'espressione numerica valida che indica l'occorrenza della stringa di origine da cui iniziare la ricerca e numeric expression2 è un numero o un'espressione numerica valida che indica l'occorrenza della stringa di origine da sostituire.

    Ad esempio, utilizzare la query riportata di seguito per avviare la corrispondenza del pattern con la prima ricorrenza del pattern/carattere a e sostituire la seconda ricorrenza di a con la stringa apm.
    show TRACES regexp_replace(traceId, 'a', 'apm', 1, 2) as traceIdReplaced, traceId where REGEXP_LIKE(traceId, 'aa')
  • regexp_substr: cerca un pattern di espressione regolare in una determinata espressione o attributo stringa e restituisce la sottostringa da tale espressione o attributo stringa.
    Sintassi: regexp_substr (expression, pattern)
    • expression è un'espressione stringa. Un'espressione stringa valida (carattere di origine) è un attributo valido attivo (ad esempio traceId o serviceName) oppure un'espressione stringa creata utilizzando attributi e operatori (ad esempio serviceName || operationName).
    • pattern è un pattern di espressione regolare valido che verrà utilizzato per la convalida e la ricerca del pattern.

    Esempio 1:

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

    Nell'esempio precedente vengono cercati i trace con serviceName che iniziano con il pattern/carattere: cli.

    Esempio 2:

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

    Nell'esempio precedente vengono cercati i trace contenenti serviceName che contengono 'RUM' ed escludono RUM da serviceName e lo restituiscono.

  • span_summary: restituisce un riepilogo degli intervalli in una traccia. Questa funzione può essere utilizzata solo con show(traces) e nelle query non raggruppate.

    Ad esempio:

    span_summary() as Spans

  • stddev: restituisce la deviazione standard dell'espressione specificata.

    Ad esempio:

    stddev(traceDuration+1)

  • substr: restituisce una sottostringa dalla stringa specificata.
    Sintassi: substr (expression, numeric expression1, numeric expression2)
    • expression è un'espressione stringa. Un'espressione stringa valida (carattere di origine) è un attributo valido attivo (ad esempio traceId o serviceName) oppure un'espressione stringa creata utilizzando attributi e operatori (ad esempio serviceName || operationName).
    • numeric expression1 (start position) è un'espressione numerica che restituisce un numero o un numero che indica la posizione iniziale della sottostringa.

      Se start position è 0, viene considerato come 1.

      Se start position è positivo, la funzione conta dall'inizio del carattere per trovare il primo carattere. Se è negativo, la funzione conta all'indietro dalla fine del carattere.

    • numeric expression2 (length) è un'espressione numerica che restituisce un numero o un numero che indica la lunghezza della sottostringa a partire dalla posizione iniziale della sottostringa.

      Il valore length è sempre positivo e restituisce solo tutti i caratteri esistenti nel valore.

      Se length è minore di 1, viene restituito un valore nullo. Se length è maggiore della lunghezza dell'espressione stringa (stringa di origine), viene restituita l'intera stringa.

    Ad esempio:

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

    L'esempio precedente esegue la ricerca in traceShortId con la lunghezza traceShortId 1, a partire dalla posizione 1 del traceId.

  • sum: restituisce il valore di aggregazione di una dimensione numerica.

    Ad esempio:

    sum(ErrorCount) as "Errors"

  • time_bucket: data l'attributo time per la tabella (StartTime o TraceStartTime) e una venatura time supportata, la funzione restituisce un numero bucket in cui rientra la riga. Viene utilizzata principalmente nell'espressione di query di serie temporale.

    Ad esempio:

    In una query intervallo: time_bucket(15, StartTime)

    In una query di trace: time_bucket(15, TraceStartTime)

    Un valore time_bucket() può essere convertito in un tempo di epoca unix in millisecondi utilizzando la seguente espressione java: bucketNumber * TimeUnit.MINUTES.toMillis(bucketInMinutes);

  • time_bucket_start: restituisce l'inizio del bucket temporale come valore temporale in millisecondi dall'epoca (unità: EPOCH_TIME_MS). Può essere richiamata con un singolo argomento, la dimensione del bucket in minuti o senza argomenti. In tal caso, il sistema determinerà la dimensione del bucket in base all'intervallo di tempo della query.

    Ad esempio:

    In una query intervallo: time_bucket(15)

    In una query di trace: time_bucket()

  • total_items: restituisce il numero totale di trace o intervalli considerati dalla query.

    Esempio 1:

    show traces count(*), total_items()

    Esempio 2:

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

    NOTA: nell'esempio 1, count(*) e total_items() sono uguali perché la query non è raggruppata. Nell'esempio 2, count(*) si riferisce al numero di elementi nel gruppo per la riga, mentre total_items() ha lo stesso valore dell'esempio 1.

  • total_rows: restituisce il numero totale di righe che verranno visualizzate nel set di risultati se FIRST x ROWS può essere impostato su unlimited.

    Questo può essere utile quando si cerca la cardinalità di una certa combinazione di dimensioni.

    Ad esempio:

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

  • unique_values: restituisce i valori univoci di una dimensione e il numero di volte in cui ciascun valore si verifica. Se una dimensione ha cinque o meno valori univoci, questi vengono visualizzati in un grafico a torta. Se una dimensione ha più di cinque valori univoci, nella colonna viene visualizzato un collegamento su cui è possibile fare clic per visualizzare l'elenco di valori univoci.

    Ad esempio:

    unique_values(ApmrumPageUpdateType) as "Page Load/Update"

where Filtra i risultati prima di raggrupparli.

Ad esempio:

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

Di seguito sono riportate le espressioni supportate.

  • AND booleano di due espressioni.

    Ad esempio:

    ServiceName='service1' and OperationName='operation1'

  • OR booleano di due espressioni.

    Ad esempio:

    ServiceName='service1' or ServiceName='service2'

  • Raggruppamento di () per determinare l'ordine delle espressioni in un'espressione complessa.

    Ad esempio:

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

  • Confronto di una dimensione effettuata tramite un riferimento di dimensione e un valore costante. Le operazioni supportate sono:

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

    Ad esempio:

    ServiceName <> 'DoNotReturn'

  • Espressione del valore IN che confronta la dimensione con i valori elencati.

    Ad esempio:

    ServiceName in ('service1', 'service2')

  • Espressione del valore IN e NOT IN che confronta più dimensioni con i valori elencati.

    Ad esempio:

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

  • Espressione IS OMITTED per verificare se è incluso un valore dimensione oppure IS NOT OMITTED per verificare se manca un valore dimensione.

    Ad esempio:

    OperationName is omitted

  • Espressione LIKE per trovare le corrispondenze di un determinato valore di dimensione oppure NOT LIKE per cercare i valori di dimensione ad eccezione di quello specificato.

    Ad esempio:

    OperationName like ‘Ajax /path/%’

group by Raggruppa i risultati in base a una determinata dimensione e li visualizza in righe.

Ad esempio:

group by ServiceName

Se la clausola group by fa parte di una query con timeseries o unique_values, le colonne time series o unique_values() non vengono visualizzate nelle righe dei risultati in cui la dimensione group by non ha un valore.

Ad esempio:

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

Nell'esempio, gli intervalli vengono raggruppati in base alla dimensione UserName e, se un intervallo non dispone di un valore assegnato alla dimensione UserName, la riga non visualizza le colonne timeseries e unique_values.

having Filtra ulteriormente i risultati raggruppati per clausola group by.

Sintassi: group by dimension having expression

expression: l'espressione nella clausola having può fare riferimento alle espressioni nella clausola group by o alle aggregazioni sui gruppi.

Di seguito sono riportate le espressioni supportate.

  • AND booleano di due espressioni.

    Ad esempio:

    ServiceName='service1' and OperationName='operation1'

  • OR booleano di due espressioni.

    Ad esempio:

    ServiceName='service1' or ServiceName='service2'

  • Raggruppamento di () per determinare l'ordine delle espressioni in un'espressione complessa.

    Ad esempio:

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

  • Confronto di una dimensione effettuata tramite un riferimento di dimensione e un valore costante. Di seguito sono riportate le operazioni supportate.

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

    Ad esempio:

    ServiceName <> 'DoNotReturn'

  • Espressione del valore IN che confronta la dimensione con i valori elencati.

    Ad esempio:

    ServiceName in ('service1', 'service2')

  • Espressione del valore IN e NOT IN che confronta più dimensioni con i valori elencati.

    Ad esempio:

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

  • Espressione IS OMITTED per verificare se è incluso un valore dimensione oppure IS NOT OMITTED per verificare se manca un valore dimensione.

    Ad esempio:

    OperationName is omitted

  • Espressione LIKE per trovare le corrispondenze di un determinato valore di dimensione oppure NOT LIKE per cercare i valori di dimensione ad eccezione di quello specificato.

    Ad esempio:

    OperationName like ‘Ajax /path/%’

Esempi:
  • group by errorCount having ErrorCount = 0
  • show traces errorCount, count(*) group by errorCount having errorCount < 10 and count(*) = 10
order by Definisce l'ordinamento dell'elenco in base a una determinata dimensione in ordine crescente (asc) o decrescente (desc).

Ad esempio:

order by avg(ApdexScore) asc

Questa è una clausola facoltativa e, se non viene specificata, i risultati non vengono ordinati.

Clausola limite Limita l'elenco al numero specificato. Se omesso, il valore predefinito è FIRST 100 ROWS.

Ad esempio:

FIRST 5 ROWS

timeseries Visualizza un grafico della serie temporale per le dimensioni selezionate nella clausola select per un intervallo di tempo definito. È possibile determinare la dimensione per la quale si desidera visualizzare il grafico delle serie temporali nella clausola timeseries. Se una dimensione non viene specificata, i grafici delle serie temporali vengono visualizzati per ogni dimensione numerica nella clausola Returned Expressions.

Se l'intervallo di tempo (<n> minutes) non viene aggiunto alla clausola, l'intervallo di tempo si basa sul periodo di tempo selezionato in Trace Explorer.

Esempi:

timeseries for avg(TraceDuration) 60 minutes

timeseries

between Visualizza i risultati per gli indicatori orari selezionati in ora UTC. Se viene utilizzata, questa clausola sostituisce il periodo di tempo selezionato in Trace Explorer.

Ad esempio:

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

BETWEEN può anche utilizzare un valore time expression anziché un indicatore orario.

Ad esempio:

BETWEEN queryStartTime() AND queryEndTime()

espressione di tempo Visualizza un'ora o una durata in millisecondi.