Code source wiki de Fonctions Mesure calculée avancés
Version 4.1 par mrochelle le 2020/09/24 12:48
Afficher les derniers auteurs
author | version | line-number | content |
---|---|---|---|
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}} |