Version 4.1 par mrochelle le 2020/09/24 12:48

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