Éditeur de requêtes de source de données (Requête de recherche)
Créez des requêtes de source de données pour les widgets de tableaux et de graphiques afin de sélectionner des données spécifiques dans une base de données. Les requêtes se construisent sous la forme d'un champ de base de données suivi du signe =, puis d'un opérateur, d'un nombre ou d'une chaîne de caractères :
database_string=my string database_number=1234 database_number=BETWEEN(3, 6)
Les requêtes peuvent être enrichies à l'aide de code JavaScript spécifique :
Calcul de la date et de l'heure avec momentjs
Operateurs
Operateur | Description |
|---|---|
| Plage allant de la valeur de début à la valeur de fin. Les valeurs de début et de fin sont séparées par des virgules |
| Liste de nombres ou de chaînes de caractères séparés par des virgules à comparer |
| Valeur supérieure à |
| Valeur supérieure ou égale à |
| Valeur inférieure à |
| Valeur inférieure ou égale à |
| Négation d'une expression |
| Liste d'expressions séparées par des virgules. Toutes doivent être satisfaites |
| Liste d'expressions séparées par des virgules. Au moins une doit être vérifiée |
| Vérifie si une valeur est NULL |
Exemples
Sélectionner tous les enregistrements dont le salaire est supérieur à 40 000 :
salary=GT(40000)
Sélectionner tous les enregistrements dont le nom n'est ni James, ni John, ni Joe :
name=NOT(IN(James%2CJohn%2CJoe))
Sélectionner tous les enregistrements dont le customerId n'est pas NULL :
customerId=NOT(NULL())
Les virgules dans les arguments doivent être échappées :
, -> %2C
Cela est nécessaire si des opérateurs imbriqués sont utilisés, comme dans l'exemple ci-dessus.
Exemples avec Moment.js
Dans les exemples suivants, params.interval est défini par un widget de sélection de date
Sélectionner uniquement les enregistrements dont la date se situe entre les paramètres de date et d'heure de début et de fin fournis par un widget de sélection de date. Les méthodes begin, end et format() de la bibliothèque momentjs sont utilisées :
date=BETWEEN(${interval(params.interval).begin.format()}, ${interval(params.interval).end.format()})
Sélectionner les enregistrements datant d’un an auparavant :
year=${interval(params.interval).begin.subtract(1, 'years').format('YYYY')}
Interroger le même mois de l’année précédente, le mois étant formaté sans zéros non significatifs :
month=${interval(params.interval).begin.subtract(params.sub, 'years').format('M')}
Interroger le jour de la semaine (0-6) :
weekday=${interval(params.interval).begin.day()}
Requête dépendante d’un paramètre
Si une requête ne doit être appliquée que si un paramètre spécifique est défini (par exemple, une requête de matrice de filtrage), la colonne ainsi que la chaîne de requête peuvent être placées dans des instructions if :
${filterMatrix.device_name ? 'device_name' : 'none'}=${filterMatrix.device_name ? filterMatrix.device_name : ''}
Si le paramètre filterMatrix.device_name est défini, la colonne sera définie sur « device_name » et la chaîne de requête sur « filterMatrix.device_name ») :
device_name=filterMatrix.device_name
Si ce même paramètre n’est pas défini, la requête résultante sera configurée pour la colonne « none », probablement inexistante :
none=''
Utilisation d’une requête de recherche avec un sélecteur
de date
Le widget de sélection de date permet aux utilisateurs de choisir une date ou une plage de dates qui est transmise sous forme de paramètre d’URL.
Ces paramètres peuvent être utilisés dans les requêtes de recherche, comme le montre l’exemple suivant :
Supposons que les fiches des employés comportent les champs «
hire_date» et «exit_date». Si «exit_date» estNULL, le contrat de travail est toujours en cours et aucune date de fin n’est prévue.La sélection d’une plage de dates dans le sélecteur (par exemple, de février 2022 à décembre 2026) définit les paramètres URL suivants :
interval=BETWEEN(2022-02,2026-12)intervalBucket=monthintervalType=month
Pour filtrer la table « Employees » et ne conserver que les enregistrements qui chevauchent la plage sélectionnée, utilisez la requête de recherche suivante :
hire_date=LE(${interval(params.interval).end.format()})
exit_date=OR(NULL(), GE(${interval(params.interval).begin.format()}))
Chaque ligne représente une règle indépendante ; plusieurs règles sont évaluées avec une condition « ET » implicite.
Explication de la requête :
«
hire_date» est inférieure ou égale à la fin de l’intervalle (au plus tard en décembre 2026)ET
exit_dateest soitNULL, soit supérieur ou égal au début de l'intervalle (à partir de février 2022 inclus)
