Présentation de la fonction string_agg

Nous partons d'un cBase contenant des données de ventes. Nous souhaitons afficher dans la fenêtre de plongée le nombre de zones et la liste des zones pour une Dimension considérée.

Autrement dit, nous avons la plongée suivante :

et nous souhaitons connaitre pour chaque produit le nombre de zones dans lesquelles le produit a été vendu mais également la liste des zones.

Les zones disponibles dans le cBase sont les suivantes :

Nous allons nous appuyer sur un cPlan pour arriver au résultat escompté.

Voici le contenu du cPlan s’appuyant sur le cBase ventes.cbase précédemment ouvert :

cplan {
  cbase-input "ventes.cbase"
  calc "Nb zones" `dimcount(value("Zone"))`
  calc "Liste des zones" `string_agg(value("Zone"))`
}

L'ouverture dans ProDiver du cPlan et une plongée sur la Dimension Produit nous donne ceci :

A ce stade, les nouvelles colonnes déclarées dans le cPlan ne sont pas encore visibles.

Pour les afficher, faire un clic-droit sur la vue tabulaire. Dans le menu contextuel qui apparait, sélectionner l'option Sélectionner colonnes...

La boite de dialogue Sélection de colonnes apparait :

Faire passer les colonnes Nb zones et Liste des zones de la zone Disponibles à la zone Sélectionnées puis cliquer sur OK.

Les colonnes Nb zones et Liste des zones sont désormais affichées :

La fonction string_agg possède deux argument supplémentaires facultatifs. Le premier argument permet de définir le séparateur de valeurs et le dernier argument permet de spécifier le dernier délimiteur.

Aussi, l'utilisation de ce cPlan :

cplan {
  cbase-input "ventes.cbase"
  calc "Nb zones" `dimcount(value("Zone"))`
  calc "Liste des zones" `string_agg(value("Zone")," - ", " et ")`
}

Donne le résultat suivant :