Utilizzo di parametri di query nelle query di DataPrime
La variabile IBM® Cloud Logs DataPrime $p consente di incorporare variabili nelle query DataPrime per ottenere dashboard personalizzati e parametri temporali.
Questa funzione esternalizza le variabili come se fossero scritte direttamente in una query. Ciò aumenta la flessibilità di filtri, calcoli e visualizzazioni, consentendo input definiti dall'utente e la gestione contestuale dei dati.
Come funziona $p ?
-
$prappresenta i parametri della query che possono essere usati nei widget, nelle query e nei filtri esterni, come il selezionatore dell'ora del cruscotto. -
$pconsente di eseguire filtri dinamici e altre azioni senza richiedere modifiche manuali alle query. -
Gli utenti possono passare e manipolare questi parametri nel dashboard.
Definizione dei parametri della query
È possibile utilizzare la variabile $p quando si configurano dashboard personalizzati e quando si creano query nella vista Registri.
Dashboard personalizzati
Una volta creata una variabile nei cruscotti personalizzati, i valori della variabile scelti dall'utente si riflettono come parametri di query in una query di DataPrime utilizzando $p.<variable_name>.
Le variabili nei dashboard personalizzati sono trattate come valori di stringa o multi-stringa, il che significa che le variabili numeriche non possono essere definite direttamente. Le variabili numeriche possono essere utilizzate nelle query,
ad esempio filter duration > $p.minDuration.
Log
Nella vista Registri, è possibile eseguire calcoli temporali nella query DataPrime utilizzando $p.timeRange.*, mentre $p consente di ottenere i dati dalla finestra temporale determinata dal selezionatore
temporale dell'interfaccia utente.
Parametri legati al tempo
I parametri temporali vengono creati automaticamente. I dati possono provenire da una finestra temporale determinata dal selezionatore temporale dell'interfaccia utente utilizzando timeRange nei dashboard personalizzati e nella
vista Registri.
I parametri legati al tempo includono:
$p.timeRange.startTime- L'ora di inizio del selezionatore dell'ora dell'interfaccia utente (ad esempio, 2024-03-06T08:00:00Z )
$p.timeRange.endTime- L'ora di fine del selezionatore dell'ora dell'interfaccia utente (ad esempio, 2024-03-06T12:00:00Z )
Esempi di utilizzo dei parametri della query
Le sezioni seguenti forniscono esempi di utilizzo di $p.
Lavorare con una variabile a valore singolo
Il seguente esempio di query incorpora una variabile a valore singolo, indicata dall'uso di ==.
source logs
| filter cluster_name == $p.cluster
Questo filtra i registri in cui cluster_name corrisponde alla variabile a valore singolo definita dall'utente $p.cluster.
Gli utenti possono modificare dinamicamente questo valore utilizzando l'interfaccia utente dei cruscotti personalizzati.
Lavorare con variabili a selezione multipla
Le variabili a selezione multipla consentono agli utenti di passare più valori potenziali in un singolo parametro.
Gestione della selezione "qualsiasi valore"
Quando l'utente seleziona "qualsiasi valore", il sistema lo considera come null, ovvero il filtro viene ignorato.
source logs
| filter $p.clusters == null || $p.clusters.arrayContains($d.clusterId)
Se l'utente seleziona "qualsiasi valore" per $p.clusters, questo viene trattato come nullo, eliminando il filtro. Altrimenti, il filtro assicura che $d.clusterId esista all'interno dei valori selezionati
di $p.clusters.
Elenco statico di valori
Creare una variabile minDurationSeconds con un elenco statico di valori (ad esempio, 1, 5, 10, 30, 60). Questi valori sono gestiti come stringhe, ma possono essere utilizzati come numeri all'interno della query, come segue:
source logs
| filter duration ≥ $p.minDuration:number
Definire un campo dinamico groupby utilizzando una variabile
Grazie alle variabili dinamiche, groupby permette alle query di adattarsi ai criteri definiti dall'utente, consentendo un'aggregazione e un'analisi dei dati più flessibile. La seguente query raggruppa i dati in base al campo specificato
dalla variabile $p.myGroupByVar, quindi aggrega i risultati contando il numero di occorrenze in ciascun gruppo.
groupby $d[$p.myGroupByVar] calculate count()
Questo differisce da groupby $p.my_group_by_variable calculate count(). Poiché la variabile è una stringa, l'esecuzione di questa query sarebbe di fatto identica a groupby 'my_value' calculate count(), il che significa
che eseguirà una groupby su una stringa statica, aggregando tutti i risultati in un unico gruppo chiamato my_value.
Filtrare i registri in un intervallo di tempo specifico
Questo filtra i registri all'interno dell'intervallo di tempo specificato, assicurando che il campo della durata sia maggiore o uguale a $p.minDuration.
source logs between $p.timeRange.startTime and $p.timeRange.endTime
| filter duration >= $p.minDuration
Arrotondamento all'ora più vicina
Questo esempio regola l'intervallo di tempo all'ora intera più vicina prima di filtrare i registri in base alla durata. Il calcolo del tempo può essere effettuato con $p.timeRange.*.
source logs between $p.timeRange.startTime/1h and $p.timeRange.endTime/1h+1h
| filter duration >= $p.minDuration
Unendo i dati della scorsa settimana per lo stesso arco di tempo
Utilizzando il comando join, la seguente query unisce e confronta il numero di registri per sottosistema di oggi con quelli di una settimana prima.
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
Questo esempio verboso fornisce un modo per ottenere un maggiore controllo sull'intervallo di tempo, se necessario.
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