- Bevor Sie beginnen
- Verwalten des Zugriffs
- Erste Schritte
- Integrationen
- Arbeiten mit Prozess-Apps
- Arbeiten mit Dashboards und Diagrammen
- Arbeiten mit Prozessdiagrammen
- Arbeiten mit Discover-Prozessmodellen und Import BPMN-Modellen
- Showing or hiding the menu
- Kontextinformationen
- Exportieren
- Filter
- Senden von Automatisierungsideen an den UiPath® Automation Hub
- Tags
- Fälligkeitsdaten
- Vergleichen
- Konformitätsprüfung
- Prozesssimulation
- Ursachenanalyse (Vorschau)
- Simulation des Automatisierungspotenzials
- Starten eines Task Mining-Projekts über Process Mining
- Auslösen einer Automatisierung über eine Prozess-App
- Anzeigen von Prozessdaten
- Process Insights (Vorschau)
- Erstellen von Apps
- Laden von Daten
- Transforming data
- Autopilot™ for SQL (Vorschau)
- Structure of transformations
- Tips for writing SQL
- Exportieren und Importieren von Transformationen
- Anzeigen der Datenausführungsprotokolle
- Zusammenführen von Ereignisprotokollen
- Konfigurieren von Tags
- Konfigurieren von Fälligkeitsdaten
- Konfigurieren von Feldern für das Automatisierungspotenzial
- Aktivitätskonfiguration: Definieren der Aktivitätsreihenfolge
- Verfügbarmachen der Transformationen in Dashboards
- Datenmodelle
- Hinzufügen und Bearbeiten von Prozessen
- Anpassen von Dashboards
- Veröffentlichen von Prozess-Apps
- App-Vorlagen
- Benachrichtigungen
- Zusätzliche Ressourcen
- Vorgefertigte Tags und Fälligkeitsdaten
- Prozessmodell erkennen
- Benutzerdefinierte Metriken zur Durchsatzzeit
- SQL differences between Snowflake and SQL Server
- Erweitern des Extraktionstools SAP Ariba
- Leistungsmerkmale

Process Mining-Benutzerhandbuch
Benutzerdefinierte Metriken zur Durchsatzzeit
Einleitung
Durch das Anpassen von Datentransformationen und der Dashboard-Bearbeitung können Sie benutzerdefinierte Metriken für die Durchsatzzeit erstellen und verwenden. Durchsatzzeiten sind die Zeiten zwischen zwei Aktivitäten A und B. In den folgenden Abschnitten werden die Schritte beschrieben, die Sie ausführen müssen, um eine benutzerdefinierte Durchsatzzeitmetrik beim Bearbeiten von Transformationen zu erstellen, und wie die Durchsatzzeitmetrik in den Prozess-App-Dashboards aktiviert wird.
Erstellen einer benutzerdefinierten Metrik für die Durchsatzzeit mit Bearbeitung von Transformationen
Sie müssen zuerst die Durchsatzzeit berechnen und sie dann als Fall-Feld verfügbar machen.
Berechnung der Durchlaufzeit
Pro Fall können Sie Durchsatzzeiten zwischen Aktivität A und Aktivität B berechnen. Da Aktivitäten mehr als einmal pro Fall auftreten können, müssen Sie berücksichtigen, ob Sie das erste oder letzte Vorkommen einer Aktivität verwenden.
- Erstellen Sie ein zusätzliches Modell basierend auf dem Ereignisprotokoll , um die gewünschten Durchsatzzeiten zu berechnen. Zum Beispiel Cases_with_throughput_times.
- Erstellen Sie in diesem Modell Vorverarbeitungstabellen, in denen Sie definieren, welche Ereignisenden Sie für die Berechnungen verwenden möchten. Pro Tabelle benötigen Sie die Fall-ID und das Ereignisende einer Aktivität. Der folgende Code zeigt ein Beispiel dafür, wie das letzte Vorkommen von Aktivität A für einen Fall ausgewählt wird.
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")Hinweis:Wenn Sie in diesem Beispiel das erste Vorkommen der Aktivität auswählen möchten, ersetzen Sie max durch min.
- Definieren Sie die Durchsatzzeittabelle, indem Sie die Vorverarbeitungstabellen mit dem Ereignisprotokoll verbinden und die tatsächliche Durchsatzzeit berechnen.
Tipp:
Sie können die Funktion datediff, die im Paket pm-utils bereitgestellt wird, verwenden, um die Zeitdifferenz zwischen zwei beliebigen Ereignisende zu berechnen.
Die Durchsatzzeit sollte in Millisekunden für die Instanzen berechnet werden, in denen Aktivität A vor Aktivität B geht. Millisekunden sind die Zeiteinheit, die zum Definieren von Dauer in der App-Vorlage verwendet wird. Da die Durchsatzzeiten bereits in den Vorverarbeitungstabellen pro Fall gruppiert sind, können Sie einen beliebigen Datensatz auswählen. Im obigen Beispiel wird die Aggregation Min. verwendet. Die Durchsatzzeittabelle, die Auswahl der Durchsatzzeit und einer Fall-ID kann als im folgenden Codeblock angezeigt definiert werden.
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)"
Berechnen der Durchsatzzeit in Tagen ohne Wochenenden
Sie können die Funktion date_from_timestamp die im Paket pm-utils bereitgestellt wird, verwenden, um die Anzahl der Tage zwischen zwei Aktivitäten zu berechnen. Zusätzlich können Sie mit der Funktion diff_weekdays Wochenendtage herausfiltern.
Das folgende Codebeispiel zeigt, wie die Anzahl der Wochentage zwischen Aktivität A und Aktivität B berechnet wird.
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
Berechnen der Durchlaufzeit in Tagen ohne Feiertage
Führen Sie diese Schritte aus, um die Durchsatzzeit in Tagen zwischen Aktivität A und Aktivität B zu berechnen, ohne Wochenenden und Feiertage.
1. Erstellen Sie eine Holidays.csv -Datei, um die Tage zu definieren, die als Feiertage gezählt werden sollen. Die Datei sollte mindestens einen Datensatz für jeden Feiertag enthalten. Verwenden Sie das folgende Format:
| Feiertag | Datum | Wochentag |
|---|---|---|
| Tag des neuen Jahres | 2024-01-01 | Ja |
| Verbesserungen | 2024-03-31 | Nein |
| .. | .. | .. |
Die Datensätze in der Holidays.csv -Datei werden verwendet, um die Anzahl der Tage zu zählen, die aus einem Datumsbereich ausgeschlossen werden müssen.
2. Laden Sie die Holidays.csv -Datei als Seed-Datei in das dbt- Projekt. Ausführliche Informationen finden Sie in der offiziellen dbt-Dokumentation zu jinja- Seeds.
3. Berechnungen Sie die Durchsatzzeit in Tagen ohne Wochenenden mithilfe der Funktionen date_from_timestamp und diff_weekdays , die im pm-utils-Paket bereitgestellt werden, wie oben unter Berechnen der Durchsatzzeit in Tagen ohne Wochenenden beschrieben.
4. Berechnen Sie die Anzahl der Datensätze, die in der .csv -Datei an Feiertagen gespeichert sind und in den angegebenen Datumsbereich für jeden Fall fallen. Der folgende Code zeigt ein Beispiel.
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"
)
Im obigen Beispiel wird der Filter Weekday = 'Yes' verwendet, um Feiertage nicht zu subtrahieren, wenn der Feiertag auf einen Samstag oder Sonntag fällt. Dies ist bereits in der Funktion diff_weekday berücksichtigt.
5. Subtrahieren Sie die berechnete Anzahl der Feiertage von der für jeden Fall berechneten Gesamtzahl der Tage. Der folgende Code zeigt ein Beispiel.
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"
)
Durchsatzzeit als Fallfeld verfügbar machen
Sobald die Durchsatzzeittabelle erstellt wurde, muss diese Tabelle mit der Fälle-Tabelle verbunden werden, um die zusätzlichen Durchsatzzeitdaten als Fallinformationen hinzuzufügen. Um das neue Feld für die Durchsatzzeit in den Dashboards verfügbar zu haben, muss das neue Feld für die Durchsatzzeit in eines der benutzerdefinierten Felder für die Falldauer umgewandelt werden.
Ersetzen Sie eine der benutzerdefinierten Zeilen für die Falldauer in der Fälle-Tabelle, die wie folgt aussehen:
{{ 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",
mit der neu erstellten Durchlaufzeit:
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",
Die Aktualisierungen der Transformationen für die benutzerdefinierte Durchsatzzeitmetrik sind jetzt abgeschlossen und können in die App-Vorlage importiert werden.
Aktivieren der Durchsatzzeitmetrik in den Prozess-App-Dashboards
Wenn Sie eine benutzerdefinierte Durchsatzzeit in Ihren Transformationen erstellt haben, ist sie in Ihrer App-Vorlage als Falleigenschaft unter ihrem Alias verfügbar. Sie können Ihre Prozess-App anpassen, um eine Metrik für die Durchsatzzeit basierend auf der benutzerdefinierten Durchsatzzeit zu erstellen, die Sie in den Transformationen erstellt haben.
Standardmäßig wird ein neues benutzerdefiniertes Dauerfeld als Feld vom Typ numerisch hinzugefügt. Stellen Sie sicher, dass Sie das Feld bearbeiten und den Typ des neuen Felds in duration ändern. Siehe Data Manager.
- Wechseln Sie zu Data Manager und erstellen Sie eine neue Metrik.
- Wählen Sie das benutzerdefinierte Dauerfeld aus, das für die Durchsatzzeit verwendet werden soll, und wählen Sie Durchschnitt oder eine andere gewünschte Aggregation aus. Sie können auch das benutzerdefinierte Feld für die Falldauer im Data Manager in den gewünschten Namen umbenennen.
- Bearbeiten Sie die Anwendung, und fügen Sie die neue Metrik in die Diagramme ein, wo Sie sie für Geschäftsbenutzer verfügbar machen möchten.
- Veröffentlichen Sie die Dashboards, um die Metrik für die Durchsatzzeit in den Dashboards verfügbar zu machen.
Hinweis:
In den App-Vorlagen Purchase-to-Pay und Order-to-Cash ist bereits eine Berechnung der Durchlaufzeit in Purchase_order_items_with_throughput_times bzw. Sales_order_items_with_throughput_times verfügbar. Benutzerdefinierte Durchlaufzeiten können dort hinzugefügt und dann als benutzerdefinierte Dauer in Purchase_order_items oder Sales_order_items verfügbar gemacht werden.