Version 5.1 par mrochelle le 2020/09/24 14:12

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