Utilisation de paramètres de requête dans vos requêtes DataPrime
La variable IBM® Cloud Logs DataPrime $p vous permet d'incorporer des variables dans vos requêtes DataPrime pour des tableaux de bord personnalisés et des paramètres temporels.
Cette fonction externalise les variables comme si elles étaient écrites directement dans une requête. Cela améliore la flexibilité du filtrage, des calculs et des visualisations en permettant des entrées définies par l'utilisateur et un traitement contextuel des données.
Comment fonctionne le site $p ?
-
$preprésente les paramètres de requête qui peuvent être utilisés dans les widgets, les requêtes et les filtres externes, tels que le sélecteur de temps du tableau de bord. -
$ppermet un filtrage dynamique et d'autres actions sans qu'il soit nécessaire de modifier manuellement les requêtes. -
Les utilisateurs peuvent passer et manipuler ces paramètres dans le tableau de bord.
Définition des paramètres de la requête
Vous pouvez utiliser la variable $p lors de la configuration de tableaux de bord personnalisés et lors de la création de requêtes dans la vue Logs.
Tableaux de bord personnalisés
Une fois qu'une variable est créée dans les tableaux de bord personnalisés, les valeurs de la variable choisies par l'utilisateur sont reflétées en tant que paramètres de requête dans une requête DataPrime à l'aide de $p.<variable_name>.
Les variables dans les tableaux de bord personnalisés sont traitées comme des valeurs de chaînes ou de multi-chaînes, ce qui signifie que les variables numériques ne peuvent pas être définies directement. Les variables numériques peuvent être
utilisées dans les requêtes, par exemple filter duration > $p.minDuration.
Journaux
Dans la vue Logs, vous pouvez effectuer des calculs de temps dans votre requête DataPrime à l'aide de $p.timeRange.*, $p vous permettant d'obtenir des données à partir de la fenêtre temporelle déterminée
par le sélecteur de temps de l'interface utilisateur.
Paramètres temporels
Les paramètres temporels sont automatiquement créés. Vous pouvez obtenir des données à partir d'une fenêtre temporelle déterminée par le sélecteur de temps de l'interface utilisateur en utilisant timeRange dans les tableaux de bord
personnalisés et la vue Logs.
Les paramètres liés au temps sont les suivants
$p.timeRange.startTime- L'heure de début du sélecteur de temps de l'interface utilisateur (par exemple, 2024-03-06T08:00:00Z )
$p.timeRange.endTime- L'heure de fin du sélecteur de temps de l'interface utilisateur (par exemple, 2024-03-06T12:00:00Z )
Exemples d'utilisation des paramètres de requête
Les sections suivantes présentent des exemples d'utilisation du site $p.
Travailler avec une variable à valeur unique
L'exemple de requête suivant intègre une variable à valeur unique, comme l'indique l'utilisation de ==.
source logs
| filter cluster_name == $p.cluster
Cela permet de filtrer les journaux dans lesquels cluster_name correspond à la variable à valeur unique définie par l'utilisateur $p.cluster.
Les utilisateurs peuvent modifier dynamiquement cette valeur à l'aide de l'interface utilisateur des tableaux de bord personnalisés.
Travailler avec des variables de multi-sélection
Les variables à sélection multiple permettent aux utilisateurs de passer plusieurs valeurs potentielles dans un seul paramètre.
Gestion de la sélection "toute valeur
Lorsqu'un utilisateur sélectionne "n'importe quelle valeur", le système considère qu'il s'agit de null, ce qui signifie que le filtre est ignoré.
source logs
| filter $p.clusters == null || $p.clusters.arrayContains($d.clusterId)
Si l'utilisateur sélectionne "n'importe quelle valeur" pour $p.clusters, cette valeur est considérée comme nulle, ce qui supprime le filtre. Dans le cas contraire, le filtre garantit que $d.clusterId existe
à l'intérieur des valeurs sélectionnées de $p.clusters.
Liste statique de valeurs
Créez une variable minDurationSeconds avec une liste statique de valeurs (par exemple 1, 5, 10, 30, 60). Ces valeurs sont traitées comme des chaînes de caractères, mais peuvent être utilisées comme des nombres dans la requête comme
suit :
source logs
| filter duration ≥ $p.minDuration:number
Définition d'un champ dynamique groupby à l'aide d'une variable
Grâce à des variables dynamiques, groupby permet d'adapter les requêtes en fonction de critères définis par l'utilisateur, ce qui permet une agrégation et une analyse plus souples des données. La requête suivante regroupe les données
en fonction du champ spécifié par la variable $p.myGroupByVar, puis agrège les résultats en comptant le nombre d'occurrences dans chaque groupe.
groupby $d[$p.myGroupByVar] calculate count()
Cela diffère de groupby $p.my_group_by_variable calculate count(). La variable étant une chaîne de caractères, l'exécution de cette requête serait en fait identique à celle de groupby 'my_value' calculate count(), ce
qui signifie qu'elle effectuerait une requête groupby sur une chaîne de caractères statique, en regroupant tous les résultats dans un seul groupe appelé my_value.
Filtrage des journaux dans une plage de temps spécifique
Cela permet de filtrer les journaux dans la plage de temps spécifiée tout en s'assurant que le champ de la durée est supérieur ou égal à $p.minDuration.
source logs between $p.timeRange.startTime and $p.timeRange.endTime
| filter duration >= $p.minDuration
Arrondissement à l'heure la plus proche
Cet exemple ajuste l'intervalle de temps à l'heure complète la plus proche avant de filtrer les journaux en fonction de leur durée. Tout calcul de temps peut être effectué à l'aide de $p.timeRange.*.
source logs between $p.timeRange.startTime/1h and $p.timeRange.endTime/1h+1h
| filter duration >= $p.minDuration
Rejoignant les données de la semaine dernière pour la même période
À l'aide de la commande join, la requête suivante regroupe et compare le nombre de journaux par sous-système d'aujourd'hui à ceux d'il y a exactement une semaine.
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
Cet exemple verbeux permet de mieux contrôler l'intervalle de temps, si nécessaire.
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