Process Mining
2021.10
False
Image de fond de la bannière
Process Mining
Dernière mise à jour 2 avr. 2024

Agréger des expressions

Introduction

Les expressions d'enregistrement ne prennent en entrée que la valeur de l'enregistrement lui-même. En comparaison, les expressions d'agrégation peuvent être utilisées pour effectuer des calculs sur un ensemble spécifique d'enregistrements. Par exemple, pour calculer le montant total de tous les enregistrements ou le nombre total d'enregistrements dans l'ensemble de données. Une expression d'agrégation peut être comparée à la fonction GROUP BY en SQL.

Agréger au niveau racine

Une expression d'agrégat calcule une valeur pour chaque valeur unique au niveau de l'agrégat. Par défaut, il s'agit du niveau Racine , c'est-à-dire une valeur pour l'ensemble de la table.



Vous trouverez ci-dessous un exemple d'expression d'agrégation permettant de calculer la somme de tous les montants de l'ensemble de données Factures.



L'expression d'agrégation sum(records.amount) est évaluée comme décrit ci-dessous :
  1. Prenez tous les enregistrements dans Factures.
  2. Pour chaque enregistrement, choisissez la valeur de l'attribut de source de données Amount .
  3. Renvoie la somme de tous ces montants.

L'expression calcule une valeur unique, mais cette valeur est ajoutée à chaque enregistrement de l'ensemble de données. Vous trouverez ci-dessous un exemple d’ensemble de données contenant 4 lignes.



Agréger au niveau du sous-niveau

Au lieu de calculer un agrégat sur l'ensemble de l'ensemble de données, vous pouvez également calculer une valeur sur des groupes d'enregistrements.



Vous trouverez ci-dessous un exemple d'expression agrégée permettant de calculer le montant total par fournisseur.



Un niveau d'agrégation est ajouté et la portée de l'expression est définie sur ce nouveau niveau. Vous trouverez ci-dessous un exemple de jeu de données.



L'expression d'agrégation est calculée une fois pour chaque valeur individuelle au sein du niveau d'étendue. Cette valeur est ajoutée à chaque enregistrement dans cette étendue. Le montant total est donc calculé une fois, puis copié 4 fois dans chaque enregistrement. Le montant total par fournisseur est calculé 3 fois. Étant donné qu’il existe 2 enregistrements avec « Supplier A », sa valeur est définie sur les deux enregistrements. Étant donné qu'il n'y a qu'un seul enregistrement pour « Fournisseur B » et « Fournisseur C », la valeur est affectée à l'enregistrement correspondant.

Définir un sous-niveau

Suivez ces étapes pour définir une expression d'agrégat au niveau inférieur.

Étape

Action

1

Cliquez avec le bouton droit sur Racine dans le panneau Paramètres de la boîte de dialogue Modifier l'attribut d'expression ( Edit Expression Attribute ).

2

Sélectionnez Ajouter un niveau.

3

Cliquez sur le niveau et sélectionnez l’attribut de source de données sur lequel vous souhaitez regrouper les valeurs. Dans ce cas Fournisseur.

4

Cliquez avec le bouton droit sur le niveau d'attribut sélectionné et sélectionnez Définir comme niveau d'expression.

Remarque : le niveau sélectionné est indiqué par une flèche.

Structure de l’arborescence

Dans une expression d'agrégation, il est également possible d'accéder à d'autres niveaux que le niveau d'agrégation sélectionné. Nous pouvons utiliser p (pour le parent) et c (pour l’enfant) pour parcourir l’arborescence de haut en bas.
Remarque : un nœud a un parent, donc p renvoie un seul nœud, mais peut avoir plusieurs enfants, donc c renvoie une liste de nœuds.

Niveau d'agrégation du parent



Vous trouverez ci-dessous un exemple d'expression d'agrégation basée sur un niveau parent.



L'expression percentage(sum(records.Amount) / sum(p.records.Amount) * 100) calcule un pourcentage pour chaque fournisseur :
  1. la somme des montants associés à un fournisseur est divisée par la somme de tous les montants.
  2. l'étendue est déplacée vers le niveau parent, c'est-à-dire la racine.
  3. le résultat est multiplié par 100 pour le convertir en pourcentage.

Niveau d'agrégation enfant



Vous trouverez ci-dessous un exemple d'expression d'agrégation basée sur un niveau enfant.



L'expression count(c) renvoie une liste de tous les fournisseurs par typede fournisseur. Étant donné que chaque enfant est un fournisseur, le nombre d'enfants c peut être compté.

Création de vérifications conditionnelles

Pour les expressions d'enregistrement, la fonction if() peut être utilisée pour des vérifications conditionnelles. Cependant, cette fonction ne peut être appliquée que par enregistrement. Il n'est pas possible de vérifier une condition dans un groupe d'enregistrements à l'aide d'une instruction if. La structure arborescente peut être utilisée pour parcourir (des parties spécifiques de) vos données, par exemple pour exprimer des propriétés.


Les fonctions suivantes peuvent être utilisées pour ce type de calculs.

Function

Description

exists(Scope, Condition)

Renvoie true si au moins une condition dans Étendue est évaluée à true .

forall(Scope, Condition)

Renvoie true si toutes les conditions dans Étendue ont la valeur true.

Consultez l'illustration ci-dessous pour voir un exemple.



Par exemple, l'expression

exists(records, find(lower(Supplier), 'consulting')

vérifie pour chaque type de fournisseur s'il existe des factures d'un fournisseur avec « consulting » dans le nom.

Remarque : lower est utilisé pour convertir les noms des fournisseurs en minuscules et rendre la vérification insensible à la casse.

Filtrage

Lors de l'agrégation de données, des calculs sont parfois effectués en fonction d'une partie spécifique de vos données. Dans ce cas, la fonction filter() peut être utilisée.


Vous trouverez ci-dessous un exemple d'expression d'agrégation basée sur un filtre.

count(
    unique(
        filter(
            records,
            supplier_type = "Machinery"
        ).Supplier
    )
)count(
    unique(
        filter(
            records,
            supplier_type = "Machinery"
        ).Supplier
    )
)

De l’intérieur vers l’extérieur, l’expression est construite de la manière suivante :

  1. Récupérer tous les enregistrements dans l'étendue actuelle.
  2. Filtrez ces enregistrements de sorte que seuls ceux qui ont un type de fournisseur de machines restent.
  3. Pour chaque enregistrement filtré, renvoyez la valeur de l'attribut de source de données Fournisseur .
  4. Supprimez toutes les valeurs en double de la liste, de sorte que nous n'ayons qu'un seul élément par valeur unique.
  5. Comptez le nombre d'éléments restants sur la liste.



Dans l'exemple, le niveau de propriétaire de l'incident est défini comme le niveau d'expression. Cela signifie que la portée de l'expression consiste à calculer une valeur pour toutes les valeurs uniques de Propriétairede l'incident . Pour chaque valeur de propriétaire de cas , records est la liste des enregistrements appartenant à ce propriétaire de cas.

L'expression renvoie une valeur pour chaque propriétaire de dossier, qui indique le nombre de fournisseurs uniques avec le type Machines.

Autres options de filtre

Le menu du panneau Paramètres (Settings) contient des options permettant d'ajouter un filtrage pour les agrégats.



Vous trouverez ci-dessous une description des options du menu Paramètres (Settings).

Option

Description

Activer l'expression de filtre

Permet de saisir une expression en tant que filtre.

Activer les commandes de filtrage

Ouvre la boîte de dialogue Modifier les commandes de filtre (Edit Filter Controls ) dans laquelle vous pouvez sélectionner une commande de filtre disponible dans la liste.

Activer la période de comparaison

Permet d'ajouter une période de comparaison ou une expression pour définir un certain nombre de périodes précédentes à filtrer.

Appliquer des filtres d'utilisateur final

Permet d'appliquer les filtres d'utilisateur final disponibles.

Remarque : lorsque vous utilisez les options de filtre du menu Paramètres (Settings), le résultat du filtre s'affiche dans le panneau Valeur (Value). Voir l’illustration ci-dessous pour un exemple.


Tri

Le tri peut être utilisé pour déterminer la valeur la plus élevée ou la plus faible ou pour traiter les enregistrements dans un certain ordre.

Lorsque vous avez besoin du premier ou du dernier enregistrement de votre expression, vous pouvez effectuer un tri par niveau des manières suivantes :

  • A..Z et Z..A trient par valeur.

    • Sur les chaînes, cela sera trié par ordre alphabétique.
    • Sur les formats numériques (double, entier), cela triera sur une valeur numérique.
    • Sur les formats liés à l'heure (datetime, date), il sera trié par ordre chronologique.
  • 0..9 et 9..0 trient sur le nombre d'enregistrements dans le groupe.
  • Expression vous permet de remplir une expression, qui sera triée par valeur comme décrit ci-dessus.

Pour chacune de ces options de tri, il est possible de définir l'ordre croissant ou décroissant.

Voir l'illustration ci-dessous pour un exemple de tri où le premier utilisateur travaillant sur chaque cas est déterminé.



L'expression d'agrégation first(records.User) détermine le premier User de chaque Case ID . Event end est trié par ordre croissant.

Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Logo Uipath blanc
Confiance et sécurité
© 2005-2024 UiPath. All rights reserved.