Trabalhar com Consultas no Trace Explorer

Você pode trabalhar com as consultas prontas para uso exibidas nas Separações Rápidas no Explorador de Rastreamento ou editá-las para filtrar dados de rastreamento por dimensões.

Sobre Consultas do Trace Explorer

Uma consulta no Trace Explorer segue uma sintaxe simplificada semelhante a SQL e consiste em:

  • Cláusulas: Instruções que filtram, categorizam e exibem informações no Trace Explorer.
  • Dimensões: Metadados ou atributos definidos pela marcação de um intervalo, que permitem o monitoramento efetivo das várias camadas de um aplicativo. Uma lista completa de dimensões está disponível em Campos no Trace Explorer.

As consultas no Trace Explorer são uma combinação de cláusulas e dimensões, que você pode usar para filtrar dados de rastreamento. Você pode usar as consultas prontas disponíveis em cada seleção rápida, como Chaves e Serviços, ou editar essas consultas para personalizar ainda mais os resultados para atender às suas necessidades específicas.

Ao editar consultas, adicione ou atualize cláusulas na ordem fornecida na sintaxe a seguir. A cláusula necessária está em italics e as outras cláusulas são opcionais.

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

Na sintaxe, observe que ' ' (aspas simples) são usadas para constantes de string e " " (aspas duplas), para identificadores com aspas. Se o identificador for uma única palavra, as aspas duplas serão opcionais. Observe que os valores de dimensão adicionados com várias cláusulas, como where e group by, fazem distinção entre maiúsculas e minúsculas.

Operações aritméticas, como adição, subtração, multiplicação e divisão, podem ser usadas em expressões como você pode ver abaixo:

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)

Assistência de consulta: Ao trabalhar com consultas, uma lista de atributos e funções disponíveis aparece depois de digitar um espaço e pausar automaticamente. O recurso de assistência à consulta pode ser chamado usando CTRL+Space manualmente, se necessário.

Idioma da Consulta do Trace Explorer

As informações detalhadas sobre as cláusulas que podem ser usadas em uma consulta do Trace Explorer são fornecidas na seguinte tabela:

Cláusula Descrição
show Especifica a origem dos dados base para a consulta, que pode ser intervalos, rastreamentos ou uma solicitação para dimensões de rastreamento ou de intervalo.

Exemplo 1: show (traces)

Exemplo 2: show (spans)

Esta cláusula não é necessária. Se não for especificada, a consulta presumirá que todos os rastreamentos deverão ser exibidos.

Consultas e Subconsultas Aninhadas: Você pode usar consultas aninhadas com a cláusula show.

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

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

Restrições de consultas aninhadas:
  • Não pode conter uma cláusula de seleção. Em vez disso, use consultas aninhadas IN e NOT IN.
  • Uma consulta aninhada não pode conter operações de várias passagens (também conhecidas como consultas dependentes). Somente a cláusula show mais externa pode contê-las; nesse caso, elas são executadas nos resultados da consulta aninhada.
  • Não há limite de linhas padrão para uma consulta aninhada. Por padrão, uma consulta aninhada considerará todas as linhas. Veja o exemplo 1 acima.

    Se necessário, é possível solicitar menos linhas adicionando uma cláusula first n rows explícita à consulta aninhada.

  • Não pode fazer referência a valores em uma consulta externa (nenhuma consulta aninhada correlacionada).
Restrição de subconsultas:
  • Uma subconsulta usada em uma expressão, como visto no exemplo 2 acima, deve ter uma cláusula first n rows ou a consulta retornará um erro. O número máximo de linhas que podem ser solicitadas em uma expressão IN ou NOT IN é de 1 milhão.

Cláusula de seleção

Localiza um conjunto de rastreamentos ou intervalos que serão pesquisados pelo restante da consulta.

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

Exemplo:

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

É necessário um limite nesta cláusula, pois somente um número limitado de itens pode ser usado para a pesquisa, e essa cláusula só pode ser usada dentro de uma consulta de rastreamento.

Cláusula Expressões Retornadas Especifica quais dimensões de rastreamento ou de intervalo ou funções agregadas devem ser exibidas como colunas na lista. O identificador as opcionalmente fornece um alias para cada cabeçalho de coluna. Observe que o alias deve ser exclusivo.

Exemplo:

ServiceName as Service

Observe que, se houver um espaço após o identificador as, o valor do nome da coluna deverá estar entre aspas " ".

Veja a seguir as funções suportadas que podem ser usadas com esta cláusula:

  • abs: Retorna o valor absoluto de uma expressão numérica.

    Exemplo:

    abs(errorcount)

  • avg: Retorna o valor médio de uma dimensão numérica.

    Exemplo:

    avg(SpanDuration) as "Duration"

  • cast: Permite especificar uma unidade para uma expressão, tomando a expressão e a unidade desejada como argumentos. Isso pode fazer com que a interface do usuário renderize o valor retornado de maneira diferente.

    Sintaxe: cast(expression, unit)

    • expression são os dados de entrada a serem representados. Deve ser expressões numéricas ou de tempo.
    • unit é a unidade que determina como a entrada é exibida/transformada na saída. Os valores disponíveis são:
      • EPOCH_TIME_MS: Tempo em milissegundos.
      • DURATION_MS: Duração em milissegundos.
      • BYTES: Tamanho em bytes.

    Exemplo 1:

    cast(myTimeAttribute, 'EPOCH_TIME_MS')

    Exemplo 2:

    cast(myDuration, 'DURATION_MS')

    Exemplo 3:

    cast(myStorageSize, 'BYTES')

  • ceil: Retorna o próximo valor longo mais alto se a expressão tiver uma parte fracionária diferente de zero; caso contrário, retorna o valor como longo.

    Exemplo:

    ceil(traceDuration)

  • conditional_count: Retorna a contagem total (número) de uma expressão condicional.

    Sintaxe: conditional_count(conditional expression)

    Exemplos:

    conditional_count(dimensionA = 'abc')

  • count: Retorna a contagem total de uma dimensão.

    Exemplos:

    count(OperationName)as "Operation Count"

    count(*) as "Trace Count"

  • count_distinct: Retorna o número de valores distintos para uma dimensão.

    Exemplo:

    count_distinct(sessionId) as "Sessions"

  • date_bucket: Retorna uma expressão de tempo transformada.
    Sintaxe: date_bucket(numeric expression, string)
    • numeric expression é a entrada de tempo que deve ser um número que tenha uma unidade EPOCH_TIME_MS.
    • string é a string que determina como a entrada de tempo é transformada na saída. As opções válidas disponíveis são:
      • 'day_of_week': Os valores de retorno válidos são 1-7 indicando o dia UTC da semana (Domingo é 1).
      • 'day_of_month': Os valores de retorno válidos são de 1 a 31, indicando o dia UTC do mês.
      • 'day_of_year': Os valores de retorno válidos são de 1 a 366 com base no UTC.
      • 'month_of_year': Os valores de retorno válidos são de 1 a 12 com base no UTC.
      • 'hour_of_day': Os valores de retorno válidos são 0-23 com base no UTC.
      • 'minute_of_hour': Os valores de retorno válidos são 0-59.
      • 'calendar_quarter_of_year': Os valores de retorno válidos são de 1 a 4 com base no UTC.
      • 'truncate_day': O valor válido do horário de retorno é o dia atual no meio do UTC.
      • 'truncate_hour': O valor de retorno válido é o início da hora UTC.
      • 'truncate minute': O valor de retorno válido é o início do minuto UTC.
  • floor: Trunca a parte fracionária do valor das expressões e retorna um valor longo.

    Exemplo:

    floor(traceDuration)

  • histogram: Produz um histograma dos dados em atributos numéricos. Ele distribui os dados em buckets de larguras iguais (histogram(numeric_attr, min_value, max_value, num_buckets)).

    Exemplo:

    histogram(spanDuration, 0, 6000, 3)

  • max: Retorna o valor máximo de uma dimensão.

    Exemplo:

    max(SpanDuration) as "Maximum Duration"

  • min: Retorna o valor mínimo de uma dimensão.

    Exemplo:

    min(SpanDuration) as "Minimum Duration"

  • mod: Retorna o restante de expression2 dividido por expression1. Se expression1 for 0, ele retornará o valor de expression2.

    Sintaxe: mod(expression1, expression2)

    Essa função utiliza como argumentos qualquer tipo de dados numérico ou qualquer tipo de dados não numérico que possa ser implicitamente convertido em um tipo de dados numérico. O argumento com a precedência numérica mais alta é determinado, e os argumentos restantes são implicitamente convertidos nesse tipo de dados, e esse tipo de dados é retornado.

    Exemplo:

    mod (errorcount, spancount)

  • omittedTo: Fornece a opção de designar um valor a uma dimensão que não tem um valor.

    Exemplo:

    omittedTo(UserName, 'John Doe')

    No exemplo acima, se a dimensão UserName tiver um valor designado, o valor designado será exibido nos resultados e se um valor não for designado, John Doe será exibido.

  • percent_of_items: Retorna a porcentagem dos rastreamentos ou intervalos representados pela linha atual. O valor de percent_total_items() é igual a count(*)/total_items()*100.

    Exemplo:

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

  • percent_with_root_error: Retorna a porcentagem de rastreamentos concluídos que têm um intervalo raiz marcado com um erro. Esse valor é igual a sum(traceRootSpanErrorCount)/count(traceRootSpanErrorCount)*100.

    Exemplo:

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

  • percentile: Retorna o valor aproximado do percentil de um atributo numérico ((numeric_attr, 0-100) ).

    Exemplo:

    percentile(traceDuration, 90)

    OBSERVAÇÃO: no momento, isso é implementado em termos da função approx_percentile() do oracle database e calcula um valor de percentil aproximado.

  • rate: Retorna o count() ao longo do tempo.

    Exemplo:

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

    No exemplo acima, o resultado da consulta principal é calculado em 60 minutos; portanto, o valor mostrado no resultado será count()/60. Quando a série temporal é calculada, cada ponto de dados calcula uma contagem por 5 minutos, portanto, o valor da taxa para cada ponto será count()/5. Isso dá uma taxa por minuto tanto no resultado geral quanto para cada ponto nas séries temporais.

  • regexp_count: Retorna o número total de vezes que um padrão ocorre na string de origem a partir da posição especificada. Ele retornará 0 se nenhuma correspondência for encontrada na string de origem a partir da posição de pesquisa ou retornará o número de ocorrências do padrão de pesquisa na string de origem a partir da posição inicial fornecida.
    Sintaxe: regexp_count (expression, pattern, position, match_parameter)
    • expression é uma expressão de string. Uma expressão de string válida (caractere de origem) é um atributo válido que está ativo ou uma expressão de string que é criada usando atributos e operadores (como serviceName || operationName).
    • pattern é um padrão de expressão regular válido que será usado para o padrão validar e pesquisar.
    • position é um inteiro positivo que indica a posição do caractere de origem em que a pesquisa deve começar. Depois de encontrar a primeira ocorrência, ele procura a segunda ocorrência após a primeira.
    • match_parameter é o parâmetro de correspondência que indica o comportamento de correspondência.
      Os valores suportados são:
      • i: Especifica a correspondência sem distinção entre maiúsculas e minúsculas.
      • c: Especifica correspondência com distinção entre maiúsculas e minúsculas e acento.
      • n: Permite o ponto (.) na expressão regular. Se esse caractere for omitido, o ponto não corresponderá ao novo caractere de linha.
      • m: A string de origem é tratada como várias linhas. o cursor (^) é o início e $ é o fim de qualquer linha em qualquer lugar da string de origem, em vez de apenas no início do fim de toda a string de origem. Se esse parâmetro for omitido, a string de origem é tratada como uma única linha.
      • x: Ignora caracteres de espaço em branco. Por padrão, os caracteres de espaço em branco correspondem a si mesmos.

    Exemplo:

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

    No exemplo acima, a consulta procura rastreamentos que tenham 2 ou mais ocorrências do caractere:a no traceId com a pesquisa começando na posição 7 do traceId.

    Observação

    Você também pode fornecer apenas 2 argumentos:

    regexp_count (expression, pattern)

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

    O exemplo acima procura rastreamentos que tenham 2 ou mais ocorrências do padrão/char: a dentro do traceId.

  • regexp_instr: Procura um padrão de expressão regular em uma determinada expressão e retorna a posição inicial do primeiro caractere do padrão na string.
    Sintaxe: regexp_instr (expression, pattern)
    • expression é uma expressão de string. Uma expressão de string válida é um atributo válido que está ativo (como traceId e serviceName) ou uma expressão de string que é criada usando atributos e operadores (como serviceName || operationName).
    • pattern é um padrão de expressão regular válido que será usado para o padrão validar e pesquisar.

    Exemplo:

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

    No exemplo acima, a consulta procura rastreamentos que tenham valores serviceName que comecem com o padrão/char: cli.

  • regexp_like: Executa correspondência de expressão regular na expressão de string fornecida e retorna as expressões de string (atributos) que corresponderam.

    Sintaxe: regexp_like (expression, pattern, match_parameter)

    • expression é uma expressão de string. Uma expressão de string válida é um atributo válido que está ativo (como traceId e serviceName) ou uma expressão de string que é criada usando atributos e operadores (como serviceName || operationName).
    • pattern é um padrão de expressão regular válido que será usado para o padrão validar e pesquisar.
    • match_parameter é o parâmetro de correspondência que indica o comportamento de correspondência. É opcional.
      Os valores suportados são:
      • i: Especifica a correspondência sem distinção entre maiúsculas e minúsculas.
      • c: Especifica correspondência com distinção entre maiúsculas e minúsculas e acento.
      • n: Permite o ponto (.) na expressão regular. Se esse caractere for omitido, o ponto não corresponderá ao novo caractere de linha.
      • m: A string de origem é tratada como várias linhas. o cursor (^) é o início e $ é o fim de qualquer linha em qualquer lugar da string de origem, em vez de apenas no início do fim de toda a string de origem. Se esse parâmetro for omitido, a string de origem é tratada como uma única linha.
      • x: Ignora caracteres de espaço em branco. Por padrão, os caracteres de espaço em branco correspondem a si mesmos.

    Exemplos:

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

      No exemplo acima, a consulta procura rastreamentos que tenham valores traceId que correspondam ao padrão/char: aa.

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

      No exemplo acima, a consulta procura rastreamentos que tenham valores traceId que correspondam ao padrão/char: aa em letras minúsculas (com distinção entre maiúsculas e minúsculas).

  • regexp_replace: Procura um padrão de origem em uma determinada string e retorna uma string com qualquer ocorrência do padrão de origem substituída pelo padrão fornecido.
    Sintaxe: regexp_replace (expression, pattern, replace_string, numeric expression)
    • expression é uma expressão de string. Uma expressão de string válida (caractere de origem) é um atributo válido que está ativo (como traceId ou serviceName) ou uma expressão de string que é criada usando atributos e operadores (como serviceName || operationName).
    • pattern é um padrão de expressão regular válido que será usado para o padrão validar e pesquisar.
    • replace_string é a string que substitui as ocorrências da string de origem.
    • numeric expression é um número ou uma expressão numérica válida que indica a ocorrência da string de origem a ser substituída. É opcional.
    Exemplos:
    • 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')

    Observação

    Você também pode fornecer 5 argumentos.

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

    Nesse caso, numeric expression1 é um número ou uma expressão numérica válida que indica a ocorrência da string de origem a partir da qual iniciar a pesquisa e numeric expression2 é um número ou uma expressão numérica válida que indica a ocorrência da string de origem a ser substituída.

    Por exemplo, use a consulta abaixo para iniciar a correspondência de padrão com a primeira ocorrência do padrão/char a e substitua a segunda ocorrência de a pela string apm.
    show TRACES regexp_replace(traceId, 'a', 'apm', 1, 2) as traceIdReplaced, traceId where REGEXP_LIKE(traceId, 'aa')
  • regexp_substr: Procura um padrão de expressão regular em uma determinada expressão ou atributo de string e retorna a substring dessa expressão ou atributo de string.
    Sintaxe: regexp_substr (expression, pattern)
    • expression é uma expressão de string. Uma expressão de string válida (caractere de origem) é um atributo válido que está ativo (como traceId ou serviceName) ou uma expressão de string que é criada usando atributos e operadores (como serviceName || operationName).
    • pattern é um padrão de expressão regular válido que será usado para o padrão validar e pesquisar.

    Exemplo 1:

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

    O exemplo acima procura rastreamentos que tenham serviceName que comecem com o padrão/char: cli.

    Exemplo 2:

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

    O exemplo acima procura rastreamentos que tenham serviceName contendo 'RUM' e retira a RUM do serviceName e retorna isso.

  • span_summary: Retorna um resumo dos intervalos em um rastreamento. Essa função só pode ser usada com show(traces) e em consultas não agrupadas.

    Exemplo:

    span_summary() as Spans

  • stddev: Retorna o desvio padrão da expressão fornecida.

    Exemplo:

    stddev(traceDuration+1)

  • substr: Retorna uma substring da string fornecida.
    Sintaxe: substr (expression, numeric expression1, numeric expression2)
    • expression é uma expressão de string. Uma expressão de string válida (caractere de origem) é um atributo válido que está ativo (como traceId ou serviceName) ou uma expressão de string que é criada usando atributos e operadores (como serviceName || operationName).
    • numeric expression1 (start position) é uma expressão numérica avaliada como um número ou um número que indica a posição inicial da substring.

      Se start position for 0, ele será tratado como 1.

      Se start position for positivo, a função contará desde o início do caractere para localizar o primeiro caractere. Se for negativo, a função contará para trás a partir do final do caractere.

    • numeric expression2 (length) é uma expressão numérica avaliada como um número ou um número que indica o tamanho da substring que começa na posição inicial da substring.

      O length é sempre positivo e retornará apenas quantos caracteres existirem no valor.

      Se length for menor que 1, será retornado um valor nulo. Se length for maior que o tamanho da expressão de string (string de origem), toda a string será retornada.

    Exemplo:

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

    O exemplo acima pesquisa o traceShortId com o traceShortId comprimento 1, começando na posição 1 do traceId.

  • sum: Retorna o valor agregado de uma dimensão numérica.

    Exemplo:

    sum(ErrorCount) as "Errors"

  • time_bucket: Dado o atributo de tempo da tabela (StartTime ou TraceStartTime) e uma granularidade de tempo suportada, a função retorna um número de bucket no qual a linha cai. Isso é principalmente para uso na expressão de consultas de séries temporais.

    Exemplo:

    Em uma consulta de intervalo: time_bucket(15, StartTime)

    Em uma consulta de rastreamento: time_bucket(15, TraceStartTime)

    Um valor time_bucket() pode ser convertido de volta para um tempo de época unix em milissegundos usando a seguinte expressão java: bucketNumber * TimeUnit.MINUTES.toMillis(bucketInMinutes);

  • time_bucket_start: Retorna o início do bucket de tempo como um valor de tempo em milissegundos desde a época (unidade: EPOCH_TIME_MS). Ela pode ser chamada com um único argumento, com o tamanho do bucket em minutos ou sem argumentos, caso em que o sistema determinará o tamanho do bucket com base no intervalo de tempo da consulta.

    Exemplo:

    Em uma consulta de intervalo: time_bucket(15)

    Em uma consulta de rastreamento: time_bucket()

  • total_items: Retorna o número total de rastreamentos ou intervalos considerados pela consulta.

    Exemplo 1

    show traces count(*), total_items()

    Exemplo 2:

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

    OBSERVAÇÃO: No exemplo 1 count(*) e total_items() são iguais porque a consulta não está agrupada. No exemplo 2, count(*) refere-se ao número de itens no grupo da linha, enquanto total_items() tem o mesmo valor que no exemplo 1.

  • total_rows: Retorna o número total de linhas que apareceriam no conjunto de resultados se FIRST x ROWS pudesse ser definido como ilimitado.

    Isso pode ser útil ao procurar a cardinalidade de uma determinada combinação de dimensões.

    Exemplo:

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

  • unique_values: Retorna os valores exclusivos de uma dimensão e o número de vezes que cada um dos valores ocorre. Se uma dimensão tiver cinco valores exclusivos ou menos, eles serão exibidos em um gráfico de pizza. Se uma dimensão tiver mais de cinco valores exclusivos, será exibido um link na coluna, no qual você poderá clicar para exibir a lista de valores exclusivos.

    Exemplo:

    unique_values(ApmrumPageUpdateType) as "Page Load/Update"

where Filtra os resultados antes de serem agrupados.

Exemplo:

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

Veja aqui as expressões suportadas:

  • Booliano AND de duas expressões.

    Exemplo:

    ServiceName='service1' and OperationName='operation1'

  • Booliano OR de duas expressões.

    Exemplo:

    ServiceName='service1' or ServiceName='service2'

  • Agrupamento () para determinar a ordem das expressões em uma expressão complexa.

    Exemplo:

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

  • Comparação de uma dimensão feita por meio de uma referência de dimensão e um valor constante. Estas são as operações suportadas:

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

    Exemplo:

    ServiceName <> 'DoNotReturn'

  • Expressão de valor IN que compara a dimensão com os valores listados.

    Exemplo:

    ServiceName in ('service1', 'service2')

  • Expressão de valores IN e NOT IN que compara várias dimensões com valores listados.

    Exemplo:

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

  • Expressão IS OMITTED para testar se um valor de dimensão está incluído ou IS NOT OMITTED para testar se um valor de dimensão está ausente.

    Exemplo:

    OperationName is omitted

  • LIKE para localizar correspondências de um determinado valor de dimensão ou NOT LIKE para procurar valores de dimensão, exceto o especificado.

    Exemplo:

    OperationName like ‘Ajax /path/%’

group by Agrupa os resultados por uma determinada dimensão e os exibe em linhas.

Exemplo:

group by ServiceName

Se a cláusula group by fizer parte de uma consulta com timeseries ou unique_values, as colunas time series ou unique_values() não serão exibidas nas linhas de resultado nas quais a dimensão group by não tem um valor.

Exemplo:

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

No exemplo, os intervalos são agrupados pela dimensão UserName e, se um intervalo não tiver um valor designado à dimensão UserName, essa linha não exibirá as colunas timeseries e unique_values.

having Filtra mais os resultados agrupados pela cláusula group by.

Sintaxe: group by dimension having expression

expression: A expressão na cláusula having pode fazer referência às expressões na cláusula group by ou às agregações sobre os grupos.

Veja aqui as expressões suportadas:

  • Booliano AND de duas expressões.

    Exemplo:

    ServiceName='service1' and OperationName='operation1'

  • Booliano OR de duas expressões.

    Exemplo:

    ServiceName='service1' or ServiceName='service2'

  • Agrupamento () para determinar a ordem das expressões em uma expressão complexa.

    Exemplo:

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

  • Comparação de uma dimensão feita por meio de uma referência de dimensão e um valor constante. Estas são as operações suportadas:

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

    Exemplo:

    ServiceName <> 'DoNotReturn'

  • Expressão de valor IN que compara a dimensão com os valores listados.

    Exemplo:

    ServiceName in ('service1', 'service2')

  • Expressão de valores IN e NOT IN que compara várias dimensões com valores listados.

    Exemplo:

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

  • Expressão IS OMITTED para testar se um valor de dimensão está incluído ou IS NOT OMITTED para testar se um valor de dimensão está ausente.

    Exemplo:

    OperationName is omitted

  • Expressão LIKE para localizar correspondências de um valor de dimensão específico ou NOT LIKE para procurar valores de dimensão, exceto aquele especificado.

    Exemplo:

    OperationName like ‘Ajax /path/%’

Exemplos:
  • group by errorCount having ErrorCount = 0
  • show traces errorCount, count(*) group by errorCount having errorCount < 10 and count(*) = 10
order by Define a ordenação da lista por uma dimensão específica na ordem crescente (asc) ou decrescente (desc).

Exemplo:

order by avg(ApdexScore) asc

Esta é uma cláusula opcional e, se não for especificada, os resultados não serão ordenados.

Cláusula de limite Limita a lista ao número especificado. Se omitido, o padrão será FIRST 100 ROWS.

Exemplo:

FIRST 5 ROWS

timeseries Exibe um gráfico de séries temporais para as dimensões selecionadas na cláusula select para um intervalo de tempo definido. Você pode determinar a dimensão para a qual deseja ver o gráfico de séries temporais na cláusula timeseries e, se uma dimensão não for especificada, os gráficos de séries temporais serão exibidos para cada dimensão numérica na cláusula Expressões Retornadas.

Se o intervalo de tempo (<n> minutes) não for adicionado à cláusula, o intervalo de tempo será baseado no período selecionado no Trace Explorer.

Exemplos:

timeseries for avg(TraceDuration) 60 minutes

timeseries

between Exibe resultados para os timestamps selecionados no horário UTC. Se essa cláusula for usada, ela substituirá o período selecionado no Trace Explorer.

Exemplo:

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

BETWEEN também pode usar um time expression em vez de um timestamp.

Exemplo:

BETWEEN queryStartTime() AND queryEndTime()

expressão de tempo Exibe uma hora ou uma duração em milissegundos.