Utilización de parámetros de consulta en las consultas de DataPrime
La variable IBM® Cloud Logs DataPrime $p le permite incorporar variables a sus consultas DataPrime para cuadros de mando personalizados y parámetros relacionados con el tiempo.
Esta función externaliza las variables como si estuvieran escritas directamente en una consulta. Esto aumenta la flexibilidad para el filtrado, los cálculos y las visualizaciones al permitir entradas definidas por el usuario y el manejo de datos contextuales.
¿Cómo funciona $p ?
-
$prepresenta parámetros de consulta que pueden utilizarse en widgets, consultas y filtros externos, como un selector de hora del cuadro de mandos. -
$ppermite el filtrado dinámico y otras acciones sin necesidad de modificar manualmente las consultas. -
Los usuarios pueden pasar y manipular estos parámetros en el cuadro de mandos.
Definición de parámetros de consulta
Puede utilizar la variable $p al configurar cuadros de mando personalizados y al crear consultas en la vista Registros.
Paneles de control personalizados
Una vez creada una variable en los cuadros de mando personalizados, los valores de la variable elegidos por el usuario se reflejan como parámetros de consulta en una consulta DataPrime utilizando $p.<variable_name>.
Las variables de los cuadros de mando personalizados se tratan como valores de cadena o multi-cadena, lo que significa que las variables numéricas no pueden definirse directamente. Las variables numéricas pueden utilizarse en las consultas,
por ejemplo, filter duration > $p.minDuration.
Registros
En la vista Logs, puede realizar cálculos de tiempo en su consulta DataPrime utilizando $p.timeRange.*, con $p que le permite obtener datos de la ventana de tiempo determinada por el selector de tiempo
de la interfaz de usuario.
Parámetros temporales
Los parámetros temporales se crean automáticamente. Puede obtener datos de una ventana de tiempo determinada por el selector de tiempo de la interfaz de usuario utilizando timeRange en los cuadros de mando personalizados y en la
vista Registros.
Los parámetros relacionados con el tiempo incluyen:
$p.timeRange.startTime- La hora de inicio del selector de hora de la interfaz de usuario (por ejemplo, 2024-03-06T08:00:00Z )
$p.timeRange.endTime- La hora final del selector de hora de la interfaz de usuario (por ejemplo, 2024-03-06T12:00:00Z )
Ejemplos de uso de parámetros de consulta
En las siguientes secciones se ofrecen ejemplos de uso de $p.
Trabajar con una variable de valor único
El siguiente ejemplo de consulta incorpora una variable de un solo valor, como indica el uso de ==.
source logs
| filter cluster_name == $p.cluster
Esto filtra los registros en los que cluster_name coincide con la variable de valor único definida por el usuario $p.cluster.
Los usuarios pueden modificar dinámicamente este valor utilizando la interfaz de usuario de los cuadros de mando personalizados.
Trabajar con variables de selección múltiple
Las variables de selección múltiple permiten a los usuarios pasar varios valores potenciales en un único parámetro.
Manejo de la selección "cualquier valor
Cuando un usuario selecciona "cualquier valor", el sistema lo trata como null, lo que significa que se ignora el filtro.
source logs
| filter $p.clusters == null || $p.clusters.arrayContains($d.clusterId)
Si el usuario selecciona "cualquier valor" para $p.clusters, se trata como nulo, eliminando el filtro. En caso contrario, el filtro garantiza que $d.clusterId existe dentro de los valores seleccionados de
$p.clusters.
Lista estática de valores
Cree una variable minDurationSeconds con una lista estática de valores (por ejemplo. 1, 5, 10, 30, 60). Estos valores se manejan como cadenas, pero se pueden utilizar como números dentro de la consulta de la siguiente manera:
source logs
| filter duration ≥ $p.minDuration:number
Definición de un campo dinámico groupby mediante una variable
Mediante el uso de variables dinámicas, groupby permite adaptar las consultas en función de criterios definidos por el usuario, lo que posibilita una agregación y un análisis de datos más flexibles. La siguiente consulta agrupa
los datos en función del campo especificado por la variable $p.myGroupByVar y, a continuación, agrega los resultados contando el número de apariciones en cada grupo.
groupby $d[$p.myGroupByVar] calculate count()
Esto difiere de groupby $p.my_group_by_variable calculate count(). Dado que la variable es una cadena, la ejecución de esta consulta sería en la práctica idéntica a groupby 'my_value' calculate count(), lo que significa
que realizará una groupby sobre una cadena estática, agregando todos los resultados en un único grupo denominado my_value.
Filtrado de registros dentro de un intervalo de tiempo específico
De este modo se filtran los registros dentro del intervalo de tiempo especificado y se garantiza que el campo de duración es mayor o igual que $p.minDuration.
source logs between $p.timeRange.startTime and $p.timeRange.endTime
| filter duration >= $p.minDuration
Redondeo a la hora más próxima
Este ejemplo ajusta el intervalo de tiempo a la hora completa más próxima antes de filtrar los registros en función de la duración. Cualquier cálculo de tiempo puede realizarse utilizando $p.timeRange.*.
source logs between $p.timeRange.startTime/1h and $p.timeRange.endTime/1h+1h
| filter duration >= $p.minDuration
Uniendo los datos de la semana pasada para el mismo periodo de tiempo
Utilizando el comando join, la siguiente consulta une y compara el número de registros por subsistema de hoy con los de exactamente una 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
Este ejemplo verboso proporciona una forma de obtener más control sobre el intervalo de tiempo, si es necesario.
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