Fonctions Mesure calculée avancés

Version 1.4 par mrochelle le 2020/09/23 11:21

Connaitre les dimensions filtrées

  • Exemple:
for (var i = 0; i < this.selection.dimsToFilter.length; i++)
{
      var dimId = this.selection.dimsToFilter[i].dim.id;
      Packages.com.digdash.utils.MessageStack.getInstance().addText("Nom dimension: " + dimId);
}
  • Résultat:
    Nom dimension: Date
    Nom dimension: Produit
    Nom dimension: Régions
  • Usage:

Peut être utile lorsqu’on veut renvoyer une valeur différente si une ou plusieurs dimensions sont filtrées.

Connaitre les dimensions explorées

  • Exemple:
for (var i = 0; i < this.selection.dimsToExplore.length; i++)
{
      var dimId = this.selection.dimsToExplore[i].dim.id;
      Packages.com.digdash.utils.MessageStack.getInstance().addText("Nom dimension: " + dimId);
}
  • Résultat:

Nom dimension: Date
Nom dimension: Produit
Nom dimension: Régions

  • Usage:

Peut être utile lorsqu’on veut renvoyer une valeur différente si une ou plusieurs dimensions sont explorées dans le graphique

Le double passage

  • Exemple:
// needSecondPass : DO NOT REMOVE THIS LINE
if (phase == 0)
{
// do something
}
else
{
// do something
}
  • Résultat:

Oblige à passer à deux reprise dans la mesure calculée

  • Usage:

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)

Objet Global

  • Exemple:
if (!_global.count)
{
 _global.count = 0;
}
else
{
 _global.count = _global.count + 1;
}
return _global.count;
  • Résultat:

1
2
3
… (suivant le nombre de valeur à représenter dans la visualisation)

  • Usage:

Permet de sauver des valeurs dans des variables au cours de l'exécution d’une mesure calculée

Cumul sur n’importe quel axe

Exemple :  Exploration de numéros de semaine (NUM_WEEK) et de dates (DAY_DT), nous souhaitons cumuler le CA sur chacune des semaines.
! Attention ! La date doit être ordonnée de manière croissante dans la source

// needSecondPass : DO NOT REMOVE THIS LINE
var section = NUM_WEEK(dmember) + "";
var key = DAY_DT(dmember) + "";
var val = CA TTC [N](NO_AGG);
if (phase == 0)
{
function add(accumulator, a)
 {
     return accumulator + a;
 }
if (!_global.vals)
 {
  _global.vals = {};
  _global.run = {};
 }
if (!_global.vals[section])
 {
  _global.vals[section] = {};
  _global.run[section] = new Array();
  _global.run[section].push(0);
 }
if (!_global.vals[section][key])
 {
  _global.vals[section][key] = _global.run[section].reduce(add) + val;
  _global.run[section].push(val);
 }
Packages.com.digdash.utils.MessageStack.getInstance().addText("***PHASE0 _global.vals[" + section + "][" + key + "]: " + _global.vals[section][key] + " val: " + val);
}
else
{
Packages.com.digdash.utils.MessageStack.getInstance().addText("***PHASE1 _global.vals[" + section + "][" + key + "]: " + _global.vals[section][key]);
return _global.vals[section][key];
}