Formules de dashboard

Il existe deux types de formules : les formules de calcul et les formules de rendu.

Les formules de calcul permettent de remplir une colonne avec le résultat d'un calcul basé sur d'autres colonnes et/ou lignes (par exemple une multiplication de colonnes, le résultat d'un test,...). Le résultat de ce calcul est celui qui est exporté lors d'un export Excel.

Les formules de rendu permettent de modifier le rendu d'une cellule (par exemple, ajouter des icônes, changer les couleurs, mettre un lien web). Le résultat de la formule de rendu n'est pas appliqué lors d'un export Excel.

A noter que les données sont d'abord transformées par la formule de calcul, puis le formatage numérique est appliqué (s'il y en a un), puis enfin la formule de rendu est appliquée.

Formatage numérique et formule de rendu

Si vous appliquez un formatage numérique (par exemple 1 000 or 12.34%), ce formatage est appliqué avant la formule de rendu. Par exemple, si la donnée initiale est 67425 et le formatage est 1 000 alors l'input de la formule de rendu est 67 425.

Cette valeur est une chaîne de caractères avec un espace au milieu. Si vous utilisez une formule conditionnelle dans la formule de rendu (par exemple value > 50000 ? "large" : "small"), cela ne fonctionnera pas car la condition sera toujours vraie.

Vous devez convertir la valeur en format numérique avant de l'utiliser, avec la fonction toNumber() (par exemple : toNumber(value) > 50000 ? "large" : "small").

Variables disponibles dans une formule

  • value est la valeur actuelle de la cellule.
  • line[N] est la valeur de la cellule de la colonne N, sur la ligne actuelle (line[1] est la première colonne).
  • aboveLine[N] est la valeur de la cellule de la colonne N, sur la ligne au dessus de la ligne actuelle.
  • belowLine[N] est la valeur de la cellule de la colonne N, sur la ligne au dessous de la ligne actuelle.
  • lineIndex est l'index de la ligne actuelle dans le tableau (la première ligne a l'index 1).
  • isFirstLine vaut true si la ligne actuelle est la première du tableau.
  • isLastLine vaut true si la ligne actuelle est la dernière du tableau.

Dans les free-tables

Il existe une variable supplémentaire disponible uniquement dans les free-tables qui permet d'accéder à n'importe quelle cellule de la table:

  • data[ligneId, colonneId] est la valeur de la cellule de la ligne ligneId et de la colonne colonneId. data[1,1] est la cellule en haut à gauche de la free-table.

Dans les histogrammes / courbes

Dans une formule, line[1] représente l'abscisse, et line[2], ... line[N+1] les N mesures sélectionnées.

Exemple :

Si vous avez sélectionné les 2 mesures Marges et Ventes, vous pouvez entrer dans "Formule de calcul" la formule :

1
line[2] / line[3] * 100

pour avoir un pourcentage des marges en fonction des ventes. Il est possible de cacher la mesure Ventes si vous ne souhaitez afficher que le pourcentage en cliquant sur "Cacher la mesure".

Mode Exploser par

L'utilisation de plusieurs mesures (et donc des formules) n'est pas diponible lorsqu'on utilise le mode "Exploser par".

Note à propos des variables

Les formules de calcul sont appliquées avant de retourner la ou les valeurs accessibles par les variables ci-dessus. Les formules de rendu ne sont pas appliquées dans la génération des valeurs de ces variables.

Exemples de formules de calcul

  • Formule simple
1
value / 2
  • Colonne 2 divisée par colonne 1
1
line[2] / line[1]
  • Formule conditionnelle simple
1
value >= 20 ? "large" : "small"
  • Evolution par rapport à la ligne au dessous
1
isLastLine ? "n.a." : (line[1] - belowLine[1])/belowLine[1]
  • Accumulation de la colonne 1, stockée dans la colonne 2
1
aboveLine[2] + line[1]
  • Nombre de jours entre une date et la date actuelle
1
date_diff(value, now())

Exemples de formules de rendu

  • Affichage conditionnel d'une icône
1
2
value >= 20 ? (icon("arrow-up", "green") + value) :
 (icon("arrow-down", "red") + value)
  • Evolution entre lignes avec icône
1
2
3
4
isLastLine ? "n.a." : (line[1] > belowLine[1]) ?
("+" + round((line[1] - belowLine[1]) / belowLine[1] * 100, 2) + " % " + icon("arrow-up", "green"))
:
(round((line[1] - belowLine[1]) / belowLine[1] * 100, 2) + " % " + icon("arrow-down", "red"))

Syntaxe des chaînes de caractères

Toutes les chaînes de caractères doivent être passées entre double guillemets (par exemple : replace(value,"k","kilo")) et non entre simple guillemets.

Fonctions disponibles

icon()

Insère une icône (voir la liste complète ici) de la couleur passée en argument.

Paramètres :

  • icon_name: nom de l'icône
  • color[optional]: couleur de l'icône

Exemple :

1
icon("flag", "red")

Insère le lien text pointant vers url.

Paramètres :

  • text: texte du lien à afficher
  • url: url à ouvrir
  • mode[optional]: peut être "same" ou "new". Si le mode est "new" ou non passé, le lien s'ouvre dans une nouvelle fenêtre. Si le mode est "same", le lien s'ouvrira dans la fenêtre actuelle.

Exemple :

1
link("Serenytics", "https://www.serenytics.com", "new")

Insère le lien text pointant vers le dashboard dont l'uuid est uuid, avec la possibilité de passer une payload pour filtrer le dashboard destination.

Paramètres :

  • text: texte du lien à afficher
  • uuid: uuid du dashboard à ouvrir
  • mode[optional]: peut être "same" ou "new". Si le mode est "new" ou non passé, le lien s'ouvre dans une nouvelle fenêtre. Si le mode est "same", le lien s'ouvrira dans la fenêtre actuelle.
  • payload_filter[optional]: le champ de la payload à passer.
  • payload_value[optional]: la valeur de la payload pour payload_filter.

Si les deux arguments payload_filter et payload_value sont définis, la payload {payload_filter: payload_value} est passée au dashboard destination. Cette payload peut être utilisée par le dashboard dans un filtre statique global (voir template dashboard).

Example:

1
2
3
4
5
6
link_to_dashboard("User info", "176a8ac8-5c85-4fd0-b960-bad858f986e0", "new", "user_id", 10)
// la payload passée au dashboard sera {"user_id": "10"}

link_to_dashboard("User info", "176a8ac8-5c85-4fd0-b960-bad858f986e0", "new", "user_id", line[1])
// cette payload permet de filter le dashboard destination pour afficher les informations de l'utisateur
// dont l'id est contenu dans line[1]

create_source_file_url()

Cette fonction est obsolète et sera supprimée

Pour autoriser le téléchargement de toutes les données d'une datasource dans le Viewer, voir ici.

Retourne un lien permettant de télécharger le fichier de la source dont l'uuid est uuid. Pour que le lien soit valide, la source de données doit obligatoirement être utilisée dans l'un des widgets du dashboard (pour des raisons de sécurité) et l'option Autoriser le téléchargement dans le viewer doit être activée sur la source.

Paramètres :

  • uuid: uuid de la source de données

Exemple:

1
create_source_file_url("176a8ac8-5c85-4fd0-b960-bad858f986e0")

Comment utiliser la fonction create_source_file_url:

Créez un widget KPI et choisissez la source dont vous voulez créer le lien dans sa configuration Data. Dans la section Rendu Graphique, choisissez le template Custom HTML et collez le code :

1
2
3
<div style="padding:20px; background-color: lightblue; height: 100%;font-size: 2vw">
    <a href={{create_source_file_url("413faa5a-e859-cf99-a1be-e0ff63878a82")}}>Download file</a>
</div>

Afficher les erreurs de la fonction create_source_file_url

Si vous rencontrez des problèmes avec cette fonction, pensez à vérifier la console de votre navigateur. Des erreurs peuvent y être affichées.

mailto()

Affiche un lien pour envoyer un email au destinataire email.

Paramètres :

  • text: texte du lien à afficher
  • email: destinataire de l'email
  • subject: sujet de l'email
  • body: corps de l'email

Exemple :

1
mailto("Envoyer email", "contact@serenytics.com", "Mon sujet", "Bonjour,<br>Pouvez-vous mettre à jour vos données ?")

replace()

Remplace la chaîne de caractères s1 par la chaîne s2 dans la chaîne str.

Paramètres :

  • str: chaîne de caractère à modifier
  • s1: chaîne de caractères à remplacer
  • s2: chaîne de caractères à utiliser pour remplacer s1

Exemple :

1
replace("2016-02-28", "-", "/")

repeat()

Répète la chaîne de caractères str `N times.

Paramètres :

  • str: chaîne de caratcères à répéter
  • N: nombre de répétitions

Exemple :

1
repeat(icon("star", "orange"), 3)

padLeft()

Complète la chaine str à gauche avec la chaîne de caractères chars si la longueur est plus petite que length.

Paramètres :

  • str: chaîne de caractère à modifier
  • length: taille minimale à atteindre
  • chars[optional]: chaîne de caractères à utiliser pour compléter str

Exemple :

1
padLeft(value, 2, "0")

round()

Arrondit val avec N decimales.

Paramètres :

  • val: valeur d'entrée
  • N: nombre de décimales désirées

Exemple :

1
round(value, 2)

floor()

Arrondit val à l'entier inférieur le plus proche.

Paramètres :

  • val: valeur d'entrée

Exemple :

1
floor(value)

fix()

Arrondit val à l'entier le plus proche, en direction de 0.

Paramètres :

  • val: valeur d'entrée

Exemple :

1
fix(value)

abs()

Renvoie la valeur absolue de val.

Paramètres :

  • val: valeur d'entrée

Exemple :

1
abs(value)

pow()

Calcule la puissance de x à l'élèvation y.

Paramètres :

  • x: valeur d'entrée
  • y: puissance à laquelle on élève x

Exemple :

1
pow(value, 2)

sqrt()

Calcule la racine carrée de val.

Paramètres :

  • val: valeur d'entrée

Exemple :

1
sqrt(value)

sign()

Calcule le signe de val, renvoie -1,+1 ou 0 (si la valeur est 0).

Paramètres :

  • val: valeur d'entrée.

Exemple :

1
sign(value)

now()

Retourne la date et l'heure actuelle, en UTC au format ISO.

Exemple :

1
now()

formatDate()

Formate inputDateString au format passé par outputFormatString (e.g. "YYYY - MM - DD", "LLLL"). Si inputDateString n'est pas au format ISO, vous devez spécifier son format avec inputFormatString (e.g. 'YYYY-MM-DD", voir ici pour la liste des formats possibles). Voir ici pour une documentation complète sur les formats de sortie.

Paramètres :

  • inputDateString: valeur d'entrée
  • outputFormatString: format désiré en sortie
  • inputFormatString[optional]: format de date de inputDateString

Exemple :

1
formatDate(value, "YYYY - MM - DD", "YYYY/MM/DD")

formatDateWithLocale()

Utilisez cette fonction au lieu de formatDate quand vous devez formater la chaîne avec une locale (e.g. utilisez "LLLL" pour outputFormatString et "fr" pour locale).

Paramètres :

  • inputDateString: valeur d'entrée
  • outputFormatString: format désiré en sortie
  • locale: locale à utiliser
  • inputFormatString[optional]: format de date de inputDateString

Exemple :

1
formatDateWithLocale(value, "LLLL", "fr")

date_diff()

Retourne date2 - date1 en jours.

Paramètres :

  • date1: date de début
  • date2: date de fin

Exemple :

1
date_diff(line[1], line[2])

dateAdd()

Ajoute (ou retire) un certain nombre d'unités de temps (jours, mois...) à une date.

Paramètres :

  • inputDate : date à modifier
  • nbUnits : nombre d'unités de temps à ajouter (ou retirer si la valeur est négative)
  • timeUnit : type d'unité de temps, parmi : "years", "quarters", "months", "weeks", "days", "hours", "minutes", "seconds" ou "milliseconds"
  • outputFormat[optional] : format de date souhaité en résultat ('YYYY-MM-DD' par défaut)

Exemple :

1
2
dateAdd("2017-06-21", 2, "months") // retourne 2017-08-21
dateAdd("2017-06-21", -1, "years") // retourne 2016-06-21

toNumber()

Convertit val en valeur numérique.

Paramètres :

  • val: valeur à convertir

Exemple :

1
2
toNumber("12.34%") // retourne la valeur numérique 12.34
toNumber("367 345 euros") // retourne la valeur numérique 367345