process-mining
2024.10
true
UiPath logo, featuring letters U and I in white

Process Mining

Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Dernière mise à jour 18 déc. 2024

Métriques de temps de traitement personnalisées

Introduction

Grâce à la personnalisation des transformations de données et à la modification du tableau de bord, vous pouvez créer et utiliser des mesures de temps de traitement personnalisées. Les temps de traitement sont les délais entre deux activités A et B. Vous trouverez ci-dessous une description des étapes que vous devez effectuer pour créer une mesure de temps de traitement personnalisée lors de la modification des transformations et comment activer la mesure de temps de traitement dans les tableaux de bord de l'application de processus.

Création d'une mesure de temps de débit personnalisée avec modification des transformations

Vous devez d'abord calculer le délai d'exécution, puis le rendre disponible en tant que champ Cas .

Calcul du temps d'exécution

Par cas, vous pouvez calculer les délais de traitement entre l'activité A et l'activité B. Étant donné que les activités peuvent se produire plusieurs fois par cas, vous devez déterminer si vous prenez la première ou la dernière occurrence d’une activité.

  1. Créez un modèle supplémentaire basé sur le journal des événements pour calculer les délais de traitement souhaités. Par exemple, Cases_with_throughput_times.

  2. Dans ce modèle, créez des tables de prétraitement dans lesquelles vous définissez les fins d'événement que vous souhaitez utiliser pour les calculs. Par table, vous avez besoin de l' ID de caset de la fin d'événement d'une activité. Vous trouverez ci-dessous un exemple de sélection de la dernière occurrence de l'activité A pour un incident.

    Event_end_activity_A as (
        select
            Event_log."Case_ID",
            max(Event_log."Event_end") as "Event_end_activity_A"
        from Event_log
        where Event_log."Activity" = 'Activity A'
        group by Event_log."Case_ID")Event_end_activity_A as (
        select
            Event_log."Case_ID",
            max(Event_log."Event_end") as "Event_end_activity_A"
        from Event_log
        where Event_log."Activity" = 'Activity A'
        group by Event_log."Case_ID")
    Remarque :

    Dans cet exemple, si vous souhaitez sélectionner la première occurrence de l'activité, remplacez max par min.

  3. Définissez la table de temps de débit en joignant les tables de pré-traitement au journal des événements et en calculant le temps de débit réel.

    Astuce :

    Vous pouvez utiliser la fonction datediff fournie dans le package pm-utils pour calculer la différence de temps entre deux fins d'événement.

    Le temps de débit doit être calculé en millisecondes pour les instances où l' activité A précède l' activité B. Les millisecondes sont l'unité de temps utilisée pour définir les durées dans le modèle d'application. Étant donné que les délais de traitement sont déjà regroupés par incident dans les tables de prétraitement, vous pouvez sélectionner n'importe quel enregistrement. Dans l’exemple ci-dessus, l’agrégation min est utilisée. Le tableau des délais de traitement, en sélectionnant le délai de traitement et un ID de cas, peut être défini comme affiché ci-dessous.

    Cases_with_throughput_times as (
        select
            Event_log."Case_ID",
            case
                when min(Event_end_activity_A."Event_end_activity_A") <= min(Event_end_activity_B."Event_end_activity_B")
                    then {{ pm_utils.datediff('millisecond',
                    'min(Event_end_activity_A."Event_end_activity_A")',
                    'min(Event_end_activity_B."Event_end_activity_B")') }}
            end as "Throughput_time_activity_A_to_activity_B"
        from Event_log
        left join Event_end_activity_A
            on Event_log."Case_ID" = Event_end_activity_A."Case_ID"
        left join Event_end_activity_B
            on Event_log."Case_ID" = Event_end_activity_B."Case_ID"
        group by Event_log."Case_ID)"Cases_with_throughput_times as (
        select
            Event_log."Case_ID",
            case
                when min(Event_end_activity_A."Event_end_activity_A") <= min(Event_end_activity_B."Event_end_activity_B")
                    then {{ pm_utils.datediff('millisecond',
                    'min(Event_end_activity_A."Event_end_activity_A")',
                    'min(Event_end_activity_B."Event_end_activity_B")') }}
            end as "Throughput_time_activity_A_to_activity_B"
        from Event_log
        left join Event_end_activity_A
            on Event_log."Case_ID" = Event_end_activity_A."Case_ID"
        left join Event_end_activity_B
            on Event_log."Case_ID" = Event_end_activity_B."Case_ID"
        group by Event_log."Case_ID)"

Calcul du délai d'exécution en jours hors week-ends

Vous pouvez utiliser la fonction date_from_timestamp fournie dans le package pm-utils pour calculer le nombre de jours entre deux activités. En outre, la fonction diff_weekdays permet de filtrer les jours de week-end.

Consultez l'exemple de code ci-dessous pour savoir comment calculer le nombre de jours de la semaine entre l' activité A et l' activité B.

with Event_log as (
    select * from {{ ref('Event_log') }}
),

Activity_A as (
    select
        Event_log."Case_ID",
        min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_A"
    from Event_log
    where Event_log."Activity" = 'Receive invoice'
    group by Event_log."Case_ID"
),

Activity_B as (
    select
        Event_log."Case_ID",
        min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_B"
    from Event_log
    where Event_log."Activity" = 'Pay invoice'
    group by Event_log."Case_ID"
),

Total_days_minus_weekends as (
    select
        Activity_A."Case_ID",
        Activity_A."Date_activity_A",
        Activity_B."Date_activity_B",
        {{ pm_utils.diff_weekdays('Activity_A."Date_activity_A"', 'Activity_B."Date_activity_B"') }}
    -- Only compute for cases where both dates are known.
    from Activity_A
    inner join Activity_B
        on Activity_A."Case_ID" = Activity_B."Case_ID"
)

select * from Total_days_minus_weekendswith Event_log as (
    select * from {{ ref('Event_log') }}
),

Activity_A as (
    select
        Event_log."Case_ID",
        min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_A"
    from Event_log
    where Event_log."Activity" = 'Receive invoice'
    group by Event_log."Case_ID"
),

Activity_B as (
    select
        Event_log."Case_ID",
        min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_B"
    from Event_log
    where Event_log."Activity" = 'Pay invoice'
    group by Event_log."Case_ID"
),

Total_days_minus_weekends as (
    select
        Activity_A."Case_ID",
        Activity_A."Date_activity_A",
        Activity_B."Date_activity_B",
        {{ pm_utils.diff_weekdays('Activity_A."Date_activity_A"', 'Activity_B."Date_activity_B"') }}
    -- Only compute for cases where both dates are known.
    from Activity_A
    inner join Activity_B
        on Activity_A."Case_ID" = Activity_B."Case_ID"
)

select * from Total_days_minus_weekends

Calcul du délai d'exécution en jours hors jours fériés

Suivez les étapes ci-dessous pour calculer le délai d'exécution en jours entre l' activité A et l' activité B hors week-ends et jours fériés.

1. Créez un fichier Holidays.csv pour définir les jours qui doivent être comptés comme jours fériés. Le fichier doit contenir au moins un enregistrement pour chaque jour férié. Utilisez le format suivant :
Jour férié

Date

Jour de la semaine

Jour du nouvel an

2024-01-01

Oui (Yes)

Paques

2024-03-31

Non (No)

..

..

..

Les enregistrements du fichier Holidays.csv sont utilisés pour compter le nombre de jours qui doivent être exclus d'une plage de dates.
2. Chargez le fichier Holidays.csv en tant que fichier de référence dans le projet dbt . Pour des informations détaillées, consultez la documentation officielle de dbt sur les labels jinja.
3. Calculez le délai d'exécution en jours hors week-ends à l'aide des fonctions date_from_timestamp et diff_weekdays fournies dans le package pm-utils tel que décrit ci-dessus dans Calcul du délai d'exécution en jours hors week-ends.
4. Calculez le nombre d'enregistrements stockés dans le fichier de vacances .csv qui se situent dans la plage de dates donnée pour chaque incident. Voir l'exemple de code ci-dessous.
Holidays_count as (
    select
        Total_days_minus_weekends."Case_ID",
        count(Holidays."Date") as "Number_of_holidays"
    from Total_days_minus_weekends
    left join Holidays
        on Holidays."Date" between Total_days_minus_weekends."Date_activity_A" and Total_days_minus_weekends."Date_activity_B"
    where Holidays."Weekday" = 'Yes'
    group by Total_days_minus_weekends."Case_ID"
)Holidays_count as (
    select
        Total_days_minus_weekends."Case_ID",
        count(Holidays."Date") as "Number_of_holidays"
    from Total_days_minus_weekends
    left join Holidays
        on Holidays."Date" between Total_days_minus_weekends."Date_activity_A" and Total_days_minus_weekends."Date_activity_B"
    where Holidays."Weekday" = 'Yes'
    group by Total_days_minus_weekends."Case_ID"
)
Remarque :
Dans l'exemple ci-dessus, le filtre Weekday = 'Yes' est utilisé pour ne pas soustraire les jours fériés lorsque ceux-ci sont un samedi ou un dimanche. Ceci est déjà pris en charge dans la fonction diff_weekday .

5. Soustrayez le nombre calculé de vacances du nombre total de jours calculés pour chaque cas. Voir l'exemple de code ci-dessous.

Total_days_minus_weekends_and_holidays as (
    select
        Total_days_minus_weekends."Case_ID",
        Total_days_minus_weekends."Number_of_days" - Holidays_count."Number_of_holidays" as "Number_of_days_between_dates"
    from Total_days_minus_weekends
    inner join Holidays_count
        on Total_days_minus_weekends."Case_ID" = Holidays_count."Case_ID"
)Total_days_minus_weekends_and_holidays as (
    select
        Total_days_minus_weekends."Case_ID",
        Total_days_minus_weekends."Number_of_days" - Holidays_count."Number_of_holidays" as "Number_of_days_between_dates"
    from Total_days_minus_weekends
    inner join Holidays_count
        on Total_days_minus_weekends."Case_ID" = Holidays_count."Case_ID"
)

Rendre le délai d’exécution disponible en tant que champ de cas

Une fois la table de temps de débit créée, cette table doit être jointe à la table Cas pour ajouter les données de temps de débit supplémentaires en tant qu'informations de cas. Pour que le nouveau champ de délai de traitement soit disponible dans les tableaux de bord, il est nécessaire de convertir le nouveau champ de délai de traitement en l'un des champs de durée de cas personnalisés.

Remplacez l'une des lignes de durée d'incident personnalisées dans le tableau Incidents ( Recases ) qui ressemble à ceci :

{{ pm_utils.optional(ref('Cases_base'), '"custom_case_duration_1"', 'integer') }} as "custom_case_duration_1",{{ pm_utils.optional(ref('Cases_base'), '"custom_case_duration_1"', 'integer') }} as "custom_case_duration_1",

avec le temps de débit nouvellement créé :

Cases_with_throughput_times."Throughput_time_activity_A_to_activity_B" as "custom_case_duration_1",Cases_with_throughput_times."Throughput_time_activity_A_to_activity_B" as "custom_case_duration_1",

Les mises à jour des transformations de la mesure de temps de débit personnalisée sont maintenant effectuées et peuvent être importées dans le modèle d'application.

Activation de la mesure du temps de débit dans les tableaux de bord de l'application de processus

Lorsque vous avez créé un délai d'exécution personnalisé dans vos transformations, il est disponible dans votre modèle d'application en tant que propriété de cas sous son alias. Vous pouvez personnaliser votre application de processus pour créer une métrique de délai d'exécution basée sur le délai d'exécution personnalisé que vous avez créé dans les transformations.

Remarque :

Par défaut, un nouveau champ de durée personnalisé est ajouté en tant que champ de type numérique(numerical). Assurez-vous de modifier le champ et de changer le Type du nouveau champ en durée. Voir également Gestionnaire de données.

  • Accédez au Gestionnaire de données (Data Manager) et créez une nouvelle mesure.
  • Sélectionnez le champ de durée personnalisé à utiliser pour le temps de débit, puis sélectionnez Moyenne ou toute autre agrégation souhaitée. Vous pouvez également renommer le champ de durée de l'incident personnalisé avec le nom souhaité dans le Gestionnaire de données.
  • Modifiez l'application et placez la nouvelle mesure sur les graphiques où vous souhaitez la rendre disponible pour les utilisateurs professionnels.
  • Publiez les tableaux de bord pour que la métrique du délai d'exécution y soit disponible.
Remarque :

Dans les modèles d'application Purchase-to-Pay et Order-to-Cash , un calcul du temps de traitement est déjà disponible dans Purchase_order_items_with_throughput_times et Sales_order_items_with_throughput_times, respectivement. Des délais de traitement personnalisés peuvent y être ajoutés, puis être disponibles en tant que durée personnalisée sur Purchase_order_items ou Sales_order_items.

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
Uipath Logo White
Confiance et sécurité
© 2005-2024 UiPath Tous droits réservés.