Version 6.1 par mrochelle le 2020/09/24 14:25

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