➗Les Formules
Une formule est une expression qui effectue des calculs sur des valeurs dans votre base de données. Elle peut être aussi simple que l'addition de deux nombres ou aussi complexe que la transformation de plusieurs champs de données selon des critères spécifiques.
La création d'une formule se fait depuis une page d'un Workflow ou d'un Suivi. Cela peut aussi se faire directement dans une table depuis la vue Data.
⬅️ Type de retour
Chaque formule a un type de retour, par exemple la formule UPPER("hello")
renvoie un texte, et peut alors être utilisée partout où ce type le permet, que ce soit dans les filtres, les conditions ou dans des mises à jour de champs.
Vous devez choisir le type de retour la première fois que vous éditez votre formule et vous ne pourrez plus le changer par la suite.
Voici la liste exhaustive des types de retour pouvant être utilisés :
🔤 Texte
🔢 Nombre
📆 Date & Date et heure
🗓️ Plage de dates & Plages de dates avec heure
🎨 Couleur
⚖️ Booléen
Les retours de type “liaisons calculées” doivent retourner un identifiant, sélectionnable depuis les métadonnées :
🔗 Liaison simple
🔗🔗 Liaisons multiples
🙏 Liaison utilisateur
À noter que pour les types de retour liaison simple et liaisons multiples, il vous sera demandé de spécifier la table liée à la formule ainsi que le champ à afficher dans la vue Data
🛑 Gestion des erreurs
Vérification de la syntaxe : L'éditeur des formules s'assure de la justesse syntaxique de votre expression. Si la formule est incorrecte, comme dans le cas d'une parenthèse manquante, cela vous sera signalé et elle ne sera pas sauvegardée.
Erreurs à l'exécution : Si une formule génère une erreur lors de son exécution (par exemple si on a
2 ^ "hello"
), elle retournera une valeur nulle et sera traitée de cette manière.
≠ Différence avec les formules de texte
Contrairement aux formules de texte, les formules permettent de manipuler tout type de champs, il est alors nécessaire de placer les variables dans des fonctions ou d'utiliser des opérateurs.
Par exemple, Utilisateur : {Prénom} {Nom}
dans une formule de texte devient "Utilisateur : " & {Prénom} & " " & {Nom}
dans une formule.
🔗 🔗 Liaisons multiples dans les formules
Il est possible d'utiliser un champ issu d'une liaison multiple dans les formules. En passant par une liaisons multiple, on obtient la liste des valeurs des enregistrements liés pour le champ choisi, qui peut être manipulé avec les fonctions sur les listes.
Par exemple, {Liaisons multiples -> Nombre}
peut donner [5,2,3,2,4]
s'il y a 5 enregistrements dans la liaison, avec ces valeurs pour le champ Nombre.
Donc SUM({Liaisons multiples -> Nombre})
donne ici 16
, la somme des nombres des enregistrements qui sont dans cette liaison multiple.
Depuis une liaison multiple, il n’est pas possible d’aller sélectionner des variables au delà du premier niveau de liaison
🚧 Cas d’usage : Liaisons Calculées
Une table Élève contient une liaison simple vers les enregistrements d’une table Classe. Cette table Classe contient une liaison simple vers une table Niveau.
On voudrait conditionner l’affichage d’une ligne en fonction du Niveau auquel les enregistrements de notre table Élève appartiennent.
Pour ce faire, on ajoute un champ Formule de type Liaison Simple dans la table Élève. Cette formule passe par les deux niveaux de liaisons et vient récupérer l’identifiant de l’enregistrement lié :
On lie donc notre formule à la table Niveau et le champ à afficher au nom du Niveau.
Dans les conditions d’affichage de la ligne, il est maintenant possible d’aller chercher le nom du Niveau de l’enregistrement en cours de la table Élève.
📖 Fonctions disponibles dans les formules
Fonctions de texte
FIND
Résumé
La fonction FIND
permet de chercher un élément dans une liste et de retourner la position de la première occurence. La fonction permet aussi de chercher une chaîne de caractères à l'intérieur d'une autre. Contrairement à SEARCH
, cette fonction est sensible à la casse.
Syntaxe
FIND(liste, recherche, positionDébut = 1)
Exemple
FIND("b", ["a","b","c","a","b","c"])
→2
FIND("world", "Hello world")
→7
FIND("WORLD", "Hello world")
→0
REGEX_EXTRACT
Résumé
La fonction REGEX_EXTRACT
extrait les correspondances d'une expression régulière dans une chaîne de caractères.
Vous pouvez retrouver la documentation sur les expressions régulières ici.
Syntaxe
REGEX_EXTRACT(texte, expression_régulière)
Exemple
REGEX_EXTRACT("Hello123world", "\d+")
→123
REGEX_MATCH
Résumé
La fonction REGEX_MATCH
vérifie si une chaîne de caractères correspond à une expression régulière donnée.
Vous pouvez retrouver la documentation sur les expressions régulières ici.
Syntaxe
REGEX_MATCH(texte, expression_régulière)
Exemple
REGEX_MATCH("Hello123", "\d+")
→true
REGEX_REPLACE
Résumé
La fonction REGEX_REPLACE
remplace le texte qui correspond à une expression régulière par du texte donné.
Vous pouvez retrouver la documentation sur les expressions régulières ici.
Syntaxe
REGEX_REPLACE(texte, expression_régulière, remplacement)
Exemple
REGEX_REPLACE("Hello123", "\d+", "!")
→Hello!
Fonctions mathématiques
ADD
Résumé
La fonction ADD
, ou l'opérateur +
, renvoie la somme de deux nombres. Contrairement à SUM
, cette fonction ne prend que deux arguments et peut gérer plusieurs types comme les listes ou les matrices.
Syntaxe
ADD(a, b)
a + b
Exemple
ADD(3, 4)
→7
ADD([1, 2, 3], 10)
→[11, 12, 13]
ADD([1, 2, 3], [4, 5, 6])
→[5, 7, 9]
MULTIPLY
Résumé
La fonction MULTIPLY
, ou l'opérateur *
, renvoie le produit de deux nombres. Contrairement à PRODUCT
, cette fonction ne prend que deux arguments et peut gérer plusieurs types comme les listes ou les matrices.
Syntaxe
MULTIPLY(a, b)
a * b
Exemple
MULTIPLY(3, 4)
→12
MULTIPLY([1, 2, 3], 10)
→[10, 20, 30]
MULTIPLY([[1, 2, 3]], [[1], [10], [100]])
→[[321]]
Fonctions de date
DATE_ADD
Résumé
La fonction DATE_ADD
ajoute un intervalle spécifié à une date donnée. Vous pouvez retrouver la liste des unités possibles ici.
Syntaxe
DATE_ADD(date, intervalle, unité)
Exemple
Pour : {Date} = 20/10/2023
DATE_ADD({Date}, 5, 'days')
→25/10/2023
DATE_DIFF
Résumé
La fonction DATE_DIFF
renvoie la différence entre deux dates. Vous pouvez retrouver la liste des unités possibles ici.
Syntaxe
DATE_DIFF(fin, début, unité)
Exemple
Pour : {Date de fin} = 20/10/2023 et {Date de début} = 01/10/2023
DATE_DIFF({Date de fin}, {Date de début}, 'days')
→19
PARSE_DATE
Résumé
La fonction PARSE_DATE
analyse une chaîne de caractères représentant une date en utilisant le format fourni et renvoie une date. La date retournée est sur le fuseau horaire de Paris.
Vous pouvez retrouver la liste des formats possibles ici.
Syntaxe
PARSE_DATE(texte, format)
Exemple
PARSE_DATE("20/10/2023 12:10", "DD/MM/YYYY HH:mm")
→2023-10-20 12:10
Fonctions de formatage
FORMAT_CURRENCY
Résumé
La fonction FORMAT_CURRENCY
formate un nombre en tant que devise en utilisant les paramètres de région et de devise fournis.
Le résultat est sous forme de texte.
Syntaxe
FORMAT_CURRENCY(nombre, région, devise)
Exemple
FORMAT_CURRENCY(1000, "fr-FR", "EUR")
→1 000,00 €
FORMAT_CURRENCY(1000, "en-US", "USD")
→$1,000.00
FORMAT_DATE
Résumé
La fonction FORMAT_DATE
formate une date selon le format spécifié.
Vous pouvez mettre le format pour une région particulière, puis ajouter des paramètres séparés par des virgules, dont vous pouvez trouver la documentation ici.
Les paramètres principaux sont dateStyle
, qui définit le format de la date, et timeStyle
, qui définit le format de l'heure, qui peuvent prendre short
, medium
, long
ou full
comme valeur.
Vous pouvez aussi mettre un format encore plus personnalisé en ne précisant pas la région et en plaçant chaque élément de la date où vous le souhaitez comme par exemple "DD-MM-YYYY HH [heures et] mm [minutes]"
.
Les crochets sont des caractères d'échappement, ils permettent de préciser le texte qui doit être affiché tel quel et qui ne doit pas être interprétés comme du formatage.
Vous pouvez retrouver la liste des formats possibles ici.
Le résultat est sous forme de texte.
Syntaxe
FORMAT_DATE(date, format)
Exemple
Pour : {Date et Heures} = 20/10/2023 15:30:00
FORMAT_DATE({Date et Heures}, "DD/MM/YYYY")
→20/10/2023
FORMAT_DATE({Date et Heures}, "DD/MM/YY h:mm A")
→20/10/23 3:30 PM
FORMAT_DATE({Date et Heures}, "dddd DD MMMM YYYY, HH:mm")
→vendredi 20 octobre 2023, 15:30
FORMAT_DATE({Date et Heures}, "DD-MM-YYYY HH [heures et] mm [minutes]")
→20-10-2023 15 heures et 30 minutes
FORMAT_DATE({Date et Heures}, "fr-FR, dateStyle=full")
->vendredi 20 octobre 2023
FORMAT_DATE({Date et Heures}, "en-US, timeStyle=short")
->3:30 PM
FORMAT_DATE({Date et Heures}, "fr-FR, dateStyle=medium, timeStyle=medium")
->20 oct. 2023, 15:30:00
FORMAT_DATE(DATE(2023,1,1),"en-US, dateStyle=long, timeStyle=full, timeZone=Europe/London")
->December 31, 2022 at 11:00:00 PM Greenwich Mean Time
Fonctions de liste
FILL
Résumé
La fonction FILL
remplace une partie d'une liste, spécifiée par un numéro de début inclut et un numéro de fin non inclut, par une valeur donnée.
Syntaxe
FILL(liste, valeur, début, fin)
Exemple
FILL([0, 0, 0, 0], 10, 2, 4)
→[0, 10, 10, 0]
FILL(["pomme", "banane", "cerise"], "fruit", 2, 4)
→["pomme", "fruit", "fruit"]
REDUCE
Résumé
La fonction REDUCE
applique une fonction contre un accumulateur et chaque élément du tableau (de gauche à droite) pour le réduire à une seule valeur.
Syntaxe
REDUCE(initial, liste, lambda)
Exemple
REDUCE(0, [1, 2, 3, 4], (acc, x) => acc + x)
→10
REDUCE(10, [1, 2, 3], (acc, val) => acc * val)
->60
SORT
Résumé
La fonction SORT
trie les éléments d'une liste par ordre croissant par défaut. Vous pouvez également définir votre propre fonction de comparaison pour faire le tri.
Syntaxe
SORT(liste)
SORT(liste, fonctionComparaison)
Exemple
SORT([3, 1, 4, 2])
→[1, 2, 3, 4]
SORT([3, 1, 4, 2], (a, b) => (b-a))
→[4, 3, 2, 1]
SORT(["pomme", "banane", "cerise"])
→["banane", "cerise", "pomme"]
SPLICE
Résumé
La fonction SPLICE
change le contenu d'une liste en retirant, remplaçant ou ajoutant de nouveaux éléments. Il faut choisir un indice de début à partir duquel commencer les modifications, puis préciser le nombre d'éléments à supprimer, et enfin choisir les éléments à ajouter.
Syntaxe
SPLICE(liste, début, nbrSuppression, élément1, [élément2, ...])
Exemple
SPLICE([1, 2, 3, 4], 2, 0, 'a', 'b')
→[1, 'a', 'b', 2, 3, 4]
SPLICE(["pomme", "banane", "cerise"], 3, 1, "fraise")
->["pomme", "banane", "fraise"]
Fonctions sur des champs particuliers
Adresse
Plage de dates / Plage de dates avec heure
Single select
Multi select
MULTI_SELECT_TEXT_VALUES
Résumé
La fonction MULTI_SELECT_TEXT_VALUES
renvoie la liste des textes des options sélectionnées d'un multi select.
Syntaxe
MULTI_SELECT_TEXT_VALUES(multi_select)
Exemple
MULTI_SELECT_TEXT_VALUES({Multi select})
→[Option 1, Option 3]
MULTI_SELECT_TEXT_VALUES({Liaisons multiples → Multi select})
→[[Option 1, Option 3], [Option 1]]