Funzioni di aggregazione per caso
Funzioni per aggregare i valori di tutti gli eventi appartenenti allo stesso caso.
Comprendere le aggregazioni per caso
Nel Process Mining, un caso rappresenta una singola istanza di un processo, ad esempio un ordine, un ticket o il percorso di un cliente. Ogni caso comprende più eventi, ovvero i singoli passaggi o le attività.
Le funzioni di aggregazione per caso calcolano i valori di tutti gli eventi di un caso e rendono il risultato disponibile per ciascun evento. In questo modo è possibile:
- Calcolare i valori totali di un caso, ad esempio l’importo complessivo di un ordine
- Individuare modelli ricorrenti nei casi, ad esempio il numero di eventi di rilavorazione
- Confrontare i singoli eventi con le statistiche a livello di caso
Modelli ricorrenti
-
Calcolare i totali del caso:
caseSum(ItemAmount) // Total order value
caseCount() // Number of events in case
caseCountDistinct(Resource) // Unique resources involved
-
Individuare i valori estremi:
caseMin(Timestamp) // First event time
caseMax(Timestamp) // Last event time
caseMax(Timestamp) - caseMin(Timestamp) // Total case duration
-
Aggregazioni condizionali:
caseCountIf(Status == "Error") // Error count
caseSumIf(Amount, Activity == "Payment") // Total payments
caseAvgIf(Duration, Activity == "Review") // Avg review time
-
Confrontare un evento con il caso:
Duration / caseAvg(Duration) // Is this event faster/slower than average?
caseSum
(attribute) Somma il valore di un attributo numerico di tutti gli eventi del caso corrente.
| Parametri | | attribute | number | Attributo da sommare | |
| Valori restituiti | numero |
| Esempi | caseSum(ItemAmount) → Totale di tutti i valori di ItemAmount nel caso |
caseAvg
(attribute) Calcola la media di un attributo numerico considerando tutti gli eventi del caso corrente.
| Parametri | | attribute | number | Attributo di cui calcolare la media | |
| Valori restituiti | numero |
| Esempi | caseAvg(ProcessingTime) → Tempo medio di elaborazione per evento |
caseMin
(attribute) Restituisce il valore minimo dell’attributo tra tutti gli eventi del caso corrente.
| Parametri | | attribute | number | Attributo di cui restituire il valore minimo | |
| Valori restituiti | numero |
| Esempi | caseMin(ItemPrice) → Prezzo minimo nel caso |
caseMax
(attribute) Restituisce il valore massimo dell’attributo tra tutti gli eventi del caso corrente.
| Parametri | | attribute | number | Attributo di cui restituire il valore massimo | |
| Valori restituiti | numero |
| Esempi | caseMax(ItemPrice) → Prezzo massimo nel caso |
caseCount
() Restituisce il numero di eventi del caso corrente.
| Valori restituiti | numero |
| Esempi | caseCount() → Numero di eventi nel caso |
caseMedian
(attribute) Restituisce il valore mediano dell’attributo tra tutti gli eventi del caso corrente.
| Parametri | | attribute | number | Attributo di cui restituire la mediana | |
| Valori restituiti | numero |
| Esempi | caseMedian(Duration) → Valore mediano di Duration nel caso |
caseCountDistinct
(attribute) Conta i valori distinti di un attributo nel caso corrente.
| Parametri | | attribute | any | Attributo di cui contare i valori distinti | |
| Valori restituiti | numero |
| Esempi | caseCountDistinct(Resource) → Numero di risorse distinte nel caso |
caseStdDev
(expr) Calcola la deviazione standard tra gli eventi del caso.
| Parametri | | expr | number | Espressione del valore | |
| Valori restituiti | numero |
| Esempi | caseStdDev(Amount) → Deviazione standard all’interno del caso |
caseSumIf
(attribute, condition) Somma i valori solo degli eventi che soddisfano una condizione.
| Parametri | | attribute | number | Attributo da sommare | | condition | boolean | Condizione da applicare al filtro | |
| Valori restituiti | numero |
| Esempi | caseSumIf(Amount, Status == "Approved") → Somma di Amount quando Status è Approvato |
caseAvgIf
(attribute, condition) Calcola la media dei valori solo degli eventi che soddisfano una condizione.
| Parametri | | attribute | number | Attributo di cui calcolare la media | | condition | boolean | Condizione da applicare al filtro | |
| Valori restituiti | numero |
| Esempi | caseAvgIf(Duration, Activity == "Review") → Durata media delle attività Review |
caseCountIf
(condition) Conta gli eventi del caso corrente che soddisfano una condizione.
| Parametri | | condition | boolean | Condizione da conteggiare | |
| Valori restituiti | numero |
| Esempi | caseCountIf(Status == "Error") → Numero di eventi di errore nel caso |
caseMinIf
(attribute, condition) Restituisce il valore minimo tra gli eventi che soddisfano una condizione.
| Parametri | | attribute | number | Attributo di cui restituire il valore minimo | | condition | boolean | Condizione da applicare al filtro | |
| Valori restituiti | numero |
| Esempi | caseMinIf(Timestamp, Activity == "Start") → Timestamp della prima attività Start |
caseMaxIf
(attribute, condition) Restituisce il valore massimo tra gli eventi che soddisfano una condizione.
| Parametri | | attribute | number | Attributo di cui restituire il valore massimo | | condition | boolean | Condizione da applicare al filtro | |
| Valori restituiti | numero |
| Esempi | caseMaxIf(Timestamp, Activity == "End") → Timestamp dell’ultima attività End |
Aggregazioni progressive
Le aggregazioni progressive calcolano i valori cumulativi fino all’evento corrente, incluso. Procedendo in ordine cronologico tra gli eventi di un caso, il valore progressivo si aggiorna.
Sono utili per:
- Monitorare i totali cumulativi (somma progressiva)
- Individuare la posizione di un evento (conteggio progressivo)
- Calcolare le medie mobili
Modelli di aggregazione progressiva
-
Totali cumulativi: monitorare come un valore si accumula nel corso del caso:
caseRunningSum(ItemAmount) // Cumulative order total at each event
| Evento | Importo | caseRunningSum(Amount) |
| 1 | 100 | 100 |
| 2 | 50 | 150 |
| 3 | 75 | 225 |
-
Posizione dell’evento: individuare la posizione di un evento nella sequenza del caso:
caseRunningCount() // 1, 2, 3, 4...
-
Media mobile: calcolare la media fino al punto corrente:
caseRunningAvg(Duration) // Average duration so far
-
Logica basata sulla posizione:
if(caseRunningCount() == 1, "First",
if(caseRunningCount() == caseCount(), "Last", "Middle")
)
caseRunningSum
(attribute) Calcola la somma cumulativa fino all’evento corrente, incluso.
| Parametri | | attribute | number | Attributo da sommare | |
| Valori restituiti | numero |
| Esempi | caseRunningSum(ItemAmount) → Totale cumulativo per ciascun evento |
caseRunningCount
() Restituisce la posizione dell’evento nel caso, a partire da 1.
| Valori restituiti | numero |
| Esempi | caseRunningCount() → Posizione dell’evento: 1, 2, 3, ... |
caseRunningAvg
(attribute) Calcola la media cumulativa fino all’evento corrente, incluso.
| Parametri | | attribute | number | Attributo di cui calcolare la media | |
| Valori restituiti | numero |
| Esempi | caseRunningAvg(Duration) → Durata media fino a questo punto |
caseRunningMin
(expr) Calcola il valore minimo progressivo fino all’evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valori restituiti | numero |
| Esempi | caseRunningMin(Amount) → Importo minimo progressivo |
caseRunningMax
(expr) Calcola il valore massimo progressivo fino all’evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valori restituiti | numero |
| Esempi | caseRunningMax(Amount) → Importo massimo progressivo |
Funzioni statistiche
Funzioni statistiche per analizzare la distribuzione dei valori all’interno di un caso.
-
Percentili: individuare la posizione di un valore rispetto agli altri valori del caso. Inserisca il percentile come frazione compresa tra 0 e 1, ad esempio 0.9 per il 90° percentile:
casePercentile(Duration, 0.5) // Median duration in this case
casePercentile(Duration, 0.9) // 90th percentile
-
Varianza: misurare la dispersione dei valori:
caseVariance(Amount) // Variation within this case
casePercentile
(attribute, percentile) Calcola il percentile di un attributo all’interno del caso corrente.
| Parametri | | attribute | number | Attributo da analizzare | | percentile | number | Percentile come frazione da 0 a 1 (0.9 = 90° percentile) | |
| Valori restituiti | numero |
| Esempi | casePercentile(Duration, 0.9) → Durata al 90° percentile nel caso |
caseVariance
(attribute) Calcola la varianza di un attributo all’interno del caso corrente.
| Parametri | | attribute | number | Attributo da analizzare | |
| Valori restituiti | numero |
| Esempi | caseVariance(ProcessingTime) → Varianza dei tempi di elaborazione nel caso |
Argomenti correlati