Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Interface

Grouper et agréger dans la vue Rapport

Grouper les résultats d'un rapport par plusieurs champs et afficher plusieurs colonnes d'agrégation (décompte, somme, moyenne, minimum, maximum).

La vue Rapport permet de grouper les résultats par un ou plusieurs champs et d'afficher plusieurs colonnes d'agrégation. Vous pouvez ainsi analyser vos données selon plusieurs critères simultanément, par exemple le nombre de documents par statut et par priorité.

Grouper et agréger les données

Pour configurer le regroupement dans la vue Rapport d'une liste :

  1. Ouvrez la vue Rapport du type de document.
  2. Cliquez sur Regrouper par… dans la barre des filtres.
  3. Dans la section Grouper, choisissez le premier champ de regroupement.
  4. Pour grouper par un autre champ, cliquez sur Ajouter un regroupement, puis choisissez le champ.
  5. Dans la section Agréger, choisissez la fonction d'agrégation. Pour une fonction autre que Décompte, choisissez aussi le champ.
  6. Pour ajouter une colonne d'agrégation, cliquez sur Ajouter un agrégat.

Chaque changement complet s'applique tout de suite à la vue. Le bouton Appliquer ferme seulement la fenêtre. La croix à droite d'une ligne supprime ce regroupement ou cette agrégation.

Quand un regroupement est actif, le bouton affiche « Groupé par … ». La croix à côté du bouton, ou Supprimer le regroupement dans la fenêtre, supprime tout le regroupement.

Les libellés Ajouter un regroupement, Agréger, Ajouter un agrégat et Supprimer le regroupement ne sont pas encore traduits.

Fonctions d'agrégation

FonctionDescriptionChamps acceptés
Décompte (Count)Compte le nombre de documents dans chaque groupe.Aucun champ requis.
Somme (Sum)Additionne les valeurs du champ sélectionné.Champs numériques (Entier, Décimal, Devise).
Moyenne (Average)Calcule la moyenne des valeurs du champ sélectionné.Champs numériques (Entier, Décimal, Devise).
Minimum (Min)Affiche la plus petite valeur du champ sélectionné dans chaque groupe.Champs numériques, Date, Date et heure, Heure, ainsi que les champs standards Créé le et Dernière modification.
Maximum (Max)Affiche la plus grande valeur du champ sélectionné dans chaque groupe.Champs numériques, Date, Date et heure, Heure, ainsi que les champs standards Créé le et Dernière modification.

Par exemple, l'agrégation Maximum appliquée au champ Créé le affiche le document le plus récent de chaque groupe.

Comportement des résultats

  • Tri : Les résultats sont triés par la première colonne d'agrégation, par ordre décroissant.
  • Ligne de total : Si l'option Ajouter une Ligne Totale est activée dans les paramètres du rapport, la ligne de total affiche la somme des valeurs pour les agrégations Somme et Moyenne. Pour les agrégations Minimum et Maximum, le total affiche le minimum ou le maximum de l'ensemble des groupes (et non la somme des groupes).
  • Nommage des colonnes : La première colonne d'agrégation est nommée _aggregate_column, les suivantes _aggregate_column_1, _aggregate_column_2, etc.

Configuration avancée (rapports enregistrés)

Pour les rapports créés avec le Report Builder ou les rapports enregistrés, la configuration du regroupement se fait dans le champ JSON du rapport.

Format actuel

{
    "group_by": ["`tabToDo`.`status`", "`tabToDo`.`priority`"],
    "aggregates": [
        {"aggregate_function": "count"},
        {"aggregate_function": "sum", "aggregate_on": "`tabToDo`.`estimated_cost`"}
    ]
}
  • group_by : liste des champs de regroupement au format `tabDoctype`.`champ`.
  • aggregates : liste des agrégations. Chaque agrégation contient :
    • aggregate_function : count, sum, avg, min ou max.
    • aggregate_on : champ concerné (obligatoire sauf pour count), au format `tabDoctype`.`champ`.

Format à un seul regroupement

Le format à un seul champ de regroupement et une seule agrégation reste accepté :

{
    "group_by": "`tabToDo`.`status`",
    "aggregate_function": "sum",
    "aggregate_on": "`tabToDo`.`estimated_cost`"
}

Ce format est automatiquement converti au nouveau format lors de l'enregistrement ou de l'exécution du rapport.

Règles de validation

Lors de l'enregistrement d'un rapport ou de l'exécution d'une requête groupée, les règles suivantes s'appliquent :

  • Tous les champs de regroupement et d'agrégation doivent exister dans le doctype concerné.
  • Les champs provenant d'un tableau enfant (child table) ne peuvent pas être mélangés avec des champs d'un autre tableau enfant, car une jointure sur deux tableaux enfants produirait des totaux incorrects.
  • Si un champ d'agrégation provient d'un tableau enfant, au moins un champ de regroupement doit provenir du même tableau enfant.

Paramètre d'URL

Le regroupement peut également être transmis via l'URL avec le paramètre _group_by :

  • Format actuel : _group_by={"group_by":["tabToDo.status"],"aggregates":[{"aggregate_function":"count"}]}
  • Format à un seul regroupement : _group_by=["tabToDo.status","tabToDo.estimated_cost","sum"]