Champs calculés
Un champ calculé produit une valeur à partir des autres champs : une marge, un montant pondéré, une année, un délai en jours, une catégorie. Il s'écrit dans un petit langage d'expressions que le serveur contrôle et traduit pour la base — jamais du SQL libre. Il appartient à l'analyse et s'enregistre avec elle.
Vue d'ensemble
L'éditeur
Nouveau champ calculé, en bas du volet des champs, ouvre l'éditeur ; le crayon d'un champ calculé le modifie, la corbeille le supprime (il quitte alors aussi les étagères).
| Champ | Usage |
|---|---|
| Nom | Une lettre, puis lettres, chiffres ou _ ; unique dans l'analyse. |
| Libellé | Le nom affiché dans le volet et les résultats. |
| Insérer un champ, Insérer une fonction | Insèrent au curseur ; une fonction s'insère avec ses arguments sélectionnés. |
| Expression | La formule. |
| Tester | Compile l'expression sur le serveur et affiche son type et huit valeurs d'exemple. |
Enregistrer n'est disponible qu'après un test réussi. Le type du résultat fixe le rôle du champ : un nombre devient une mesure, tout autre type une dimension. Le champ rejoint alors un groupe calc du volet et s'utilise dans les lignes, les mesures et les filtres comme tout autre champ.
Le langage
Un champ s'écrit par son nom pour l'entité analysée (AMOUNT), ou entité.NOM pour une autre entité (customers.COUNTRY). Les textes s'écrivent entre apostrophes.
| Élément | Formes |
|---|---|
| Arithmétique | + - * / et parenthèses. Une division par zéro donne une valeur vide. |
| Comparaison | = != <> < <= > >= |
| Logique | and, or, not |
| Condition | condition ? valeur_si_vrai : valeur_si_faux |
| Liste | x in ('FR', 'BE') |
| Vide | x is empty, x is not empty |
| Dates | year(d), month(d), day(d), days(début, fin) — le nombre de jours entre deux dates |
| Nombres | round(x, n), abs(x) |
| Texte | upper(s), lower(s), length(s), concat(a, b, …) |
| Tout type | coalesce(a, b, …) — la première valeur non vide |
Un résultat oui/non s'affiche Y / N. Une date julienne de JD Edwards EnterpriseOne est convertie en vraie date avant l'application d'une fonction de date.
Exemples
| Besoin | Expression | Rôle |
|---|---|---|
| Pipeline pondéré | STAGE = 'Negotiation' ? AMOUNT * 0.6 : AMOUNT * 0.3 | mesure |
| Prix unitaire | AMOUNT / QTY | mesure |
| Année de clôture | year(CLOSE_DATE) | mesure — un nombre ; pour regrouper par année, la granularité Année de la date dans Lignes convient mieux |
| Délai de clôture | days(CREATED_ON, CLOSE_DATE) | mesure |
| Tranche de montant | AMOUNT >= 100000 ? 'large' : 'standard' | dimension |
| Client national ou non | customers.COUNTRY = 'FR' | dimension (Y / N) |
Points d'attention
| Situation | Effet |
|---|---|
Types incompatibles (AMOUNT + 'x'). | Le test échoue et indique la position de l'erreur. |
| Un champ inconnu. | Le test échoue et le nomme. |
Les deux branches de ? : n'ont pas le même type. | Le test échoue : deux nombres, deux textes ou deux dates. |
| Une expression de plus de 2 000 caractères. | Refusée. |
Pour aller plus loin
- Analyser les données — les étagères et les vues.
- Analyses enregistrées et tableaux de bord — une analyse enregistrée conserve ses champs calculés.