Comparer dans un même rapport le total global et le total d’un top 3

Nous souhaiterions afficher dans DivePort un Measures Portlet similaire à celui-ci :

La problématique est que les champs somme sont sur plusieurs niveaux.

Une fois le top 3 des ventes calculé, nous ne pouvons plus calculer / afficher le total des ventes par la manière classique, car nous avons appliqué un filtre par exemple sur le top 3 des Familles.

Les différentes étapes vont être expliquées pour obtenir le type de résultat présenté ci-dessus.

Tout d'abord un premier cplan est créé avec le contenu suivant :

cplan {
  // Read a cBase or another cPlan like this:
  cbase-input "ventes.cbase"
  calc "Total CA ventes" `sum(value("CA ventes"))`
  calc "Classement Vendeur" `rank(calc("CA ventes"),"Vendeur")`
  calc "Top 3 Vendeur" `if(calc("Classement Vendeur")<=3,calc("Total CA ventes"),0)`
}

Ce cplan se base sur un cbase, et trois calculs sont créés.

Le premier reprend le contenu de la colonne CA ventes. Le second calcule le classement des vendeurs en fonction des ventes. Enfin le dernier calcul affiche le total du CA ventes uniquement pour le Top 3 vendeur.

Voici visuellement un exemple de résultat, une fois le cplan ouvert :

A partir de cette vue, nous allons effectuer une recherche sur la colonne Top 3 Vendeur afin d'éliminer les lignes où le CA est nul en utilisant les critères suivants :

Le résultat suivant est obtenu :

On clique maintenant sur la ligne Groupe et on plonge par la suite sur la Dimension Vendeur

Une fois le résultat obtenu, dans le menu Fichier > Enregistrer on clique sur Export Dive file...

Dans l'exemple ci-dessus, le fichier Dive a été nommé top3filtered.dive avec le contenu suivant, généré automatiquement :

dive {
  cplan "/cbases/ventes_top3_cbase.cplan" {
    calc "__l_Total CA ventes" `calc("Total CA ventes")` label="Total CA ventes"
    calc "__l_Top 3 Vendeur" `calc("Top 3 Vendeur")` label="Top 3 Vendeur"
  }
  window {
    dimension "Vendeur"
    dimension "Famille"
    column "__l_Top 3 Vendeur"
    filter `value("__l_Top 3 Vendeur") > 0`
    column "__l_Total CA ventes"
  }
  window {
    dimension "Vendeur"
    column "__l_Top 3 Vendeur"
    column "__l_Total CA ventes"
    aux-table "Totals"
  }
}

Afin de pouvoir confronter le CA global avec le CA filtré sur le top 3, un fichier dive doit être créé. Par le biais d'un multilevel, il est possible :

  • de récupérer le CA filtré sur le top 3 en intégrant le code du fichier top3filtered.dive précédemment généré
  • de récupérer le CA global en faisant référence au cplan créé au tout début.

Un nouveau fichier dive reprenant les éléments précités est créé avec le nom multilevel.dive et avec le contenu suivant :

dive {
  cplan {
    multilevel {
      dive-input {
dive {
  cplan "/cbases/ventes_top3_cbase.cplan" {
    calc "__l_Total CA ventes" `calc("Total CA ventes")` label="Total CA ventes"
    calc "__l_Top 3 Vendeur" `calc("Top 3 Vendeur")` label="Top 3 Vendeur"
  }
  window {
    dimension "Vendeur"
    dimension "Famille"
    column "__l_Top 3 Vendeur"
    filter `value("__l_Top 3 Vendeur") > 0`
    column "__l_Total CA ventes"
  }
  window {
    dimension "Vendeur"
    column "__l_Top 3 Vendeur"
    column "__l_Total CA ventes"
    aux-table "Totals"
  }
}
}
      dive-input {
        dive {
          cplan "ventes_top3_cbase.cplan"
          window {
            dimension "Vendeur"
            column "Grand Total" `calc("Total CA ventes")`
          }
        }
      }      
  }
}
   window {
    dimension "Vendeur"
    column "Grand Total"
    column "__l_Top 3 Vendeur"
    column "%" `(calc("__l_Top 3 Vendeur") / calc("Grand Total"))` format="0.00%"
  }
}
 

Pour une meilleure visibilité, les deux entrées dive-input sont de couleurs différentes et la partie bleue correspond à du copier-coller du contenu du fichier top3filtered.dive.

La dernière partie du script correspond aux colonnes que l'on souhaite afficher dans DivePort. Dans notre exemple, il s'agit de la Dimension Vendeur et des champs sommes / calculs : Grand Total, __l_Top 3 Vendeur et %.

Une fois le fichier multilevel.dive enregistré, dans une page de DivePort on intègre un Measure Portlet s'appuyant sur le fichier dive nouvellement créé et en ajoutant les colonnes précitées :

En résultat, on obtient ceci :

La part des 3 familles les plus vendues par vendeur et comparée au total de ventes du vendeur est bien affichée.