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"
|