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 contiene più eventi, ovvero i singoli passaggi o le singole attività.
Le funzioni di aggregazione per caso calcolano i valori di tutti gli eventi di un caso, rendendo il risultato disponibile per ogni evento. Ciò consente di:
- Calcolare i valori totali di un caso, ad esempio l’importo totale di un ordine
- Individuare pattern all’interno dei casi, ad esempio il numero di eventi di rilavorazione
- Confrontare i singoli eventi con le statistiche a livello di caso
Pattern comuni
-
Calcolo dei totali del caso:
caseSum(ItemAmount) // Total order value
caseCount() // Number of events in case
caseCountDistinct(Resource) // Unique resources involved
-
Individuazione dei 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
-
Confronto tra evento e caso:
Duration / caseAvg(Duration) // Is this event faster/slower than average?
caseSum
(attribute) Somma un Attributo numerico di tutti gli eventi del caso corrente.
| Parametri | | attribute | number | L'attributo da sommare | |
| Valore restituito | numero |
| Esempi | caseSum(ItemAmount) → Totale di tutti i valori ItemAmount nel caso |
caseAvg
(attribute) Calcola la media di un Attributo numerico di tutti gli eventi del caso corrente.
| Parametri | | attribute | number | L'attributo di cui calcolare la media | |
| Valore restituito | numero |
| Esempi | caseAvg(ProcessingTime) → Tempo medio di elaborazione per evento |
caseMin
(attribute) Restituisce il valore minimo di un Attributo di tutti gli eventi del caso corrente.
| Parametri | | attribute | number | L'attributo di cui si desidera ottenere il minimo | |
| Valore restituito | numero |
| Esempi | caseMin(ItemPrice) → Prezzo più basso nel caso |
caseMax
(attribute) Restituisce il valore massimo di un Attributo di tutti gli eventi del caso corrente.
| Parametri | | attribute | number | L'attributo di cui si desidera ottenere il massimo | |
| Valore restituito | numero |
| Esempi | caseMax(ItemPrice) → Prezzo più alto nel caso |
caseCount
() Restituisce il numero di eventi nel caso corrente.
| Valore restituito | numero |
| Esempi | caseCount() → Numero di eventi nel caso |
caseMedian
(attribute) Restituisce la mediana di un Attributo di tutti gli eventi del caso corrente.
| Parametri | | attribute | number | L'attributo di cui si desidera ottenere la mediana | |
| Valore restituito | numero |
| Esempi | caseMedian(Duration) → Valore mediano della Duration nel caso |
caseCountDistinct
(attribute) Conta i valori distinti di un attributo nel caso corrente.
| Parametri | | attribute | any | L'attributo di cui si desidera contare i valori distinti | |
| Valore restituito | numero |
| Esempi | caseCountDistinct(Resource) → Numero di risorse univoche nel caso |
caseStdDev
(expr) Calcola la deviazione standard tra gli eventi del caso.
| Parametri | | expr | number | Espressione del valore | |
| Valore restituito | numero |
| Esempi | caseStdDev(Amount) → Deviazione standard nel caso |
caseSumIf
(attribute, condition) Somma i valori solo per gli eventi che soddisfano una condizione.
| Parametri | | attribute | number | L'attributo da sommare | | condition | boolean | La condizione da utilizzare per il filtro | |
| Valore restituito | numero |
| Esempi | caseSumIf(Amount, Status == "Approved") → Somma di Amount quando Status è Approved |
caseAvgIf
(attribute, condition) Calcola la media dei valori solo per gli eventi che soddisfano una condizione.
| Parametri | | attribute | number | L'attributo di cui calcolare la media | | condition | boolean | La condizione da utilizzare per il filtro | |
| Valore restituito | numero |
| Esempi | caseAvgIf(Duration, Activity == "Review") → Durata media delle attività Review |
caseCountIf
(condition) Conta gli eventi che soddisfano una condizione nel caso corrente.
| Parametri | | condition | boolean | La condizione da conteggiare | |
| Valore restituito | numero |
| Esempi | caseCountIf(Status == "Error") → Numero di eventi con errore nel caso |
caseMinIf
(attribute, condition) Restituisce il valore minimo per gli eventi che soddisfano una condizione.
| Parametri | | attribute | number | L'attributo di cui si desidera ottenere il minimo | | condition | boolean | La condizione da utilizzare per il filtro | |
| Valore restituito | numero |
| Esempi | caseMinIf(Timestamp, Activity == "Start") → Timestamp della prima attività Start |
caseMaxIf
(attribute, condition) Restituisce il valore massimo per gli eventi che soddisfano una condizione.
| Parametri | | attribute | number | L'attributo di cui si desidera ottenere il massimo | | condition | boolean | La condizione da utilizzare per il filtro | |
| Valore restituito | numero |
| Esempi | caseMaxIf(Timestamp, Activity == "End") → Timestamp dell'ultima attività End |
Aggregazioni cumulative
Le aggregazioni cumulative calcolano i valori cumulativi fino all’evento corrente incluso. Quando percorre cronologicamente gli eventi di un caso, il valore cumulativo si aggiorna.
Sono utili per:
- Monitorare i totali cumulativi, ovvero la somma progressiva
- Individuare la posizione dell’evento, ovvero il conteggio progressivo
- Calcolare medie mobili
Pattern delle aggregazioni cumulative
-
Totali cumulativi: monitori come si accumula un valore nel caso:
caseRunningSum(ItemAmount) // Cumulative order total at each event
| Evento | Importo | caseRunningSum(Importo) |
| 1 | 100 | 100 |
| 2 | 50 | 150 |
| 3 | 75 | 225 |
-
Posizione dell’evento: individui la posizione di un evento nella sequenza del caso:
caseRunningCount() // 1, 2, 3, 4...
-
Media mobile: calcoli 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, includendo quest'ultimo.
| Parametri | | attribute | number | L'attributo da sommare | |
| Valore restituito | numero |
| Esempi | caseRunningSum(ItemAmount) → Totale cumulativo a ogni evento |
caseRunningCount
() Restituisce il numero dell'evento all'interno del caso, a partire da 1.
| Valore restituito | numero |
| Esempi | caseRunningCount() → Posizione dell'evento: 1, 2, 3, ... |
caseRunningAvg
(attribute) Calcola la media cumulativa fino all'evento corrente, includendo quest'ultimo.
| Parametri | | attribute | number | L'attributo di cui calcolare la media | |
| Valore restituito | numero |
| Esempi | caseRunningAvg(Duration) → Durata media fino a questo punto |
caseRunningMin
(expr) Calcola il minimo progressivo fino all'evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valore restituito | numero |
| Esempi | caseRunningMin(Amount) → Importo minimo progressivo |
caseRunningMax
(expr) Calcola il massimo progressivo fino all'evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valore restituito | numero |
| Esempi | caseRunningMax(Amount) → Importo massimo progressivo |
Funzioni statistiche
Funzioni statistiche per analizzare la distribuzione dei valori all’interno di un caso.
-
Percentili: individui la posizione di un valore rispetto agli altri valori del caso. Indichi il percentile come frazione da 0 a 1, quindi 0.9 corrisponde al 90° percentile:
casePercentile(Duration, 0.5) // Median duration in this case
casePercentile(Duration, 0.9) // 90th percentile
-
Varianza: misuri quanto sono dispersi i valori:
caseVariance(Amount) // Variation within this case
casePercentile
(attribute, percentile) Calcola il percentile di un attributo all'interno del caso corrente.
| Parametri | | attribute | number | L'attributo da analizzare | | percentile | number | Il percentile espresso come frazione da 0 a 1 (0.9 = 90° percentile) | |
| Valore restituito | 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 | L'attributo da analizzare | |
| Valore restituito | numero |
| Esempi | caseVariance(ProcessingTime) → Varianza dei tempi di elaborazione nel caso |
Argomenti correlati