Uso de parâmetros de consulta em suas consultas DataPrime

A variável IBM® Cloud Logs DataPrime $p permite incorporar variáveis em suas consultas DataPrime para painéis personalizados e parâmetros relacionados ao tempo.

Esse recurso externaliza as variáveis como se elas estivessem escritas diretamente em uma consulta. Isso aumenta a flexibilidade para filtragem, cálculos e visualizações, permitindo entradas definidas pelo usuário e manipulação de dados contextuais.

Como funciona o site $p ?

  • $p representa parâmetros de consulta que podem ser usados em widgets, consultas e filtros externos, como um seletor de horário do painel.

  • $p permite a filtragem dinâmica e outras ações sem a necessidade de modificações manuais na consulta.

  • Os usuários podem passar e manipular esses parâmetros no painel.

Definição de parâmetros de consulta

Você pode usar a variável $p ao configurar painéis personalizados e ao criar consultas na exibição Logs.

Painéis customizados

Depois que uma variável é criada em painéis personalizados, os valores da variável escolhidos pelo usuário são refletidos como parâmetros de consulta em uma consulta DataPrime usando $p.<variable_name>.

As variáveis em painéis personalizados são tratadas como valores de cadeia de caracteres ou de várias cadeias de caracteres, o que significa que as variáveis numéricas não podem ser definidas diretamente. As variáveis numéricas podem ser usadas em consultas, por exemplo, filter duration > $p.minDuration.

Logs

Na exibição Logs, você pode fazer cálculos de tempo na consulta DataPrime usando $p.timeRange.*, com $p permitindo que você obtenha dados da janela de tempo determinada pelo seletor de tempo da interface do usuário.

Parâmetros relacionados ao tempo

Os parâmetros relacionados ao tempo são criados automaticamente. Você pode obter dados de uma janela de tempo determinada pelo seletor de tempo da interface do usuário usando timeRange em painéis personalizados e na exibição Logs.

Os parâmetros relacionados ao tempo incluem:

$p.timeRange.startTime
A hora de início do seletor de hora da interface do usuário (por exemplo, 2024-03-06T08:00:00Z )
$p.timeRange.endTime
A hora final do seletor de hora da interface do usuário (por exemplo, 2024-03-06T12:00:00Z )

Exemplos de uso de parâmetros de consulta

As seções a seguir fornecem exemplos de uso do site $p.

Trabalhar com uma variável de valor único

O exemplo de consulta a seguir incorpora uma variável de valor único, conforme indicado pelo uso de ==.

source logs
| filter cluster_name == $p.cluster

Isso filtra os registros em que cluster_name corresponde à variável de valor único definida pelo usuário $p.cluster.

Os usuários podem modificar dinamicamente esse valor usando a interface do usuário de painéis personalizados.

Trabalho com variáveis de seleção múltipla

As variáveis de seleção múltipla permitem que os usuários passem vários valores potenciais em um único parâmetro.

Manipulação da seleção de "qualquer valor"

Quando um usuário seleciona "qualquer valor", o sistema trata isso como null, o que significa que o filtro é ignorado.

source logs
| filter $p.clusters == null || $p.clusters.arrayContains($d.clusterId)

Se o usuário selecionar "qualquer valor" para $p.clusters, ele será tratado como nulo, removendo o filtro. Caso contrário, o filtro garante que $d.clusterId exista dentro dos valores selecionados de $p.clusters.

Lista estática de valores

Crie uma variável minDurationSeconds com uma lista estática de valores (por exemplo, 1, 5, 10, 30, 60). Esses valores são tratados como cadeias de caracteres, mas podem ser usados como um número na consulta da seguinte forma:

source logs
| filter duration ≥ $p.minDuration:number

Definição de um campo dinâmico groupby usando uma variável

Usando variáveis dinâmicas, o site groupby permite que as consultas se adaptem com base em critérios definidos pelo usuário, possibilitando uma análise e agregação de dados mais flexível. A consulta a seguir agrupa os dados com base no campo especificado pela variável $p.myGroupByVar e, em seguida, agrega os resultados contando o número de ocorrências em cada grupo.

groupby $d[$p.myGroupByVar] calculate count()

Isso difere de groupby $p.my_group_by_variable calculate count(). Como a variável é uma string, a execução dessa consulta seria efetivamente idêntica a groupby 'my_value' calculate count(), o que significa que ela fará uma groupby em uma string estática, agregando todos os resultados em um único grupo chamado my_value.

Filtragem de logs em um intervalo de tempo específico

Isso filtra os registros dentro do intervalo de tempo especificado, garantindo que o campo de duração seja maior ou igual a $p.minDuration.

source logs between $p.timeRange.startTime and $p.timeRange.endTime
| filter duration >= $p.minDuration

Arredondamento para a hora mais próxima

Este exemplo ajusta o intervalo de tempo para a hora completa mais próxima antes de filtrar os registros com base na duração. Qualquer cálculo de tempo pode ser feito usando o site $p.timeRange.*.

source logs between $p.timeRange.startTime/1h and $p.timeRange.endTime/1h+1h
| filter duration >= $p.minDuration

Juntando os dados da semana passada para o mesmo período de tempo

Usando o comando join, a consulta a seguir une e compara o número de logs por subsistema de hoje com os de exatamente uma semana antes.

source logs
| groupby $l.subsystemname calculate count() as cnt
| join (source logs timeshifted -7d
        | groupby $l.subsystemname calculate count() as cnt) using subsystemname into a_week_before

Esse exemplo detalhado oferece uma maneira de obter mais controle sobre o intervalo de tempo, se necessário.

source logs
| groupby $l.subsystemname calculate count() as cnt
| join (source logs between $p.timeRange.startTime-7d and $p.timeRange.endTime-7d
        | groupby $l.subsystemname calculate count() as cnt) using subsystemname into a_week_before