DataDrill EXPRESS: Les équations dans DataDrill

Olivier Pinette

Pour construire ses indicateurs, l’utilisateur de DataDrill EXPRESS a souvent besoin d’utiliser des équations pour valoriser certaines séries. Régulièrement, nous recevons des questions à ce sujet. Dans ce document, nous avons voulu détailler les principales équations disponibles dans DataDrill EXPRESS (version 4.1), mais aussi les astuces et bonnes pratiques.

Les équations dans
DataDrill EXPRESS
Bonnes Pratiques
Olivier PINETTE
STATUT : V1.3 – 2010/10/21 - VALIDE
1 Introduction
Pour construire ses indicateurs, l’utilisateur de DataDrill EXPRESS a souvent besoin d’utiliser des
équations pour valoriser certaines séries. Régulièrement, nous recevons des questions à ce sujet.
Dans ce document, nous avons voulu détailler les principales équations disponibles dans DataDrill
EXPRESS (version 4.1), mais aussi les astuces et bonnes pratiques.

2 Généralités
Une équation est une chaîne de texte interprétable et composée d’un ensemble de fonctions,
d’opérateurs et/ou de constantes qui retournent une valeur. Les équations sont assez semblables à
des formules de cellules dans un tableur, mais elles ne sont pas un langage de programmation
structuré.
Les équations sont l'un des types de sources de
données disponibles pour une série, au même titre
que « manuelles » ou « requête »

Les équations peuvent retourner :
Une valeur numérique, pour les séries de type « Données »
Une couleur, pour les séries de type « Alarme »
Elles peuvent également être utilisées pour spécifier les valeurs limites (inférieure et supérieure)
d'une région.
Chaque équation est évaluée pour chaque période du calendrier utilisé par le graphe.

3 L’éditeur d’équations
L'éditeur d'équation vous permet de saisir et de tester les équations, mais aussi d’accéder à
l’assistant (wizard).
Pour les graphes incluant des séries basées sur une équation, l’éditeur d’équations est accessible
sur la page « propriété de la série » en suivant le lien « Modifier Equation » (cas d’un graphe dans
une unité) ou le bouton
« Modifier Equation » (cas d’un
graphe dans la bibliothèque).

www.spirula.fr

1
Rappel du nom du graphe
et de le la série

Zone de saisie de l’équation

Mémo des noms de séries
du graphe courant

Test et évaluation des valeurs de
la série pour chaque période du
graphe.
« m » = « missing » = indéfini.

L’assistant permet d’accéder à chaque fonction regroupée par catégorie.
Pour voir le détail d'une fonction, sélectionnez une catégorie, puis une
fonction dans la liste en dessous. Sur la droite apparaît la description, un
exemple de la fonction et les paramètres. Pour certains paramètres, un lien
est affiché pour vous aider à choisir un dossier, produit d'information, un
graphique ou une série.

www.spirula.fr

2
4 Les équations
4.1 Les opérateurs
Les opérateurs mathématiques :
Opération

Opérateur

Addition

+

Soustraction

-

Multiplication

*

Division

/

Puissance

^

Modulo

%

Changement de
signe

Exemples et remarques
a + b renvoie la somme de a par b
Exemple : 2 + 3 renvoie 5
a – b renvoie la différence de a par b
Exemple : 3 – 2 renvoie 1
Voir également « changement de signe »
a * b renvoie le produit de a par b
Exemple : 2 * 3 renvoie 6
a / b renvoie la quotient de a par b
Exemple : 2/3 renvoie 0,6667
Pour la division entière voir les fonctions fix(exp) et int(exp)
a ^ b renvoie ab (a à la puissance b)
exemple : 2^3 renvoie 8
Voir également la fonction pow(exp)
a % b renvoie le reste de la division entière de a par b.
Le résultat est du même signe que diviseur (a).
exemples : 10%3 renvoie 1
-11%3 renvoie -2
Neg(exp) renvoie la valeur de l’expression (ou de la constante) en
ayant changé son signe.
Exemple : neg(2) renvoie -2
Attention, le symbole "-" ne peut pas être utilisé devant une
expression ou une constante pour en changer le signe. Pour faire
une changement de signe, utilisez la fonction neg(exp).

neg(exp)

Les opérateurs logiques :
Opération

Opérateur

Exemples et remarques

Égal

=

Inférieure

<

Inférieure ou égal

<=

Supérieure

>

Supérieure ou égal

>=

Les operateurs logiques sont généralement utilisés dans des
fonctions conditionnelles, comme le IF :
if((expression_logique), si_vrai, si_faux)
Les expressions logiques doivent être entourées par des
parenthèses ou des crochets.
Exemple : if([series("Réelle")>0.95],RED,GREEN) renvoie Rouge
pour les périodes où la série Réelle est > 0,95, Vert sinon.

ET logique

&

OU logique

|

Une expression logique peut contenir plusieurs conditions en
utilisant l'opérateur OU ("|"), ou l’opérateur ET ("&").
Exemple : if( [ (series("Réelle")>0.95)|
(series("Réelle")<neg(0.95)) ], RED, GREEN )
renvoie Rouge pour les périodes où la série Réelle n’est pas
comprise entre -0,95 et 0,95, vert sinon.

www.spirula.fr

3
Précédence (priorité) des opérations
Pour imposer l’ordre des opérations il faut utiliser les parenthèses et les crochets : () []
Sans parenthèses ou crochets, DataDrill effectue les opérations dans l’ordre suivant :
%
^
* et /
+ et –

Modulo
Exposant
Multiplication et division
Addition et soustraction

4.2 Les constantes
Les constantes numériques :
nombre

PI

Toutes valeurs numérique, entière ou réelle.
Remarques:
utilisez la fonction neg(exp) pour les valeurs négatives (Exemple :
neg(3) pour -3)
utilisez le point comme séparateur décimal (Exemple : 5.3 pour 5
virgule 3).
Les réels sont affichés avec une précision de 4 chiffres après la
virgule. Exemples
o 1/3 renvoie 0,3333
o 5.9999 renvoie 5,9999
o 5.99999 renvoie 6
o 5.99994 renvoie 5,9999
Mais les calculs sont effectués avec davantage de précision (celle
d’un double).
Ainsi 5.99999*100000 renvoie 599999.
Renvoie la valeur de π (3,1416)

Les constantes de type couleur :
Elles sont utilisables avec les équations liées aux séries de type « Alarme ».
Black
Blue
Green
Orange
Red
White
Yellow

Noir
Bleu
Vert
Orange
Rouge
Blanc
Jaune

www.spirula.fr

4
Constante particulière :
Elle est utilisable aussi bien avec les séries de type « donnée » que « alarme »
IsMissing

Renvoie la valeur « manquante » (« non définie »)

4.3 Règles et astuces
Les valeurs décimales doivent utiliser le point "." comme séparateur décimal. Dans les
expressions DataDrill, la virgule est utilisée comme séparateur des arguments des fonctions,
il n’est donc pas possible de l’utiliser comme séparateur décimal (par exemple écrire 5.3 et
non 5,3 pour le nombre 5 virgule 3).
N’utilisez pas de séparateur de milliers (par exemple écrire « 1234 » et non « 1 234 ».
Les nombres négatifs doivent être écrits en utilisant la fonction "neg" (par exemple, utilisez
« neg (10) » et non « -10 » qui ne fonctionnera pas toujours).
Lorsque vous utilisez une expression logique (par exemple avec la fonction if), vous devez
l’entourer avec des parenthèses ou crochets. Par exemple, vous devez écrire "if ((1> 5),…)"
et non "if(1> 5,…)".
Depuis la version 2 de DataDrill, les retours chariot ne rendent plus fou l'éditeur
d’équations, vous pouvez donc utiliser le retour à la ligne pour améliorer la lisibilité de vos
équations. De même, l’éditeur d’équations n’est plus sensible à la casse
(majuscule/minuscule) des fonctions et/ou noms de séries.
Certaines fonctions acceptent un paramètre optionnel qui permet de spécifier une valeur à
utiliser si la valeur calculée est « missing » (manquante). Par exemple, la fonction
series("Réelle", 0) retourne 0 si la valeur de la séries Réelle est « missing ».
Désignation d’une série :
Pour les graphes d’unité :
<ref_série>
Dans le même graphe
Dans un autre graphe de <ref_graphe><ref_série>
la même unité et du
même item
<ref_unité><ref_item><ref_graphe><ref_série>
Dans un graphe d’une
autre unité et/ou autre
item
Où
Ref_série
Peut être le nom de la série, son id ou les 2:
[<Id_série>]<nom_série>

www.spirula.fr

5
Ref_graphe

Peut être le nom du graphe, son id ou les 2 :
[<Id_graphe>] <nom_graphe>

Ref_item
Ref_unité

Peut être le nom de l’item, son id ou les 2 : [<Id_item>] <nom_item>
Peut être le chemin complet (répertoire + unité) de l’unité, son id ou les 2 :
[<Id_unité>] <Chemin>

Pour les graphes de la bibliothèque :
<nom_série>
Dans le même graphe
<nom_graphe><nom_série>
Dans un autre graphe
Remarques :
L’id a priorité sur le nom, c'est-à-dire que lorsqu’un objet est identifié à la fois par son id et
son nom, c’est l’id qui est utilisé et le nom n’est là qu’à titre indicatif.
Attention, en cas de renommage du nom d’une série, d’un graphe, ou d’un répertoire, les
équations y faisant référence par leur nom, ne seront pas mise à jour et retourneront une
erreur lors de leurs évaluations.
A contrario, si une série, un graphe, ou un répertoire a été effacé, puis recréé avec le même
nom, il ne possédera plus le même identifiant, et les équations faisant référence à l’ancien
id seront également en erreur lors de leurs évaluations.
La grande majorité des équations utilisées font généralement référence à d’autres séries du
même graphe. Il est alors facile en cas de renommage de se souvenir de mettre à jour les
séries basées sur une équation. Cependant, compte tenu des 2 remarques précédentes, il
est préférable de ne pas abuser des références hors du graphe et encore moins hors de
l’unité, sous peine de ne plus savoir qui utilise quoi.
Quelques équations (comme graphsum) peuvent faire référence à un (ou des) graphe(s) (et
non des séries) les règles ci-dessus s’appliquent également en faisant abstraction de la partie
concernant la série. Ainsi un chemin complet pour un graphe sera :
<ref_unité><ref_item><ref_graphe>.

Où trouver l’id des objets :
o Pour le graphe : sur la page des propriétés du graphe

o Pour une série : sur la page des propriétés de la série
o Pour une unité : sur la page des propriétés de l’unité

o Pour un item : sur la page des propriétés de l’item

www.spirula.fr

6
Exemples
series("ACWP")
désigne la série ACWP du graphe courant.
series("[7368]")
désigne la série portant l’id 7368 du graphe courant.
series("[7368] ACWP")
désigne la série d’id 7369 et de nom ACWP du graphe courant.
series("Cost- Cost PerformanceACWP")
désigne la série ACWP du graphe « Cost- Cost Performance »
series("[2017] Cost- Cost Performance[7368] ACWP ")
désigne la série d’id 7368 et de nom ACWP du graphe d’id 2017 et de nom « Cost- Cost
Performance »
series("ProjectsProject 2Project02.xls[2161] Cost- Budget
At CompletionACWP")
désigne la série ACWP du graphe d’id 2161 et de nom « Cost- Budget At Completion » du
répertoire « Projects » de l’unité « Project 2 », de litem « Project02.xls »

4.4 Les fonctions principales
4.4.1 Fonctions spécifiques aux alarmes (Alarm)
Les fonctions suivantes sont généralement employées dans un graphe de contrôle (avec des
fonctions SPC) pour indiquer sa stabilité/instabilité. Elles feront l’objet d’un autre document dédié à
SPC.
Fonction
alarm1G3s
(Série, sérieLCL, sérieCL, sérieUCL)
alarm2o3G2s
(Série, sérieLCL, sérieCL, sérieUCL)
alarm4o5G1s
(Série, sérieLCL, sérieCL, sérieUCL)
Alarm8cl
(Série, sérieLCL, sérieCL, sérieUCL)
alarmAll4
(Série, sérieLCL, sérieCL, sérieUCL)

Exemples et remarques
Cette fonction renvoie rouge si un point est en dehors de
± 3 sigma, sinon la fonction renvoie vert.
Cette fonction renvoie rouge si deux de trois points
consécutifs sont supérieurs à 2 sigma, sinon la fonction
renvoie vert.
Cette fonction renvoie rouge si quatre de cinq points
consécutifs sont supérieurs à 1 sigma, sinon la fonction
renvoie vert.
Cette fonction renvoie rouge si huit points consécutifs
sont du même côté de la ligne centrale, autrement, la
fonction renvoie vert.
Cette fonction renvoie rouge si une quelconque des
conditions suivantes est vraie : alarm1G3s, alarm2o3G2s,
alarm4o5G1s or alarm8cl

www.spirula.fr

7
Les fonctions suivantes permettent la comparaison d’une série « objectif » avec une série « réelle »
avec la prise en charge d’une tolérance autour de l’objectif (commandes ajoutées en version 3.8.0):
Fonction
Exemples et remarques
ryg1s(valeur(0) ou %(1),
Compare la série “réelle” et “estimée” et renvoie :
série_réelle,
vert si : réelle < estimée + inner
série_estimée,
Jaune si : estimée + inner < réelle < estimée + outer
inner,
Rouge si : réelle > estimée + outer
outer)
Inner et outer étant exprimés en valeur (0) ou en pourcentage (1)
de la série « estimée» en fonction du premier paramètre.
Exemple : ryg1s(0, "Donnée","Objectif",10,20)

ryg2s(valeur(0) ou %(1),
série_réelle,
série_estimée,
inner,
outer)

Compare la série “ réelle ” et “ estimée ” et renvoie :
vert si : estimée – inner < réelle < estimée + inner
Jaune si : estimée - outer < réelle < estimée + outer
Rouge : sinon
Inner et outer étant exprimés en valeur (0) ou en pourcentage (1)
de la série « estimée» en fonction du premier paramètre.
Exemple : ryg2s(0, "Donnée","Objectif",10,20)

Voici en exemple en image
Pour simplifier la lecture du graphe, nous avons également ajouté sur ce graphe, une région verte
qui entoure l’objectif +10% et jaune pour l’objectif+20%. Voici les séries utilisées dans cet exemple :
line(20,60)
Objectif (données)
Données (Données)

Manuelles: 20,34,32,28,30,32,35,35,45,55,60,70

ryg1s avec 10 et 20% (alarme)

ryg1s(0, "Donnée","Objectif",10,20)

ryg1s avec valeur 5 et 10 (alarme)

ryg1s(1, "Donnée","Objectif",5,10)

ryg2s avec 10 et 20% (alarme)

ryg2s(0, "Donnée","Objectif",10,20)

Vert (région)

series("Objectif")*1.1
series("Objectif")*0.9

Jaune (région)

series("Objectif")*1.2
series("Objectif")*0.8

www.spirula.fr

8
4.4.2 Fonctions spécifiques aux prévisions (Forecast)
Voici un ensemble d’équations spécifiques à la valorisation des séries de données de nature
« Prévision » (forecast).
Fonction
extrapolate
(série)

Exemples et remarques
Extrapolation en construisant la droite passant par le premier et dernier point
valorisée de la série spécifiée
(tangente <premier point>/<dernier point >).
Exemple : extrapolate("réel")

last
(Série)
ma
(série,n)
mxb
(série,n)

Capture la dernière valeur de la série spécifiée et l’étend dans le futur.
Exemple : last("réel")

Calcule la moyenne mobile sur les n dernières périodes de la série spécifiée.
Exemple : ma("réel",3)

Extrapolation en construisant la droite passant par le dernier et le n ème point
valorisée de la série spécifiée
(tangente <dernier point>/<dernière point –n +1>).
Exemple : mxb("réel",5)

overplan
Si pour la dernière période valorisée de série_estimée,
(série_réelle,
série_réelle > série_estimée, renvoie la valeur de série_estimée rehaussé de la
série_estimée) différence entre séries_réelle et série_estimée
sinon renvoie série_estimée
Exemple : overplan("réel","Objectif")

underplan
(série_réelle,

Si pour la dernière période valorisée de série_estimée
série_réelle < série_estimée, renvoie la valeur de série_estimée rabaissé de la

www.spirula.fr

9
série_estimée) différence entre séries_réelle et série_estimée
sinon renvoie série_estimée
Exemple : underplan("réel","Objectif")

Voici en exemple en image, avec les séries utilisées dans cet exemple :
extrapolate("réel")
Prévision (extrapolate)
Prévision (last)

last("réel")

Prévision (ma)

ma("réel",3)

Prévision (mxb)

mxb("réel",5)

Prévision (overplan)

overplan("réel","Objectif")

Prévision (underplan)

underplan("réel","Objectif")

Remarque: Certaines autres équations peuvent également être utilisées sur les séries de nature
« Prévision » (forecast), par exemple, seriesmin, seriesmax,…

www.spirula.fr

10
4.4.3 Fonctions générales (General)
Fonction
Exemples et remarques
attr
Renvoie la valeur de l’attribut (de type entier ou réel) valorisé sur la
(nom_attribut)
série courante, le graphe courant ou l’unité courante (dans cet ordre
de priorité).
Exemple : Attr("Valeue Cible")

choose
(Série,
Couleur1, Limite1,
Couleur2
[,Limite2, Couleur3
[,Limite3, Couleur4
[,Limite4,
Couleur5]]])

Pour chaque période, renvoie
Couleur1 si la « Série » est entre 0 et Limite1 (incluse),
Couleur2 entre Limite1 et Limite2 (incluse)
Couleur3 entre Limite2 et Limite3 (incluse)
Couleur4 entre Limite3 et Limite4 (incluse)
Couleur 5 au delà de Limite4 (incluse)
Cette fonction peut avoir de 1 à 4 limites

data
(nombre)

Renvoie le nombre pour toutes les périodes.
Identique à la saisie du nombre directement !
Exemple : data(10.25) renvoie 10,25
Pour chaque période, renvoie
val1 avant date1,
val2 entre date1 et date2
val3 entre date2 et date3
val4 entre date3 et date4
val5 après date 4
Cette fonction peut avoir de 1 à 4 dates. Le format des dates est le
format défini par votre culture ou la forme universelle (ISO) que nous
vous conseillons AAAA/MM/JJ

data
(val1,date1,val2
[,date2,val3
[,date3,val4
[,date4,val5]]])

Exemples : choose("Réel",GREEN,75,RED)
choose("Réel",BLUE,30,GREEN,50,YELLOW,75,RED)

Exemples : data(80,"2010/3/1",50,"2010/5/1",20)

datapoints
(liste de valeur)

Pour chaque période renvoie une valeur de la liste dans l’ordre de
celle-ci.
Les valeurs décimales sont autorisées et doivent utiliser le séparateur
lié à votre culture et non le point !
Les facteurs « k » et « m » peuvent être utilisés respectivement pour
Kilo et million
Exemple : datapoints("900;1,2k;1,4k;1,65k;1,0m")
Renvoie 900, 1200, 1400, 1650, 1000000

if
(expression,
si_vrai, si_faux)
ifin
(valeur,
min, max,

Pour chaque période, si l’expression est vraie (ou différente de 0),
renvoie l’argument 2, sinon renvoie l’argument 3.
Exemple : if((series("Réelle")>0.95),RED,GREEN)

Pour chaque période, si la valeur est comprise entre min et max,
renvoie l’argument 4, sinon renvoie l’argument 5.
Exemple : ifin(series("Réelle"),0,100,RED,GREEN)

www.spirula.fr

11
si_vrai, si_faux)
ifout
(valeur,
min, max,
si_vrai, si_faux)
interp
(regle,
Periode1,Valeur1
,Periode2,Valeur2
[,Periode3,Valeur3
[,Periode4,Valeur4]])

Pour chaque période, si la valeur est en dehors de l’intervalle
*min…max+, renvoie l’argument 4, sinon renvoie l’argument 5.
Exemple : ifout(series("Réelle"),0,100,RED,GREEN)

Permet à partir de 2 à 4 couples (période, valeur) d’interpoler chaque
période en reliant chaque point spécifié par une ligne droite et en
fonction de la règle donnée en premier paramètre :
0 : garde la 1ère et dernière valeur
1 : garde la 1ère valeur et interpole la dernière
2 : interpole la 1ère valeur et garde la dernière
3 : interpole la 1ère et la dernière valeur
Exemple : interp(0, 3, 12, 10, 33).
Cf exemple en image

region
(série)

Renvoie la couleur de la région traversée par la série.
Exemple : region("Réelle")

Voici un exemple en image de quelque fonctions, avec les séries utilisées dans cet exemple :
data(20,"2010/03/01",50,"2010/05/01",80)
Cible
datapoints("10;15;20;25;30;35;40;45;50")
Réel
choose("Réel",GREEN,75,RED)
Alarme (choose 1 limite)
choose("Réel",BLUE,30,GREEN,50,YELLOW,75,RED)
Alarme (choose 3 limites)
if([series("Réel")<series("Cible")],RED,GREEN)
if

www.spirula.fr

12
Voici un exemple en image de la fonction interp, avec les séries utilisées dans cet exemple :
interp(0, 2,12, 8,33)
interp 0 avec 2 périodes
interp(3, 2,12, 8,33)
interp 3 avec 2 périodes
interp(1, 2,22, 4,16, 6,50, 8,23
interp 1 avec 4 périodes

4.4.4 Fonctions logarithmiques (Log)
Fonction
Exemples et remarques
log
logarithme (base 10) du nombre spécifié
(nombre)
logn
logarithme base n du nombre spécifié
(nombre, base)
ln
logarithme népérien (ou naturel) du nombre spécifié
(nombre)
4.4.5 Fonctions mathématiques (Math)
Fonction
Exemples et remarques
abs
Valeur absolue du nombre spécifié
Exemple : abs(series("réelle"))
(nombre)
exp
Exponentiel du nombre spécifié
Exemple : exp(series("réelle"))
(nombre)
int
Partie entière.

www.spirula.fr

13
(nombre)
fix
(nombre)

La seule différence entre les 2 fonctions concerne le traitement
des nombres négatifs (cf exemple).

line
(y1,y2)

Trace une ligne droite de (PP,y1) à (DP,y2).
Ou PP= première période du calendrier du graphe, DP = dernière
période du calendrier du graphe. (nous parlons bien ici des
périodes du calendrier du graphe et non des périodes visualisées,
qui peuvent être différentes)

Exemple : int(3.6) et fix(3.6) retourne 3
int(-3.6) retourne -4 et fix(3.6) retourne -3

Exemple : line(0,250) trace une ligne de 0 à 150

min
(valeur1, valeur2)
max
(valeur1, valeur2)
neg
(nombre)
normale
(réel)

renvoie le minimum ou maximum des 2 valeurs données en
arguments.
Exemple : min(100,10) renvoie 10

Valeur négative du nombre
Exemple : neg(5) retourne -5

Répartition selon loi normale.
La répartition est faite sur l’ensemble des périodes du graphe, le
pic est centré sur le milieu du graphe et son maximum donné en
paramètre.
Exemple : normale(100)

pow
(x,y)
rayleigh ou rayleighcdf
(forme)

Retourne x à la puissance y
Exemple : pow(series("réelle"),10)

Répartition selon la fonction de répartition de la loi de Rayleigh.
La répartition est faite sur l’ensemble des périodes du graphe.
Exemple : Rayleighcdf (2.15)

sqrt
(nombre)
weibullcdf
(forme, echelle)

Retourne la racine carrée du nombre spécifié
exemple : sqrt(series("réelle"))

Répartition selon la fonction de répartition (Cumulative
Distribution function) de la loi de weibull.
La répartition est faite sur l’ensemble des périodes du graphe.
Exemple : weibullcdf(1.5,75)

weibullpdf
(forme, echelle)

Répartition selon la densité de probabilité (Probability Debsity
Function) de la loi de Weibull
La répartition est faite sur l’ensemble des périodes du graphe.
Exemple : weibullpdf(2.15, 100)

www.spirula.fr

14
Exemple en image de l’utilisation de la loi de Weibull :

4.4.6 Fonctions liées aux séries de données (Series data)
Fonction
Exemples et remarques
first
L’ensemble des périodes est valorisé avec la première valeur de
(Série)
la série spécifiée.
Exemple : first("Réelle")

graphsum
(Graphe)

Pour chaque période, somme de toutes les séries de nature
« Réelle » du graphe spécifié.
Exemple : graphsum(""), renvoie la somme de
toutes les séries Réelle du graphe courant (c-ad du graph auquel appartient la série édité).
graphsum("MonGraph »") renvoie la somme de
toutes les séries Réelle du graphe « MonGraphe »

last
(Série)

L’ensemble des périodes est valorisé avec la dernière valeur
définie (c-a-d non « missing ») de la série spécifiée.
Exemple : last("Réelle")

lastx
(Série, n)

Pour chaque période, somme des n périodes précédentes de la
série spécifiée. (Une valeur « missing » compte pour 0 dans la
somme).
Exemple : lastx("Réelle", 2)

www.spirula.fr

15
lastxave
(Série, n)

Pour chaque période, la moyenne des n périodes précédentes de
la série spécifiée.
La moyenne ne prend en compte que les points « nonmissing » parmi les n.
Exemple : lastxave("Réelle", 3)

lastxcount
(Série, n)
missing
(Série)

Pour chaque période, nombre de point non « missing » dans les
n périodes précédentes de la série spécifiée.
Exemple : lastxcount("Réelle", 5)
Pour chaque période, renvoie 1 si la valeur de la série spécifiée
est « IsMissing », 0 sinon.
Exemple : missing("Réelle")

period(0)

Pour chaque période, le numéro séquentiel de la période
démarrant à 0. L’argument est toujours 0.
Exemple : period(0)

points
(Série)

Pour chaque période, le nombre de points de données (hors
« missing ») de la série spécifiée à la période courante.
Exemple : points("Réelle")

pointsA
(Série)

Nombre total de points de données de la série spécifiée (hors
« missing »)
Exemple : pointsa("Réelle")

series
(Série)
series
(Série, VAL)

Pour chaque période, valeur de la série spécifiée.
Exemple : series("Réelle")

Pour chaque période, retourne la valeur de la série spécifiée ou
« Val » si cette valeur est IsMissing
Exemple : series("Réelle",0) qui renvera 0
lorsque Réelle est « IsMissing », à la
difference de series("Réelle") qui renvoie
IsMissing lorsque « Réelle » est « IsMissing »

seriesp
(Série,period)

Pour chaque période, la valeur de la série spécifiée à une période
donnée
Exemple : seriesp("Réelle", (Period(0)-1))

seriesp
(Série,period,VAL)

Pour chaque période, la valeur de la série spécifiée à une
période donnée ou « Val » si cette valeur est IsMissing
Exemple : seriesp("Réelle", (Period(0)-1),0)

sum
(Série)

Pour chaque période, le cumul (somme jusqu’à la période
courante) de la série spécifiée
Exemple : sum("Réelle")

suma
(Série)

Somme sur toutes les périodes de la série spécifiée (hors
missing)
Exemple : suma("Réelle")

sumtomissing
(Série)

Cumul (comme sum) mais uniquement pour les périodes
valorisées (hors IsMissing) et jusqu’au premier IsMissing.
Exemple : sumtomissing("Réelle")

www.spirula.fr

16
todate
(Série)

Pour toutes les périodes, la somme des données de la série
spécifiée pour les périodes incluses de celle-ci. Ceci n’a d’intérêt
que lorsque l’on fait référence à une série d’un graphe utilisant
un calendrier d’une fréquence inférieure. Par exemple pour
utiliser des données mensuelles dans un graphe trimestriel.
Exemple : todate("GrapheRéelle")

todate
(Série,DateSpec)

(ajoutée en version 3.8.0)
Pour toutes les périodes, la somme des données de la série
spécifiée pour les périodes incluses de celle-ci. Ceci n’a d’intérêt
que lorsque l’on fait référence à une série d’un graphe utilisant
un calendrier d’une fréquence inférieure et non strictement
superposable. Par exemple pour utiliser des données
semestrielles dans un graphe mensuel.
1 utilisation de la date de début
2 utilisation de la date de fin
Exemple : todate("GrapheRéelle",1)

(ajoutée en version 3.8.0)

www.spirula.fr

17
Exemple en image de l’utilisation de quelques fonctions :

last("donnée") retourne une droite d’ordonnée 10 qui est la dernière valeur de

données
lastx("donnée",3) effectue une somme (mobile) des 3 périodes précédentes de

données
lastxave("donnée",5) effectue la moyenne mobile des 5 périodes précédentes de

données
seriesp("donnée",(Period(0)-1)) renvoie la série donnée décalée d’une période
seriesp("donnée",(Period(0)-1),0) renvoie la série donnée décalée d’une

période et en remplaçant les missing par 0.
sum("donnée") renvoie la somme de proche en proche (période par période)
sums("donnée") renvoie le cumul de toutes les périodes

www.spirula.fr

18
4.4.7 Fonctions liées aux séries min-max (Series min-max)
Fonction
Exemples et remarques
seriesmin
Pour chaque période, valeur minimale de la série spécifiée
(Série)
jusqu’à la période courante
Exemple : seriesmin("Réelle")

seriesmax
(Série)

Pour chaque période, valeur maximale de la série spécifiée
jusqu’à la période courante
Exemple : seriesmax("Réelle")

seriesave
(Série)

Pour chaque période, moyenne de la série spécifiée jusqu’à la
période courante (hors missing)
Exemple : seriesave("Réelle")

seriesmina
(Série)
seriesmaxa
(Série)
seriesavea
(Série)

Valeur minimale sur toute la série spécifiée
Exemple : seriesmina("Réelle")

Valeur maximale sur toute la série spécifiée
Exemple : seriesmaxa("Réelle")

Moyenne sur toutes les valeurs de la série spécifiée (hors
missing)
Exemple : seriesavea("Réelle")

Remarques : toutes ces fonctions acceptent un second paramètre, permettant de définir la valeur à
renvoyer à la place de « IsMissing ». Par exemple Exemple : seriesmin("Réelle",0), renvoie
pour chaque période, la valeur minimale de la série spécifiée jusqu’à la période courante et 0 si le
minimum est IsMissing.

4.4.8 Fonctions Statistiques (Spc)
Fonction
Exemples et remarques
mean(Série)
Moyenne sur toutes les valeurs de la série spécifiée (hors missing)
(identique à la fonction seriesavea)
Exemple : mean("Réelle")

range(Série)

Écart absolu maximum de toutes les valeurs de la série spécifiée
(identique à SeriesMaxA – SeriesMinA).
Exemple : range("Réelle")

sigma(Série)

Ecart type de toutes les valeurs de la série spécifiée
Exemple : sigma("Réelle")

variance(Série)

Variance de toutes les valeurs de la série spécifiée
(=carré de l’écart type)
Exemple : variance("Réelle")

La rubrique SPC contient également les équations applicables à la maîtrise statistique des procédés (en
Anglais : Statictical Process Control). Cette technique fera l’objet d’un autre document.

www.spirula.fr

19
4.4.9 Fonctions trigonométriques (Trig)
Fonction
Exemples et remarques
cos(angle)
Cosinus de l’angle spécifié
sin(angle)
Sinus de l’angle spécifié
tan(angle)
Tangente de l’angle spécifié
cosh(réel)
Cosinus hyperbolique du réel spécifié
sinh(réel)
Sinus hyperbolique du réel spécifié
tanh(réel)
Tangente hyperbolique du réel spécifié
acos(réel)
Arc cosinus du réel spécifié
asin(réel)
Arc sinus du réel spécifié
atan(réel)
Arc tangente du réel spécifié
Remarque : les fonctions Arc Cosinus, sinus et tangente ne sont pas dans le wizard, mais peuvent
être utilisées.

5 Traitement des références entre graphes avec calendrier différent
Dans le chapitre précédent, nous avons vu qu’il était possible de référencer dans un graphe une
série venant d’un autre graphe. Mais, qu’advient-il lorsque les calendriers des 2 graphes ne sont pas
identiques ?
Il convient de différencier 3, et même 4 cas :
1. Utiliser une série provenant d’un graphe qui a une fréquence plus élevée. Par exemple, un
graphe mensuel contenant des séries que je souhaite utiliser dans un graphe hebdomadaire.
2. Utiliser une série provenant d’un graphe qui a une fréquence identique mais décalée. Par
exemple, 2 graphes utilisant 2 calendriers mensuels différents l’un avec des périodes
débutant au 1er de chaque mois, l’autre avec des périodes débutant au 15 de chaque mois.
3. Utiliser une série provenant d’un graphe qui a une fréquence moins élevée. Ici, il convient
de considérer 2 sous-cas :
a. Les fréquences synchronisées. Par exemple, un graphe mensuel contenant des séries
à utiliser dans un graphe trimestriel.
b. Les fréquences ne sont pas synchronisées. Par exemple un graphe hebdomadaire
contenant des séries à utiliser dans un graphe mensuel.

www.spirula.fr

20
Cas 1 : utilisation d’une série mensuel dans un graphe hebdo
Voici le graphe mensuel avec en jaune la zone que nous allons visualiser sur le second graphe
hebdomadaire.

Nous voyons ici que DataDrill effectue une interpolation automatiquement. En fait, le mécanisme
implémenté par DataDrill est le suivant : DataDrill évalue chaque équation pour chaque période du
graphe. Il vérifie si la série référencée a une valeur pour la date exacte considérée. Si oui, il prend la
valeur sans transformation. Sinon, et à condition d’avoir une valeur pour les dates avant et après,
alors une interpolation est effectuée.

www.spirula.fr

21
Cas 2 : utilisation d’une série mensuel d’un graphe mensuel décalé
Dans cet exemple, nous avons un graphe utilisant un calendrier mensuel, basé sur le 15 de chaque
mois, et qui référence une série d’un second graphe qui, lui, utilise un calendrier mensuel plus
traditionnel puisque basé sur le 1er de chaque mois.
Nous nous retrouvons dans un cas semblable à l’exemple précédent, et DataDrill effectuera une
interpolation :

Jan 15

Jan 1

Graphe courant (cercle orange)
Fev 15
Mar 15
Avr 15
Mai 15

Jun 15

Fev 1
Mar 1
Avr 1
Mai 1
Jun 1
Graphe référencé par la série (triangle bleu)

Cas 3a : Exemple de l’adaptation de l’échelle temps et de l’utilisation de la fonction Todate :
Voici un graphe que nous allons utiliser comme référence. Il contient une série de données
nommée « data » (ligne bleu) et son cumul nommé « sum » (barre rouge), le tout sur un calendrier
mensuel :

www.spirula.fr

22
Considérons maintenant un second graphe où nous utiliserons un calendrier trimestriel.

data (graphe 1) (ligne bleu est l’équation series("[2296] testdata")). Nous
observons que la valeur pour chaque fin de période est bien égale à la fin de période
correspondante sur le graphe 1. Par exemple 6 pour les 20/06/2010 sur les 2 graphes.
todate data graphe 1 (ligne pointillé bleu est l’équation todate("[2296]
testdata")). L’équation additionne les valeurs de la série data pour toutes les périodes
du graphe 1 incluse dans le période du graphe 2. Par exemple, pour obtenir la valeur 15 du
second trimestre (au 20/06/2010), todate a calculé 4+5+6 ce qui correspond aux périodes
d’avril, mai et juin.
sum (graphe 1) (barre rouge est l’équation series("[2296] testsum")). Correspond
au report du cumul du graphe 1.
sum (de todate data graphe 1) (barre orange est l’équation sum("todate data graphe
1")). Correspond au cumul de la seconde série du graphe 2 (nommé « todate data graphe
1 »). Remarquons que les 2 barres sont identiques.
« A quoi cela sert-il ? » pouvez-vous vous demander ! Et bien, imaginons que les données du graphe
1 soient un nombre de défauts par exemple. Dans ce cas, si dans un second graphe de fréquence
inférieure on souhaite réutiliser la même information, il convient de l’adapter à la bonne fréquence.
Ainsi, le nombre de défauts d’un trimestre est bien la somme des défauts des 3 mois du trimestre.

www.spirula.fr

23
Cas 3b : Autre Exemple avec des calendriers semestriels et mensuels:
Voici le graphe de référence, comme dans l’exemple précédent, mais avec un calendrier
hebdomadaire. Nous avons réduit l’affichage à 6 mois pour garder une certaine visibilité.

Et voici le second graphe, utilisant cette fois, un calendrier mensuel :

www.spirula.fr

24
Dans le premier exemple, les mois étaient inclus entièrement dans les trimestres. L’inclusion du
calendrier « mois » dans le calendrier « trimestre » était donc simple. Ici, nous avons un nouveau
problème car il n’est pas possible d’inclure des semaines entières dans des mois. Nous devrons
donc utiliser une règle nous permettant de savoir quels mois sont à considérer comme faisant
partie du mois ou pas. La fonction todate possède un second argument facultatif permettant de
gérer cela. Ce second argument peut prendre la valeur 1 ou 2. 1 pour considérer la date de début et
2 pour considérer la date de fin. Appliqué à notre exemple, cela signifie 1 pour considérer toutes les
semaines commençant dans le mois comme en faisant partie, 2 pour considérer toutes les
semaines finissant dans le mois comme en faisant partie.

6 Traitement des données manquantes (missing)
DataDrill autorise qu’une donnée soit « manquante » (pour une ou plusieurs périodes d'une série).
C’est d’ailleurs la valeur par défaut : avant que les périodes d’une série soit valorisées, les valeurs
sont considérées comme manquantes (appelées « missing » ou « IsMissing » dans datadrill).
Il est important de comprendre le comportement des équations DataDrill face aux données
manquantes, qui par nature sont différentes de toutes autres valeurs. Précisons aussi que nous ne
parlons pas là de la valeur 0, qui est
une valeur comme une autre, mais
bien de l’absence de toute valeur.
C’est assimilable au « NULL » des
bases de données.
Sur l’exemple ci-contre, les séries de
données rouges et noires sont
valorisées sur toutes les périodes,
mais la bleu et la rouge ne le sont
que jusqu’au 22/08/2010. Au-delà,
la valeur est « IsMissing » et donc
non dessiné sur le graphe. Idem
pour l’alarme qui est valorisée
jusqu'à la même date, puis
manquante.

Puisque les périodes « missing » n’ont pas de valeur, le comportement des opérations
arithmétiques, mais aussi logiques, sera différent. En effet, comment comparer une valeur
numérique à une valeur manquante ? Ou comment additionner un nombre et une valeur
manquants ? Donc dans tous ces cas, le résultat sera lui-même manquant et cela pour tous les
types de séries (Alarme, données, région, texte).

www.spirula.fr

25
Une question revient parfois : comment distinguer une alarme Missing d’une alarme blanche ? La
réponse en image si- dessous :

alarme verte, puis manquante

alarme verte, puis blanche

Les combinaisons (équation) incluant une donnée manquante sont elles-mêmes
considérées comme manquantes :
valeur <operateur> MISSING renvoie IsMissing
MISSING <operateur> valeur renvoie IsMissing
Cela quelque soit l’opérateur arithmétique (+-,*/%^) ou logique (=<>&|).

Enfin, revenons sur le traitement des valeurs missing :
Comment pourrions-nous écrire une équation conditionnelle au fait qu’une série ACWP soit
valorisée ou non ? Une équation du type if((series("ACWP")=IsMissing),0,
series("ACWP")) ne fonctionnera pas, puisque nous avons appris ci-dessus que toute
combinaison avec une valeur missing renvoie missing, donc le résultat de cette équation sera
toujours missing.
Par contre nous pouvons utiliser la fonction missing(série) :
if((Missing("ACWP")=1),0, series("ACWP")) qui renvoie 0 si ACWP est missing, la
valeur de la série ACWP sinon.
Il y a même une écriture encore plus simple : series("ACWP",0). En effet la fonction
series() accepte un second paramètre optionnel, permettant de préciser la valeur à utiliser
en cas de missing.

www.spirula.fr

26
7 Spirula en bref
Depuis près de 10 ans, Spirula propose des solutions pour mieux estimer et piloter les projets de
développement de logiciels et systèmes.
Leader sur son marché, l’offre Spirula – expertise, outils, formation – permet de mieux Comprendre
le passé, Piloter le présent et Prévoir l’avenir des projets d’ingénierie logicielle et systèmes.
Nous aidons nos clients à définir les processus de développement les plus efficaces, implémenter
des tableaux de bords pour le suivi des projets et augmenter la fiabilité des estimations des coûts,
effort et délais des projets.
Nos consultants sont experts dans le pilotage de projet et les estimations et conduisent
l’implémentation des bonnes pratiques, comme le CMMI, dont Spirula est un des co-auteurs.
Parmi nos clients, nous comptons des PME/PMI ayant une forte activité de développement de
logiciels et de systèmes ainsi que des grands comptes internationaux tel qu’Alstom, BAe,
Continental, Philips, Renault, Thales, …

www.spirula.fr

27

Recomendados

Excel : Les fonctions mathématiques por
Excel : Les fonctions mathématiquesExcel : Les fonctions mathématiques
Excel : Les fonctions mathématiquesZakariyaa AIT ELMOUDEN
4.6K visualizações43 slides
Ch13 por
Ch13Ch13
Ch13yarsenv47
326 visualizações13 slides
Chapitre3TableauxEnCppV2019 por
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Aziz Darouichi
361 visualizações84 slides
Fonctions formules excel por
Fonctions formules excelFonctions formules excel
Fonctions formules excelCarlitza
36K visualizações18 slides
Ebook matlab por
Ebook matlabEbook matlab
Ebook matlabN NASRI
6K visualizações21 slides

Mais conteúdo relacionado

Mais procurados

Ch2 tableur por
Ch2  tableurCh2  tableur
Ch2 tableurWael Ismail
1.9K visualizações4 slides
Chapitre 02 : Variables, Expressions et Instructions por
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsL’Université Hassan 1er Settat
2.1K visualizações17 slides
Matlab by Prof.Keang Sè Pouv por
Matlab by Prof.Keang Sè PouvMatlab by Prof.Keang Sè Pouv
Matlab by Prof.Keang Sè PouvThim Mengly(ម៉េងលី,孟李)
2.9K visualizações122 slides
Excel formules-et-fonctions por
Excel formules-et-fonctionsExcel formules-et-fonctions
Excel formules-et-fonctionsMelek Sellami
1.7K visualizações4 slides
1 rappel d'excel por
1 rappel d'excel1 rappel d'excel
1 rappel d'excelkkatia31
432 visualizações6 slides
Debutermatlab por
DebutermatlabDebutermatlab
Debutermatlabnejmzad
495 visualizações25 slides

Mais procurados(20)

Ch2 tableur por Wael Ismail
Ch2  tableurCh2  tableur
Ch2 tableur
Wael Ismail1.9K visualizações
Excel formules-et-fonctions por Melek Sellami
Excel formules-et-fonctionsExcel formules-et-fonctions
Excel formules-et-fonctions
Melek Sellami1.7K visualizações
1 rappel d'excel por kkatia31
1 rappel d'excel1 rappel d'excel
1 rappel d'excel
kkatia31432 visualizações
Debutermatlab por nejmzad
DebutermatlabDebutermatlab
Debutermatlab
nejmzad495 visualizações
Chapitre5: Classes et objets por Aziz Darouichi
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
Aziz Darouichi985 visualizações
Comment compter les répétitions de caractères dans une cellule et créer une f... por Votre Assistante
Comment compter les répétitions de caractères dans une cellule et créer une f...Comment compter les répétitions de caractères dans une cellule et créer une f...
Comment compter les répétitions de caractères dans une cellule et créer une f...
Votre Assistante146 visualizações
Chp6 - De UML vers C++ por Lilia Sfaxi
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
Lilia Sfaxi12.8K visualizações
Sql3 por rchbeir
Sql3Sql3
Sql3
rchbeir6.7K visualizações
Regex php por Bertrand day
Regex phpRegex php
Regex php
Bertrand day1.5K visualizações
Généralités sur la notion d’Algorithme por InforMatica34
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’Algorithme
InforMatica34430 visualizações
Cours maths s1.by m.e.goultine por Abdel Hakim
Cours maths s1.by m.e.goultineCours maths s1.by m.e.goultine
Cours maths s1.by m.e.goultine
Abdel Hakim3.7K visualizações
Cours maths por hassan1488
Cours mathsCours maths
Cours maths
hassan148812K visualizações
Uml por VINOT Bernard
UmlUml
Uml
VINOT Bernard10.8K visualizações
langage C++ por mohamednacim
langage C++langage C++
langage C++
mohamednacim89 visualizações
Chapitre6: Surcharge des opérateurs por Aziz Darouichi
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
Aziz Darouichi1.3K visualizações

Destaque

Ejemplo por
EjemploEjemplo
EjemploRenato Regal Vidal
226 visualizações3 slides
Miriam prez manrique ird por
Miriam prez manrique irdMiriam prez manrique ird
Miriam prez manrique irdMiriam Pérez
632 visualizações4 slides
Fotos san juan por
Fotos san juanFotos san juan
Fotos san juanGabriella Escalante
199 visualizações14 slides
Mat lab04 por
Mat lab04Mat lab04
Mat lab04Juan Morales
752 visualizações29 slides
Estructura de la PC por
Estructura de la PCEstructura de la PC
Estructura de la PCcomercial22
364 visualizações3 slides
Susana por
SusanaSusana
SusanaSusana Cordoba
249 visualizações11 slides

Destaque(20)

Miriam prez manrique ird por Miriam Pérez
Miriam prez manrique irdMiriam prez manrique ird
Miriam prez manrique ird
Miriam Pérez632 visualizações
Mat lab04 por Juan Morales
Mat lab04Mat lab04
Mat lab04
Juan Morales752 visualizações
Estructura de la PC por comercial22
Estructura de la PCEstructura de la PC
Estructura de la PC
comercial22364 visualizações
Susana por Susana Cordoba
SusanaSusana
Susana
Susana Cordoba249 visualizações
Fatla Bloque Cierre por Marian González
Fatla Bloque CierreFatla Bloque Cierre
Fatla Bloque Cierre
Marian González200 visualizações
Tecnologia y competitividad por Maria Garcia
Tecnologia y competitividadTecnologia y competitividad
Tecnologia y competitividad
Maria Garcia483 visualizações
Marketing v1 [modo de compatibilidad] por veac
Marketing v1 [modo de compatibilidad]Marketing v1 [modo de compatibilidad]
Marketing v1 [modo de compatibilidad]
veac627 visualizações
Microprocesadores por mayuteamo
MicroprocesadoresMicroprocesadores
Microprocesadores
mayuteamo233 visualizações
Rue89modeleparticip por Poisson
Rue89modeleparticipRue89modeleparticip
Rue89modeleparticip
Poisson769 visualizações
Stratégie numérique des éditeurs de livres por Éditions Phalente
Stratégie numérique des éditeurs de livresStratégie numérique des éditeurs de livres
Stratégie numérique des éditeurs de livres
Éditions Phalente3K visualizações
Cómo generar contenidos y ponerlos en internet (Jesus Gallent) por Foro JuanLuisVives
Cómo generar contenidos y ponerlos en internet (Jesus Gallent)Cómo generar contenidos y ponerlos en internet (Jesus Gallent)
Cómo generar contenidos y ponerlos en internet (Jesus Gallent)
Foro JuanLuisVives690 visualizações
Draft1 Chapitre1 por Titash Neogi
Draft1 Chapitre1Draft1 Chapitre1
Draft1 Chapitre1
Titash Neogi686 visualizações
VisiteguidéEdiapo01 por Adrien Demay
VisiteguidéEdiapo01VisiteguidéEdiapo01
VisiteguidéEdiapo01
Adrien Demay261 visualizações
Premiats certamen por vnadal2
Premiats certamenPremiats certamen
Premiats certamen
vnadal2401 visualizações
Expo redes sociales por kronos06
Expo redes socialesExpo redes sociales
Expo redes sociales
kronos06243 visualizações
Pablo gargallo por saraolvega
Pablo gargalloPablo gargallo
Pablo gargallo
saraolvega231 visualizações
Créer du business grâce à internet por Fred Colantonio
Créer du business grâce à internetCréer du business grâce à internet
Créer du business grâce à internet
Fred Colantonio715 visualizações

Similar a DataDrill EXPRESS: Les équations dans DataDrill

.php1 : les fondamentaux du PHP por
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
1.4K visualizações32 slides
Introduction à scala por
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
2.7K visualizações42 slides
Diagramme de Classe por
Diagramme de ClasseDiagramme de Classe
Diagramme de ClasseabdoMarocco
88 visualizações12 slides
Ch2-Notions de base & actions élémentaires.pdf por
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
44 visualizações32 slides
Data Mining (Partie 2).pdf por
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
25 visualizações56 slides
Algo inf102 2007 por
Algo inf102 2007Algo inf102 2007
Algo inf102 2007SergeCowouvi1
21 visualizações52 slides

Similar a DataDrill EXPRESS: Les équations dans DataDrill (20)

.php1 : les fondamentaux du PHP por Abdoulaye Dieng
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
Abdoulaye Dieng1.4K visualizações
Introduction à scala por SOAT
Introduction à scalaIntroduction à scala
Introduction à scala
SOAT2.7K visualizações
Diagramme de Classe por abdoMarocco
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
abdoMarocco88 visualizações
Ch2-Notions de base & actions élémentaires.pdf por FadouaBouafifSamoud
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
FadouaBouafifSamoud44 visualizações
Data Mining (Partie 2).pdf por OuailChoukhairi
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi25 visualizações
Algo inf102 2007 por SergeCowouvi1
Algo inf102 2007Algo inf102 2007
Algo inf102 2007
SergeCowouvi121 visualizações
Conception de base_de_l_algorithme por mustapha4
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithme
mustapha41.2K visualizações
La programmation modulaire en Python por ABDESSELAM ARROU
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
ABDESSELAM ARROU3.7K visualizações
Theme 7 por salmazen
Theme 7Theme 7
Theme 7
salmazen545 visualizações
Informatique Décisionnelle décisionnelle por Hajer Trabelsi
Informatique Décisionnelle décisionnelleInformatique Décisionnelle décisionnelle
Informatique Décisionnelle décisionnelle
Hajer Trabelsi2.2K visualizações
Chapitre 1 rappel por Sana Aroussi
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
Sana Aroussi4.4K visualizações
Nettoyer et transformer ses données avec Openrefine : partie 2 por Mathieu Saby
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
Mathieu Saby1.9K visualizações
R FOR DATA ANALYSIS_DATAFRAMES1.pptx por AbdoulayeWakhabDIOP
R FOR DATA ANALYSIS_DATAFRAMES1.pptxR FOR DATA ANALYSIS_DATAFRAMES1.pptx
R FOR DATA ANALYSIS_DATAFRAMES1.pptx
AbdoulayeWakhabDIOP20 visualizações
Développement Web- PHP (partie I).pdf por YasushiTsubakik
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
YasushiTsubakik8 visualizações
Les Structures de données por Hichem Kemali
Les Structures de donnéesLes Structures de données
Les Structures de données
Hichem Kemali1.5K visualizações
Theme 9(bis) por salmazen
Theme 9(bis)Theme 9(bis)
Theme 9(bis)
salmazen633 visualizações
TAD (1).pptx por SergeOngolo
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
SergeOngolo48 visualizações
Cours3 gdm sql por Abdelbaki IpNöse
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
Abdelbaki IpNöse561 visualizações
TP5_2020.pdf por mouradlamraoui1
TP5_2020.pdfTP5_2020.pdf
TP5_2020.pdf
mouradlamraoui115 visualizações

Mais de Olivier Pinette

Data drill dashbords_overview por
Data drill dashbords_overviewData drill dashbords_overview
Data drill dashbords_overviewOlivier Pinette
551 visualizações24 slides
Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4 por
Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4
Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4Olivier Pinette
456 visualizações15 slides
Nouveautés de DataDrill EXPRESS 3.8 & 4.0 por
Nouveautés de DataDrill EXPRESS 3.8 & 4.0Nouveautés de DataDrill EXPRESS 3.8 & 4.0
Nouveautés de DataDrill EXPRESS 3.8 & 4.0Olivier Pinette
6.1K visualizações12 slides
Mesure & Analyse: Mesurer les Risques por
Mesure & Analyse: Mesurer les RisquesMesure & Analyse: Mesurer les Risques
Mesure & Analyse: Mesurer les RisquesOlivier Pinette
4.6K visualizações15 slides
Mesure & Analyse: Mesurer les Exigences por
Mesure & Analyse: Mesurer les ExigencesMesure & Analyse: Mesurer les Exigences
Mesure & Analyse: Mesurer les ExigencesOlivier Pinette
766 visualizações7 slides
Les indicateurs Mesure & Analyse por
Les indicateurs Mesure & AnalyseLes indicateurs Mesure & Analyse
Les indicateurs Mesure & AnalyseOlivier Pinette
782 visualizações10 slides

Mais de Olivier Pinette(6)

Data drill dashbords_overview por Olivier Pinette
Data drill dashbords_overviewData drill dashbords_overview
Data drill dashbords_overview
Olivier Pinette551 visualizações
Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4 por Olivier Pinette
Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4
Nouveautés de DataDrill EXPRESS 4.1, 4.2, 4.3 et 4.4
Olivier Pinette456 visualizações
Nouveautés de DataDrill EXPRESS 3.8 & 4.0 por Olivier Pinette
Nouveautés de DataDrill EXPRESS 3.8 & 4.0Nouveautés de DataDrill EXPRESS 3.8 & 4.0
Nouveautés de DataDrill EXPRESS 3.8 & 4.0
Olivier Pinette6.1K visualizações
Mesure & Analyse: Mesurer les Risques por Olivier Pinette
Mesure & Analyse: Mesurer les RisquesMesure & Analyse: Mesurer les Risques
Mesure & Analyse: Mesurer les Risques
Olivier Pinette4.6K visualizações
Mesure & Analyse: Mesurer les Exigences por Olivier Pinette
Mesure & Analyse: Mesurer les ExigencesMesure & Analyse: Mesurer les Exigences
Mesure & Analyse: Mesurer les Exigences
Olivier Pinette766 visualizações
Les indicateurs Mesure & Analyse por Olivier Pinette
Les indicateurs Mesure & AnalyseLes indicateurs Mesure & Analyse
Les indicateurs Mesure & Analyse
Olivier Pinette782 visualizações

Último

Durabilité des entreprises - Obligations environnementales et sociales - Ordo... por
Durabilité des entreprises - Obligations environnementales et sociales - Ordo...Durabilité des entreprises - Obligations environnementales et sociales - Ordo...
Durabilité des entreprises - Obligations environnementales et sociales - Ordo...A3C - Expert Comptable à Dunkerque
27 visualizações56 slides
Formation Communautés d'entreprise - Valeur - V2.0.pdf por
Formation Communautés d'entreprise - Valeur - V2.0.pdfFormation Communautés d'entreprise - Valeur - V2.0.pdf
Formation Communautés d'entreprise - Valeur - V2.0.pdfAlexandre Quach
17 visualizações314 slides
Formation et développement avec New World Mall por
Formation et développement avec New World MallFormation et développement avec New World Mall
Formation et développement avec New World MallNabil Abidi
77 visualizações6 slides
DOC SOCIALE Durabilité des entreprises - Obligations environnementales et soc... por
DOC SOCIALE Durabilité des entreprises - Obligations environnementales et soc...DOC SOCIALE Durabilité des entreprises - Obligations environnementales et soc...
DOC SOCIALE Durabilité des entreprises - Obligations environnementales et soc...A3C - Expert Comptable à Dunkerque
7 visualizações9 slides
Le GPS du contrôle fiscal Les questions réponses afin de maîtriser la procédu... por
Le GPS du contrôle fiscal Les questions réponses afin de maîtriser la procédu...Le GPS du contrôle fiscal Les questions réponses afin de maîtriser la procédu...
Le GPS du contrôle fiscal Les questions réponses afin de maîtriser la procédu...A3C - Expert Comptable à Dunkerque
5 visualizações24 slides
Présentation - de New World Mall - FR (1).pdf por
Présentation - de New World Mall - FR (1).pdfPrésentation - de New World Mall - FR (1).pdf
Présentation - de New World Mall - FR (1).pdfNabil Abidi
127 visualizações10 slides

Último(9)

Formation Communautés d'entreprise - Valeur - V2.0.pdf por Alexandre Quach
Formation Communautés d'entreprise - Valeur - V2.0.pdfFormation Communautés d'entreprise - Valeur - V2.0.pdf
Formation Communautés d'entreprise - Valeur - V2.0.pdf
Alexandre Quach17 visualizações
Formation et développement avec New World Mall por Nabil Abidi
Formation et développement avec New World MallFormation et développement avec New World Mall
Formation et développement avec New World Mall
Nabil Abidi77 visualizações
Présentation - de New World Mall - FR (1).pdf por Nabil Abidi
Présentation - de New World Mall - FR (1).pdfPrésentation - de New World Mall - FR (1).pdf
Présentation - de New World Mall - FR (1).pdf
Nabil Abidi127 visualizações
pre presse ALGO.pdf por Franck PRIME 📱
pre presse ALGO.pdfpre presse ALGO.pdf
pre presse ALGO.pdf
Franck PRIME 📱212 visualizações

DataDrill EXPRESS: Les équations dans DataDrill

  • 1. Les équations dans DataDrill EXPRESS Bonnes Pratiques Olivier PINETTE STATUT : V1.3 – 2010/10/21 - VALIDE
  • 2. 1 Introduction Pour construire ses indicateurs, l’utilisateur de DataDrill EXPRESS a souvent besoin d’utiliser des équations pour valoriser certaines séries. Régulièrement, nous recevons des questions à ce sujet. Dans ce document, nous avons voulu détailler les principales équations disponibles dans DataDrill EXPRESS (version 4.1), mais aussi les astuces et bonnes pratiques. 2 Généralités Une équation est une chaîne de texte interprétable et composée d’un ensemble de fonctions, d’opérateurs et/ou de constantes qui retournent une valeur. Les équations sont assez semblables à des formules de cellules dans un tableur, mais elles ne sont pas un langage de programmation structuré. Les équations sont l'un des types de sources de données disponibles pour une série, au même titre que « manuelles » ou « requête » Les équations peuvent retourner : Une valeur numérique, pour les séries de type « Données » Une couleur, pour les séries de type « Alarme » Elles peuvent également être utilisées pour spécifier les valeurs limites (inférieure et supérieure) d'une région. Chaque équation est évaluée pour chaque période du calendrier utilisé par le graphe. 3 L’éditeur d’équations L'éditeur d'équation vous permet de saisir et de tester les équations, mais aussi d’accéder à l’assistant (wizard). Pour les graphes incluant des séries basées sur une équation, l’éditeur d’équations est accessible sur la page « propriété de la série » en suivant le lien « Modifier Equation » (cas d’un graphe dans une unité) ou le bouton « Modifier Equation » (cas d’un graphe dans la bibliothèque). www.spirula.fr 1
  • 3. Rappel du nom du graphe et de le la série Zone de saisie de l’équation Mémo des noms de séries du graphe courant Test et évaluation des valeurs de la série pour chaque période du graphe. « m » = « missing » = indéfini. L’assistant permet d’accéder à chaque fonction regroupée par catégorie. Pour voir le détail d'une fonction, sélectionnez une catégorie, puis une fonction dans la liste en dessous. Sur la droite apparaît la description, un exemple de la fonction et les paramètres. Pour certains paramètres, un lien est affiché pour vous aider à choisir un dossier, produit d'information, un graphique ou une série. www.spirula.fr 2
  • 4. 4 Les équations 4.1 Les opérateurs Les opérateurs mathématiques : Opération Opérateur Addition + Soustraction - Multiplication * Division / Puissance ^ Modulo % Changement de signe Exemples et remarques a + b renvoie la somme de a par b Exemple : 2 + 3 renvoie 5 a – b renvoie la différence de a par b Exemple : 3 – 2 renvoie 1 Voir également « changement de signe » a * b renvoie le produit de a par b Exemple : 2 * 3 renvoie 6 a / b renvoie la quotient de a par b Exemple : 2/3 renvoie 0,6667 Pour la division entière voir les fonctions fix(exp) et int(exp) a ^ b renvoie ab (a à la puissance b) exemple : 2^3 renvoie 8 Voir également la fonction pow(exp) a % b renvoie le reste de la division entière de a par b. Le résultat est du même signe que diviseur (a). exemples : 10%3 renvoie 1 -11%3 renvoie -2 Neg(exp) renvoie la valeur de l’expression (ou de la constante) en ayant changé son signe. Exemple : neg(2) renvoie -2 Attention, le symbole "-" ne peut pas être utilisé devant une expression ou une constante pour en changer le signe. Pour faire une changement de signe, utilisez la fonction neg(exp). neg(exp) Les opérateurs logiques : Opération Opérateur Exemples et remarques Égal = Inférieure < Inférieure ou égal <= Supérieure > Supérieure ou égal >= Les operateurs logiques sont généralement utilisés dans des fonctions conditionnelles, comme le IF : if((expression_logique), si_vrai, si_faux) Les expressions logiques doivent être entourées par des parenthèses ou des crochets. Exemple : if([series("Réelle")>0.95],RED,GREEN) renvoie Rouge pour les périodes où la série Réelle est > 0,95, Vert sinon. ET logique & OU logique | Une expression logique peut contenir plusieurs conditions en utilisant l'opérateur OU ("|"), ou l’opérateur ET ("&"). Exemple : if( [ (series("Réelle")>0.95)| (series("Réelle")<neg(0.95)) ], RED, GREEN ) renvoie Rouge pour les périodes où la série Réelle n’est pas comprise entre -0,95 et 0,95, vert sinon. www.spirula.fr 3
  • 5. Précédence (priorité) des opérations Pour imposer l’ordre des opérations il faut utiliser les parenthèses et les crochets : () [] Sans parenthèses ou crochets, DataDrill effectue les opérations dans l’ordre suivant : % ^ * et / + et – Modulo Exposant Multiplication et division Addition et soustraction 4.2 Les constantes Les constantes numériques : nombre PI Toutes valeurs numérique, entière ou réelle. Remarques: utilisez la fonction neg(exp) pour les valeurs négatives (Exemple : neg(3) pour -3) utilisez le point comme séparateur décimal (Exemple : 5.3 pour 5 virgule 3). Les réels sont affichés avec une précision de 4 chiffres après la virgule. Exemples o 1/3 renvoie 0,3333 o 5.9999 renvoie 5,9999 o 5.99999 renvoie 6 o 5.99994 renvoie 5,9999 Mais les calculs sont effectués avec davantage de précision (celle d’un double). Ainsi 5.99999*100000 renvoie 599999. Renvoie la valeur de π (3,1416) Les constantes de type couleur : Elles sont utilisables avec les équations liées aux séries de type « Alarme ». Black Blue Green Orange Red White Yellow Noir Bleu Vert Orange Rouge Blanc Jaune www.spirula.fr 4
  • 6. Constante particulière : Elle est utilisable aussi bien avec les séries de type « donnée » que « alarme » IsMissing Renvoie la valeur « manquante » (« non définie ») 4.3 Règles et astuces Les valeurs décimales doivent utiliser le point "." comme séparateur décimal. Dans les expressions DataDrill, la virgule est utilisée comme séparateur des arguments des fonctions, il n’est donc pas possible de l’utiliser comme séparateur décimal (par exemple écrire 5.3 et non 5,3 pour le nombre 5 virgule 3). N’utilisez pas de séparateur de milliers (par exemple écrire « 1234 » et non « 1 234 ». Les nombres négatifs doivent être écrits en utilisant la fonction "neg" (par exemple, utilisez « neg (10) » et non « -10 » qui ne fonctionnera pas toujours). Lorsque vous utilisez une expression logique (par exemple avec la fonction if), vous devez l’entourer avec des parenthèses ou crochets. Par exemple, vous devez écrire "if ((1> 5),…)" et non "if(1> 5,…)". Depuis la version 2 de DataDrill, les retours chariot ne rendent plus fou l'éditeur d’équations, vous pouvez donc utiliser le retour à la ligne pour améliorer la lisibilité de vos équations. De même, l’éditeur d’équations n’est plus sensible à la casse (majuscule/minuscule) des fonctions et/ou noms de séries. Certaines fonctions acceptent un paramètre optionnel qui permet de spécifier une valeur à utiliser si la valeur calculée est « missing » (manquante). Par exemple, la fonction series("Réelle", 0) retourne 0 si la valeur de la séries Réelle est « missing ». Désignation d’une série : Pour les graphes d’unité : <ref_série> Dans le même graphe Dans un autre graphe de <ref_graphe><ref_série> la même unité et du même item <ref_unité><ref_item><ref_graphe><ref_série> Dans un graphe d’une autre unité et/ou autre item Où Ref_série Peut être le nom de la série, son id ou les 2: [<Id_série>]<nom_série> www.spirula.fr 5
  • 7. Ref_graphe Peut être le nom du graphe, son id ou les 2 : [<Id_graphe>] <nom_graphe> Ref_item Ref_unité Peut être le nom de l’item, son id ou les 2 : [<Id_item>] <nom_item> Peut être le chemin complet (répertoire + unité) de l’unité, son id ou les 2 : [<Id_unité>] <Chemin> Pour les graphes de la bibliothèque : <nom_série> Dans le même graphe <nom_graphe><nom_série> Dans un autre graphe Remarques : L’id a priorité sur le nom, c'est-à-dire que lorsqu’un objet est identifié à la fois par son id et son nom, c’est l’id qui est utilisé et le nom n’est là qu’à titre indicatif. Attention, en cas de renommage du nom d’une série, d’un graphe, ou d’un répertoire, les équations y faisant référence par leur nom, ne seront pas mise à jour et retourneront une erreur lors de leurs évaluations. A contrario, si une série, un graphe, ou un répertoire a été effacé, puis recréé avec le même nom, il ne possédera plus le même identifiant, et les équations faisant référence à l’ancien id seront également en erreur lors de leurs évaluations. La grande majorité des équations utilisées font généralement référence à d’autres séries du même graphe. Il est alors facile en cas de renommage de se souvenir de mettre à jour les séries basées sur une équation. Cependant, compte tenu des 2 remarques précédentes, il est préférable de ne pas abuser des références hors du graphe et encore moins hors de l’unité, sous peine de ne plus savoir qui utilise quoi. Quelques équations (comme graphsum) peuvent faire référence à un (ou des) graphe(s) (et non des séries) les règles ci-dessus s’appliquent également en faisant abstraction de la partie concernant la série. Ainsi un chemin complet pour un graphe sera : <ref_unité><ref_item><ref_graphe>. Où trouver l’id des objets : o Pour le graphe : sur la page des propriétés du graphe o Pour une série : sur la page des propriétés de la série o Pour une unité : sur la page des propriétés de l’unité o Pour un item : sur la page des propriétés de l’item www.spirula.fr 6
  • 8. Exemples series("ACWP") désigne la série ACWP du graphe courant. series("[7368]") désigne la série portant l’id 7368 du graphe courant. series("[7368] ACWP") désigne la série d’id 7369 et de nom ACWP du graphe courant. series("Cost- Cost PerformanceACWP") désigne la série ACWP du graphe « Cost- Cost Performance » series("[2017] Cost- Cost Performance[7368] ACWP ") désigne la série d’id 7368 et de nom ACWP du graphe d’id 2017 et de nom « Cost- Cost Performance » series("ProjectsProject 2Project02.xls[2161] Cost- Budget At CompletionACWP") désigne la série ACWP du graphe d’id 2161 et de nom « Cost- Budget At Completion » du répertoire « Projects » de l’unité « Project 2 », de litem « Project02.xls » 4.4 Les fonctions principales 4.4.1 Fonctions spécifiques aux alarmes (Alarm) Les fonctions suivantes sont généralement employées dans un graphe de contrôle (avec des fonctions SPC) pour indiquer sa stabilité/instabilité. Elles feront l’objet d’un autre document dédié à SPC. Fonction alarm1G3s (Série, sérieLCL, sérieCL, sérieUCL) alarm2o3G2s (Série, sérieLCL, sérieCL, sérieUCL) alarm4o5G1s (Série, sérieLCL, sérieCL, sérieUCL) Alarm8cl (Série, sérieLCL, sérieCL, sérieUCL) alarmAll4 (Série, sérieLCL, sérieCL, sérieUCL) Exemples et remarques Cette fonction renvoie rouge si un point est en dehors de ± 3 sigma, sinon la fonction renvoie vert. Cette fonction renvoie rouge si deux de trois points consécutifs sont supérieurs à 2 sigma, sinon la fonction renvoie vert. Cette fonction renvoie rouge si quatre de cinq points consécutifs sont supérieurs à 1 sigma, sinon la fonction renvoie vert. Cette fonction renvoie rouge si huit points consécutifs sont du même côté de la ligne centrale, autrement, la fonction renvoie vert. Cette fonction renvoie rouge si une quelconque des conditions suivantes est vraie : alarm1G3s, alarm2o3G2s, alarm4o5G1s or alarm8cl www.spirula.fr 7
  • 9. Les fonctions suivantes permettent la comparaison d’une série « objectif » avec une série « réelle » avec la prise en charge d’une tolérance autour de l’objectif (commandes ajoutées en version 3.8.0): Fonction Exemples et remarques ryg1s(valeur(0) ou %(1), Compare la série “réelle” et “estimée” et renvoie : série_réelle, vert si : réelle < estimée + inner série_estimée, Jaune si : estimée + inner < réelle < estimée + outer inner, Rouge si : réelle > estimée + outer outer) Inner et outer étant exprimés en valeur (0) ou en pourcentage (1) de la série « estimée» en fonction du premier paramètre. Exemple : ryg1s(0, "Donnée","Objectif",10,20) ryg2s(valeur(0) ou %(1), série_réelle, série_estimée, inner, outer) Compare la série “ réelle ” et “ estimée ” et renvoie : vert si : estimée – inner < réelle < estimée + inner Jaune si : estimée - outer < réelle < estimée + outer Rouge : sinon Inner et outer étant exprimés en valeur (0) ou en pourcentage (1) de la série « estimée» en fonction du premier paramètre. Exemple : ryg2s(0, "Donnée","Objectif",10,20) Voici en exemple en image Pour simplifier la lecture du graphe, nous avons également ajouté sur ce graphe, une région verte qui entoure l’objectif +10% et jaune pour l’objectif+20%. Voici les séries utilisées dans cet exemple : line(20,60) Objectif (données) Données (Données) Manuelles: 20,34,32,28,30,32,35,35,45,55,60,70 ryg1s avec 10 et 20% (alarme) ryg1s(0, "Donnée","Objectif",10,20) ryg1s avec valeur 5 et 10 (alarme) ryg1s(1, "Donnée","Objectif",5,10) ryg2s avec 10 et 20% (alarme) ryg2s(0, "Donnée","Objectif",10,20) Vert (région) series("Objectif")*1.1 series("Objectif")*0.9 Jaune (région) series("Objectif")*1.2 series("Objectif")*0.8 www.spirula.fr 8
  • 10. 4.4.2 Fonctions spécifiques aux prévisions (Forecast) Voici un ensemble d’équations spécifiques à la valorisation des séries de données de nature « Prévision » (forecast). Fonction extrapolate (série) Exemples et remarques Extrapolation en construisant la droite passant par le premier et dernier point valorisée de la série spécifiée (tangente <premier point>/<dernier point >). Exemple : extrapolate("réel") last (Série) ma (série,n) mxb (série,n) Capture la dernière valeur de la série spécifiée et l’étend dans le futur. Exemple : last("réel") Calcule la moyenne mobile sur les n dernières périodes de la série spécifiée. Exemple : ma("réel",3) Extrapolation en construisant la droite passant par le dernier et le n ème point valorisée de la série spécifiée (tangente <dernier point>/<dernière point –n +1>). Exemple : mxb("réel",5) overplan Si pour la dernière période valorisée de série_estimée, (série_réelle, série_réelle > série_estimée, renvoie la valeur de série_estimée rehaussé de la série_estimée) différence entre séries_réelle et série_estimée sinon renvoie série_estimée Exemple : overplan("réel","Objectif") underplan (série_réelle, Si pour la dernière période valorisée de série_estimée série_réelle < série_estimée, renvoie la valeur de série_estimée rabaissé de la www.spirula.fr 9
  • 11. série_estimée) différence entre séries_réelle et série_estimée sinon renvoie série_estimée Exemple : underplan("réel","Objectif") Voici en exemple en image, avec les séries utilisées dans cet exemple : extrapolate("réel") Prévision (extrapolate) Prévision (last) last("réel") Prévision (ma) ma("réel",3) Prévision (mxb) mxb("réel",5) Prévision (overplan) overplan("réel","Objectif") Prévision (underplan) underplan("réel","Objectif") Remarque: Certaines autres équations peuvent également être utilisées sur les séries de nature « Prévision » (forecast), par exemple, seriesmin, seriesmax,… www.spirula.fr 10
  • 12. 4.4.3 Fonctions générales (General) Fonction Exemples et remarques attr Renvoie la valeur de l’attribut (de type entier ou réel) valorisé sur la (nom_attribut) série courante, le graphe courant ou l’unité courante (dans cet ordre de priorité). Exemple : Attr("Valeue Cible") choose (Série, Couleur1, Limite1, Couleur2 [,Limite2, Couleur3 [,Limite3, Couleur4 [,Limite4, Couleur5]]]) Pour chaque période, renvoie Couleur1 si la « Série » est entre 0 et Limite1 (incluse), Couleur2 entre Limite1 et Limite2 (incluse) Couleur3 entre Limite2 et Limite3 (incluse) Couleur4 entre Limite3 et Limite4 (incluse) Couleur 5 au delà de Limite4 (incluse) Cette fonction peut avoir de 1 à 4 limites data (nombre) Renvoie le nombre pour toutes les périodes. Identique à la saisie du nombre directement ! Exemple : data(10.25) renvoie 10,25 Pour chaque période, renvoie val1 avant date1, val2 entre date1 et date2 val3 entre date2 et date3 val4 entre date3 et date4 val5 après date 4 Cette fonction peut avoir de 1 à 4 dates. Le format des dates est le format défini par votre culture ou la forme universelle (ISO) que nous vous conseillons AAAA/MM/JJ data (val1,date1,val2 [,date2,val3 [,date3,val4 [,date4,val5]]]) Exemples : choose("Réel",GREEN,75,RED) choose("Réel",BLUE,30,GREEN,50,YELLOW,75,RED) Exemples : data(80,"2010/3/1",50,"2010/5/1",20) datapoints (liste de valeur) Pour chaque période renvoie une valeur de la liste dans l’ordre de celle-ci. Les valeurs décimales sont autorisées et doivent utiliser le séparateur lié à votre culture et non le point ! Les facteurs « k » et « m » peuvent être utilisés respectivement pour Kilo et million Exemple : datapoints("900;1,2k;1,4k;1,65k;1,0m") Renvoie 900, 1200, 1400, 1650, 1000000 if (expression, si_vrai, si_faux) ifin (valeur, min, max, Pour chaque période, si l’expression est vraie (ou différente de 0), renvoie l’argument 2, sinon renvoie l’argument 3. Exemple : if((series("Réelle")>0.95),RED,GREEN) Pour chaque période, si la valeur est comprise entre min et max, renvoie l’argument 4, sinon renvoie l’argument 5. Exemple : ifin(series("Réelle"),0,100,RED,GREEN) www.spirula.fr 11
  • 13. si_vrai, si_faux) ifout (valeur, min, max, si_vrai, si_faux) interp (regle, Periode1,Valeur1 ,Periode2,Valeur2 [,Periode3,Valeur3 [,Periode4,Valeur4]]) Pour chaque période, si la valeur est en dehors de l’intervalle *min…max+, renvoie l’argument 4, sinon renvoie l’argument 5. Exemple : ifout(series("Réelle"),0,100,RED,GREEN) Permet à partir de 2 à 4 couples (période, valeur) d’interpoler chaque période en reliant chaque point spécifié par une ligne droite et en fonction de la règle donnée en premier paramètre : 0 : garde la 1ère et dernière valeur 1 : garde la 1ère valeur et interpole la dernière 2 : interpole la 1ère valeur et garde la dernière 3 : interpole la 1ère et la dernière valeur Exemple : interp(0, 3, 12, 10, 33). Cf exemple en image region (série) Renvoie la couleur de la région traversée par la série. Exemple : region("Réelle") Voici un exemple en image de quelque fonctions, avec les séries utilisées dans cet exemple : data(20,"2010/03/01",50,"2010/05/01",80) Cible datapoints("10;15;20;25;30;35;40;45;50") Réel choose("Réel",GREEN,75,RED) Alarme (choose 1 limite) choose("Réel",BLUE,30,GREEN,50,YELLOW,75,RED) Alarme (choose 3 limites) if([series("Réel")<series("Cible")],RED,GREEN) if www.spirula.fr 12
  • 14. Voici un exemple en image de la fonction interp, avec les séries utilisées dans cet exemple : interp(0, 2,12, 8,33) interp 0 avec 2 périodes interp(3, 2,12, 8,33) interp 3 avec 2 périodes interp(1, 2,22, 4,16, 6,50, 8,23 interp 1 avec 4 périodes 4.4.4 Fonctions logarithmiques (Log) Fonction Exemples et remarques log logarithme (base 10) du nombre spécifié (nombre) logn logarithme base n du nombre spécifié (nombre, base) ln logarithme népérien (ou naturel) du nombre spécifié (nombre) 4.4.5 Fonctions mathématiques (Math) Fonction Exemples et remarques abs Valeur absolue du nombre spécifié Exemple : abs(series("réelle")) (nombre) exp Exponentiel du nombre spécifié Exemple : exp(series("réelle")) (nombre) int Partie entière. www.spirula.fr 13
  • 15. (nombre) fix (nombre) La seule différence entre les 2 fonctions concerne le traitement des nombres négatifs (cf exemple). line (y1,y2) Trace une ligne droite de (PP,y1) à (DP,y2). Ou PP= première période du calendrier du graphe, DP = dernière période du calendrier du graphe. (nous parlons bien ici des périodes du calendrier du graphe et non des périodes visualisées, qui peuvent être différentes) Exemple : int(3.6) et fix(3.6) retourne 3 int(-3.6) retourne -4 et fix(3.6) retourne -3 Exemple : line(0,250) trace une ligne de 0 à 150 min (valeur1, valeur2) max (valeur1, valeur2) neg (nombre) normale (réel) renvoie le minimum ou maximum des 2 valeurs données en arguments. Exemple : min(100,10) renvoie 10 Valeur négative du nombre Exemple : neg(5) retourne -5 Répartition selon loi normale. La répartition est faite sur l’ensemble des périodes du graphe, le pic est centré sur le milieu du graphe et son maximum donné en paramètre. Exemple : normale(100) pow (x,y) rayleigh ou rayleighcdf (forme) Retourne x à la puissance y Exemple : pow(series("réelle"),10) Répartition selon la fonction de répartition de la loi de Rayleigh. La répartition est faite sur l’ensemble des périodes du graphe. Exemple : Rayleighcdf (2.15) sqrt (nombre) weibullcdf (forme, echelle) Retourne la racine carrée du nombre spécifié exemple : sqrt(series("réelle")) Répartition selon la fonction de répartition (Cumulative Distribution function) de la loi de weibull. La répartition est faite sur l’ensemble des périodes du graphe. Exemple : weibullcdf(1.5,75) weibullpdf (forme, echelle) Répartition selon la densité de probabilité (Probability Debsity Function) de la loi de Weibull La répartition est faite sur l’ensemble des périodes du graphe. Exemple : weibullpdf(2.15, 100) www.spirula.fr 14
  • 16. Exemple en image de l’utilisation de la loi de Weibull : 4.4.6 Fonctions liées aux séries de données (Series data) Fonction Exemples et remarques first L’ensemble des périodes est valorisé avec la première valeur de (Série) la série spécifiée. Exemple : first("Réelle") graphsum (Graphe) Pour chaque période, somme de toutes les séries de nature « Réelle » du graphe spécifié. Exemple : graphsum(""), renvoie la somme de toutes les séries Réelle du graphe courant (c-ad du graph auquel appartient la série édité). graphsum("MonGraph »") renvoie la somme de toutes les séries Réelle du graphe « MonGraphe » last (Série) L’ensemble des périodes est valorisé avec la dernière valeur définie (c-a-d non « missing ») de la série spécifiée. Exemple : last("Réelle") lastx (Série, n) Pour chaque période, somme des n périodes précédentes de la série spécifiée. (Une valeur « missing » compte pour 0 dans la somme). Exemple : lastx("Réelle", 2) www.spirula.fr 15
  • 17. lastxave (Série, n) Pour chaque période, la moyenne des n périodes précédentes de la série spécifiée. La moyenne ne prend en compte que les points « nonmissing » parmi les n. Exemple : lastxave("Réelle", 3) lastxcount (Série, n) missing (Série) Pour chaque période, nombre de point non « missing » dans les n périodes précédentes de la série spécifiée. Exemple : lastxcount("Réelle", 5) Pour chaque période, renvoie 1 si la valeur de la série spécifiée est « IsMissing », 0 sinon. Exemple : missing("Réelle") period(0) Pour chaque période, le numéro séquentiel de la période démarrant à 0. L’argument est toujours 0. Exemple : period(0) points (Série) Pour chaque période, le nombre de points de données (hors « missing ») de la série spécifiée à la période courante. Exemple : points("Réelle") pointsA (Série) Nombre total de points de données de la série spécifiée (hors « missing ») Exemple : pointsa("Réelle") series (Série) series (Série, VAL) Pour chaque période, valeur de la série spécifiée. Exemple : series("Réelle") Pour chaque période, retourne la valeur de la série spécifiée ou « Val » si cette valeur est IsMissing Exemple : series("Réelle",0) qui renvera 0 lorsque Réelle est « IsMissing », à la difference de series("Réelle") qui renvoie IsMissing lorsque « Réelle » est « IsMissing » seriesp (Série,period) Pour chaque période, la valeur de la série spécifiée à une période donnée Exemple : seriesp("Réelle", (Period(0)-1)) seriesp (Série,period,VAL) Pour chaque période, la valeur de la série spécifiée à une période donnée ou « Val » si cette valeur est IsMissing Exemple : seriesp("Réelle", (Period(0)-1),0) sum (Série) Pour chaque période, le cumul (somme jusqu’à la période courante) de la série spécifiée Exemple : sum("Réelle") suma (Série) Somme sur toutes les périodes de la série spécifiée (hors missing) Exemple : suma("Réelle") sumtomissing (Série) Cumul (comme sum) mais uniquement pour les périodes valorisées (hors IsMissing) et jusqu’au premier IsMissing. Exemple : sumtomissing("Réelle") www.spirula.fr 16
  • 18. todate (Série) Pour toutes les périodes, la somme des données de la série spécifiée pour les périodes incluses de celle-ci. Ceci n’a d’intérêt que lorsque l’on fait référence à une série d’un graphe utilisant un calendrier d’une fréquence inférieure. Par exemple pour utiliser des données mensuelles dans un graphe trimestriel. Exemple : todate("GrapheRéelle") todate (Série,DateSpec) (ajoutée en version 3.8.0) Pour toutes les périodes, la somme des données de la série spécifiée pour les périodes incluses de celle-ci. Ceci n’a d’intérêt que lorsque l’on fait référence à une série d’un graphe utilisant un calendrier d’une fréquence inférieure et non strictement superposable. Par exemple pour utiliser des données semestrielles dans un graphe mensuel. 1 utilisation de la date de début 2 utilisation de la date de fin Exemple : todate("GrapheRéelle",1) (ajoutée en version 3.8.0) www.spirula.fr 17
  • 19. Exemple en image de l’utilisation de quelques fonctions : last("donnée") retourne une droite d’ordonnée 10 qui est la dernière valeur de données lastx("donnée",3) effectue une somme (mobile) des 3 périodes précédentes de données lastxave("donnée",5) effectue la moyenne mobile des 5 périodes précédentes de données seriesp("donnée",(Period(0)-1)) renvoie la série donnée décalée d’une période seriesp("donnée",(Period(0)-1),0) renvoie la série donnée décalée d’une période et en remplaçant les missing par 0. sum("donnée") renvoie la somme de proche en proche (période par période) sums("donnée") renvoie le cumul de toutes les périodes www.spirula.fr 18
  • 20. 4.4.7 Fonctions liées aux séries min-max (Series min-max) Fonction Exemples et remarques seriesmin Pour chaque période, valeur minimale de la série spécifiée (Série) jusqu’à la période courante Exemple : seriesmin("Réelle") seriesmax (Série) Pour chaque période, valeur maximale de la série spécifiée jusqu’à la période courante Exemple : seriesmax("Réelle") seriesave (Série) Pour chaque période, moyenne de la série spécifiée jusqu’à la période courante (hors missing) Exemple : seriesave("Réelle") seriesmina (Série) seriesmaxa (Série) seriesavea (Série) Valeur minimale sur toute la série spécifiée Exemple : seriesmina("Réelle") Valeur maximale sur toute la série spécifiée Exemple : seriesmaxa("Réelle") Moyenne sur toutes les valeurs de la série spécifiée (hors missing) Exemple : seriesavea("Réelle") Remarques : toutes ces fonctions acceptent un second paramètre, permettant de définir la valeur à renvoyer à la place de « IsMissing ». Par exemple Exemple : seriesmin("Réelle",0), renvoie pour chaque période, la valeur minimale de la série spécifiée jusqu’à la période courante et 0 si le minimum est IsMissing. 4.4.8 Fonctions Statistiques (Spc) Fonction Exemples et remarques mean(Série) Moyenne sur toutes les valeurs de la série spécifiée (hors missing) (identique à la fonction seriesavea) Exemple : mean("Réelle") range(Série) Écart absolu maximum de toutes les valeurs de la série spécifiée (identique à SeriesMaxA – SeriesMinA). Exemple : range("Réelle") sigma(Série) Ecart type de toutes les valeurs de la série spécifiée Exemple : sigma("Réelle") variance(Série) Variance de toutes les valeurs de la série spécifiée (=carré de l’écart type) Exemple : variance("Réelle") La rubrique SPC contient également les équations applicables à la maîtrise statistique des procédés (en Anglais : Statictical Process Control). Cette technique fera l’objet d’un autre document. www.spirula.fr 19
  • 21. 4.4.9 Fonctions trigonométriques (Trig) Fonction Exemples et remarques cos(angle) Cosinus de l’angle spécifié sin(angle) Sinus de l’angle spécifié tan(angle) Tangente de l’angle spécifié cosh(réel) Cosinus hyperbolique du réel spécifié sinh(réel) Sinus hyperbolique du réel spécifié tanh(réel) Tangente hyperbolique du réel spécifié acos(réel) Arc cosinus du réel spécifié asin(réel) Arc sinus du réel spécifié atan(réel) Arc tangente du réel spécifié Remarque : les fonctions Arc Cosinus, sinus et tangente ne sont pas dans le wizard, mais peuvent être utilisées. 5 Traitement des références entre graphes avec calendrier différent Dans le chapitre précédent, nous avons vu qu’il était possible de référencer dans un graphe une série venant d’un autre graphe. Mais, qu’advient-il lorsque les calendriers des 2 graphes ne sont pas identiques ? Il convient de différencier 3, et même 4 cas : 1. Utiliser une série provenant d’un graphe qui a une fréquence plus élevée. Par exemple, un graphe mensuel contenant des séries que je souhaite utiliser dans un graphe hebdomadaire. 2. Utiliser une série provenant d’un graphe qui a une fréquence identique mais décalée. Par exemple, 2 graphes utilisant 2 calendriers mensuels différents l’un avec des périodes débutant au 1er de chaque mois, l’autre avec des périodes débutant au 15 de chaque mois. 3. Utiliser une série provenant d’un graphe qui a une fréquence moins élevée. Ici, il convient de considérer 2 sous-cas : a. Les fréquences synchronisées. Par exemple, un graphe mensuel contenant des séries à utiliser dans un graphe trimestriel. b. Les fréquences ne sont pas synchronisées. Par exemple un graphe hebdomadaire contenant des séries à utiliser dans un graphe mensuel. www.spirula.fr 20
  • 22. Cas 1 : utilisation d’une série mensuel dans un graphe hebdo Voici le graphe mensuel avec en jaune la zone que nous allons visualiser sur le second graphe hebdomadaire. Nous voyons ici que DataDrill effectue une interpolation automatiquement. En fait, le mécanisme implémenté par DataDrill est le suivant : DataDrill évalue chaque équation pour chaque période du graphe. Il vérifie si la série référencée a une valeur pour la date exacte considérée. Si oui, il prend la valeur sans transformation. Sinon, et à condition d’avoir une valeur pour les dates avant et après, alors une interpolation est effectuée. www.spirula.fr 21
  • 23. Cas 2 : utilisation d’une série mensuel d’un graphe mensuel décalé Dans cet exemple, nous avons un graphe utilisant un calendrier mensuel, basé sur le 15 de chaque mois, et qui référence une série d’un second graphe qui, lui, utilise un calendrier mensuel plus traditionnel puisque basé sur le 1er de chaque mois. Nous nous retrouvons dans un cas semblable à l’exemple précédent, et DataDrill effectuera une interpolation : Jan 15 Jan 1 Graphe courant (cercle orange) Fev 15 Mar 15 Avr 15 Mai 15 Jun 15 Fev 1 Mar 1 Avr 1 Mai 1 Jun 1 Graphe référencé par la série (triangle bleu) Cas 3a : Exemple de l’adaptation de l’échelle temps et de l’utilisation de la fonction Todate : Voici un graphe que nous allons utiliser comme référence. Il contient une série de données nommée « data » (ligne bleu) et son cumul nommé « sum » (barre rouge), le tout sur un calendrier mensuel : www.spirula.fr 22
  • 24. Considérons maintenant un second graphe où nous utiliserons un calendrier trimestriel. data (graphe 1) (ligne bleu est l’équation series("[2296] testdata")). Nous observons que la valeur pour chaque fin de période est bien égale à la fin de période correspondante sur le graphe 1. Par exemple 6 pour les 20/06/2010 sur les 2 graphes. todate data graphe 1 (ligne pointillé bleu est l’équation todate("[2296] testdata")). L’équation additionne les valeurs de la série data pour toutes les périodes du graphe 1 incluse dans le période du graphe 2. Par exemple, pour obtenir la valeur 15 du second trimestre (au 20/06/2010), todate a calculé 4+5+6 ce qui correspond aux périodes d’avril, mai et juin. sum (graphe 1) (barre rouge est l’équation series("[2296] testsum")). Correspond au report du cumul du graphe 1. sum (de todate data graphe 1) (barre orange est l’équation sum("todate data graphe 1")). Correspond au cumul de la seconde série du graphe 2 (nommé « todate data graphe 1 »). Remarquons que les 2 barres sont identiques. « A quoi cela sert-il ? » pouvez-vous vous demander ! Et bien, imaginons que les données du graphe 1 soient un nombre de défauts par exemple. Dans ce cas, si dans un second graphe de fréquence inférieure on souhaite réutiliser la même information, il convient de l’adapter à la bonne fréquence. Ainsi, le nombre de défauts d’un trimestre est bien la somme des défauts des 3 mois du trimestre. www.spirula.fr 23
  • 25. Cas 3b : Autre Exemple avec des calendriers semestriels et mensuels: Voici le graphe de référence, comme dans l’exemple précédent, mais avec un calendrier hebdomadaire. Nous avons réduit l’affichage à 6 mois pour garder une certaine visibilité. Et voici le second graphe, utilisant cette fois, un calendrier mensuel : www.spirula.fr 24
  • 26. Dans le premier exemple, les mois étaient inclus entièrement dans les trimestres. L’inclusion du calendrier « mois » dans le calendrier « trimestre » était donc simple. Ici, nous avons un nouveau problème car il n’est pas possible d’inclure des semaines entières dans des mois. Nous devrons donc utiliser une règle nous permettant de savoir quels mois sont à considérer comme faisant partie du mois ou pas. La fonction todate possède un second argument facultatif permettant de gérer cela. Ce second argument peut prendre la valeur 1 ou 2. 1 pour considérer la date de début et 2 pour considérer la date de fin. Appliqué à notre exemple, cela signifie 1 pour considérer toutes les semaines commençant dans le mois comme en faisant partie, 2 pour considérer toutes les semaines finissant dans le mois comme en faisant partie. 6 Traitement des données manquantes (missing) DataDrill autorise qu’une donnée soit « manquante » (pour une ou plusieurs périodes d'une série). C’est d’ailleurs la valeur par défaut : avant que les périodes d’une série soit valorisées, les valeurs sont considérées comme manquantes (appelées « missing » ou « IsMissing » dans datadrill). Il est important de comprendre le comportement des équations DataDrill face aux données manquantes, qui par nature sont différentes de toutes autres valeurs. Précisons aussi que nous ne parlons pas là de la valeur 0, qui est une valeur comme une autre, mais bien de l’absence de toute valeur. C’est assimilable au « NULL » des bases de données. Sur l’exemple ci-contre, les séries de données rouges et noires sont valorisées sur toutes les périodes, mais la bleu et la rouge ne le sont que jusqu’au 22/08/2010. Au-delà, la valeur est « IsMissing » et donc non dessiné sur le graphe. Idem pour l’alarme qui est valorisée jusqu'à la même date, puis manquante. Puisque les périodes « missing » n’ont pas de valeur, le comportement des opérations arithmétiques, mais aussi logiques, sera différent. En effet, comment comparer une valeur numérique à une valeur manquante ? Ou comment additionner un nombre et une valeur manquants ? Donc dans tous ces cas, le résultat sera lui-même manquant et cela pour tous les types de séries (Alarme, données, région, texte). www.spirula.fr 25
  • 27. Une question revient parfois : comment distinguer une alarme Missing d’une alarme blanche ? La réponse en image si- dessous : alarme verte, puis manquante alarme verte, puis blanche Les combinaisons (équation) incluant une donnée manquante sont elles-mêmes considérées comme manquantes : valeur <operateur> MISSING renvoie IsMissing MISSING <operateur> valeur renvoie IsMissing Cela quelque soit l’opérateur arithmétique (+-,*/%^) ou logique (=<>&|). Enfin, revenons sur le traitement des valeurs missing : Comment pourrions-nous écrire une équation conditionnelle au fait qu’une série ACWP soit valorisée ou non ? Une équation du type if((series("ACWP")=IsMissing),0, series("ACWP")) ne fonctionnera pas, puisque nous avons appris ci-dessus que toute combinaison avec une valeur missing renvoie missing, donc le résultat de cette équation sera toujours missing. Par contre nous pouvons utiliser la fonction missing(série) : if((Missing("ACWP")=1),0, series("ACWP")) qui renvoie 0 si ACWP est missing, la valeur de la série ACWP sinon. Il y a même une écriture encore plus simple : series("ACWP",0). En effet la fonction series() accepte un second paramètre optionnel, permettant de préciser la valeur à utiliser en cas de missing. www.spirula.fr 26
  • 28. 7 Spirula en bref Depuis près de 10 ans, Spirula propose des solutions pour mieux estimer et piloter les projets de développement de logiciels et systèmes. Leader sur son marché, l’offre Spirula – expertise, outils, formation – permet de mieux Comprendre le passé, Piloter le présent et Prévoir l’avenir des projets d’ingénierie logicielle et systèmes. Nous aidons nos clients à définir les processus de développement les plus efficaces, implémenter des tableaux de bords pour le suivi des projets et augmenter la fiabilité des estimations des coûts, effort et délais des projets. Nos consultants sont experts dans le pilotage de projet et les estimations et conduisent l’implémentation des bonnes pratiques, comme le CMMI, dont Spirula est un des co-auteurs. Parmi nos clients, nous comptons des PME/PMI ayant une forte activité de développement de logiciels et de systèmes ainsi que des grands comptes internationaux tel qu’Alstom, BAe, Continental, Philips, Renault, Thales, … www.spirula.fr 27