- Notes de publication
- Avant de commencer
- Démarrage
- Intégrations
- Travailler avec des applications de processus
- Travailler avec des tableaux de bord et des graphiques
- Travailler avec des graphiques de processus
- Travailler avec des modèles de processus Découvrir et importer des modèles BPMN
- Showing or hiding the menu
- Informations contextuelles
- Exporter (Export)
- Filtres
- Envoi d’idées d’automatisation au Automation Hub d’UiPath®
- Balises
- Dates d’échéance
- Comparer
- Vérification de la conformité
- Analyse des causes profondes
- Simulation du potentiel d’automatisation
- Démarrage d'un projet Task Mining à partir de Process Mining
- Triggering an automation from a process app
- Afficher les données de processus
- Création d'applications
- Chargement des données
- Charger des données
- Récupération des informations d'identification pour le stockage d'objets blob Azure
- [Aperçu] Charger des données en utilisant une connexion directe
- Chargement de données à l'aide de DataUploader
- Affichage des journaux
- Optimisation d'une application
- Planification des exécutions de données
- Personnaliser les applications de processus
- Introduction aux tableaux de bord
- Créer des tableaux de bord
- Tableaux de bord
- Gestionnaire de l’automatisation
- Input data
- Définition de nouvelles tables d'entrée
- Ajout de champs
- Ajouter des tables
- Configuration requise pour le modèle de données
- Affichage et modification du modèle de données
- Exportation et importation de transformations
- Afficher les journaux de transformations
- Modification et test des transformations de données
- Structure of transformations
- Fusion des journaux d'événements
- Tips for writing SQL
- Gestionnaire de processus
- Publier les applications de processus
- Modèles d'applications
- Ressources supplémentaires
- Balises et dates d'échéance prêtes à l'emploi
- Modification des transformations de données dans un environnement local
- Setting up a local test environment
- Métriques de temps de traitement personnalisées
- SQL differences between Snowflake and SQL Server
- Configuration settings for loading input data
- Designing an event log
- Extension de l’outil d’extraction SAP Ariba
- Caractéristiques de performances
Process Mining
Métriques de temps de traitement personnalisées
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.
Vous devez d'abord calculer le délai d'exécution, puis le rendre disponible en tant que champ Cas .
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é.
-
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.
-
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.
-
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
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_weekends
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_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.
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) |
.. |
.. |
.. |
Holidays.csv
sont utilisés pour compter le nombre de jours qui doivent être exclus d'une plage de dates.
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.
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.
.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"
)
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"
)
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.
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.
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.
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.