Version 4.2 par mrochelle le 2020/09/24 12:51

Afficher les derniers auteurs
1 {{toc/}}
2
3 ----
4
5 Il est possible de réaliser des mesures calculées avancées en utilisant des fonctions javascripts.
6 Nous pouvons exécuter des tests "if" par exemple, ou des boucles "for".
7 Mais il y a aussi des fonction digdash permettant d'explorer des dimnensions.
8
9 = Vérifier le contenu de la mesure calculée avec les logs =
10
11 Il est possible d'afficher une ligne dans les logs digdash grâce à la fonction :
12 Packages.com.digdash.utils.MessageStack.getInstance().addText("Je suis dans les logs !!! ");
13
14 Exemple :
15
16 [[image:1600944409879-673.png]]
17
18
19 Rendu dans les logs lors de l'affichage de cette mesure dans un graphique :
20
21 [[image:1600944499398-123.png]]
22
23 Cela peut vous permettre les différentes étapes de calcul de votre mesure calculée.
24
25 = Connaitre les dimensions filtrées =
26
27 * Exemple:
28
29 {{code language="js"}}
30 for (var i = 0; i < this.selection.dimsToFilter.length; i++)
31 {
32 var dimId = this.selection.dimsToFilter[i].dim.id;
33 Packages.com.digdash.utils.MessageStack.getInstance().addText("Nom dimension: " + dimId);
34 }
35 {{/code}}
36
37 * Résultat:
38 Nom dimension: Date
39 Nom dimension: Produit
40 Nom dimension: Régions
41
42 * Usage:
43
44 Peut être utile lorsqu’on veut renvoyer une valeur différente si une ou plusieurs dimensions sont filtrées. Nous pourrions ainsi tester la valeur de dimId est renvoyé une mesure différente en fonction.
45
46 = Connaitre les dimensions explorées =
47
48 * Exemple:
49
50 {{code language="js"}}
51 for (var i = 0; i < this.selection.dimsToExplore.length; i++)
52 {
53 var dimId = this.selection.dimsToExplore[i].dim.id;
54 Packages.com.digdash.utils.MessageStack.getInstance().addText("Nom dimension: " + dimId);
55 }
56 {{/code}}
57
58 * Résultat:
59
60 Nom dimension: Date
61 Nom dimension: Produit
62 Nom dimension: Régions
63
64 * Usage:
65
66 Peut être utile lorsqu’on veut renvoyer une valeur différente si une ou plusieurs dimensions sont explorées dans le graphique
67
68 = Le double passage =
69
70 * Exemple:
71
72 {{code language="js"}}
73 // needSecondPass : DO NOT REMOVE THIS LINE
74 if (phase == 0)
75 {
76 // do something
77 }
78 else
79 {
80 // do something
81 }
82 {{/code}}
83
84 * Résultat:
85
86 Oblige à passer à deux reprise dans la mesure calculée
87
88 * Usage:
89
90 Peut être utile pour enregistrer des valeurs la 1ère fois (dans un tableau par exemple) puis dans un second temps renvoyer des résultats suivant les valeurs dans ce tableau (voir fiche sur le [[rang>>https://doc.digdash.com/xwiki/wiki/howtos/view/howtos/Studio/Calculate_Rank/]])
91
92 = Objet Global =
93
94 * Exemple:
95
96 {{code language="js"}}
97 if (!_global.count)
98 {
99 _global.count = 0;
100 }
101 else
102 {
103 _global.count = _global.count + 1;
104 }
105 return _global.count;
106 {{/code}}
107
108 * Résultat:
109
110 1
111 2
112 3
113 … (suivant le nombre de valeur à représenter dans la visualisation)
114
115 * Usage:
116
117 Permet de sauver des valeurs dans des variables au cours de l'exécution d’une mesure calculée
118
119 = Cumul sur n’importe quel axe =
120
121 Exemple : Exploration de numéros de semaine (NUM_WEEK) et de dates (DAY_DT), nous souhaitons cumuler le CA sur chacune des semaines.
122 ! Attention ! La date doit être ordonnée de manière croissante dans la source
123
124 {{code language="js"}}
125 // needSecondPass : DO NOT REMOVE THIS LINE
126 var section = NUM_WEEK(dmember) + "";
127 var key = DAY_DT(dmember) + "";
128 var val = CA TTC [N](NO_AGG);
129 if (phase == 0)
130 {
131 function add(accumulator, a)
132 {
133 return accumulator + a;
134 }
135 if (!_global.vals)
136 {
137 _global.vals = {};
138 _global.run = {};
139 }
140 if (!_global.vals[section])
141 {
142 _global.vals[section] = {};
143 _global.run[section] = new Array();
144 _global.run[section].push(0);
145 }
146 if (!_global.vals[section][key])
147 {
148 _global.vals[section][key] = _global.run[section].reduce(add) + val;
149 _global.run[section].push(val);
150 }
151 Packages.com.digdash.utils.MessageStack.getInstance().addText("***PHASE0 _global.vals[" + section + "][" + key + "]: " + _global.vals[section][key] + " val: " + val);
152 }
153 else
154 {
155 Packages.com.digdash.utils.MessageStack.getInstance().addText("***PHASE1 _global.vals[" + section + "][" + key + "]: " + _global.vals[section][key]);
156 return _global.vals[section][key];
157 }
158 {{/code}}