Funkcje agregujące dla spraw
Funkcje agregujące wartości ze wszystkich zdarzeń w tej samej sprawie.
Jak działają agregacje dla spraw
W process mining sprawa oznacza pojedynczą instancję procesu, na przykład zamówienie, zgłoszenie lub ścieżkę klienta. Każda sprawa składa się z wielu zdarzeń, czyli poszczególnych kroków lub działań.
Funkcje agregujące dla spraw obliczają wartości na podstawie wszystkich zdarzeń w danej sprawie i udostępniają wynik przy każdym zdarzeniu. Dzięki temu można:
- Obliczać łączne wartości dla sprawy, np. całkowitą kwotę zamówienia
- Wykrywać wzorce w sprawach, np. liczbę zdarzeń związanych z poprawkami
- Porównywać poszczególne zdarzenia ze statystykami dla całej sprawy
Typowe zastosowania
-
Obliczanie sum dla sprawy:
caseSum(ItemAmount) // Total order value
caseCount() // Number of events in case
caseCountDistinct(Resource) // Unique resources involved
-
Wyszukiwanie wartości skrajnych:
caseMin(Timestamp) // First event time
caseMax(Timestamp) // Last event time
caseMax(Timestamp) - caseMin(Timestamp) // Total case duration
-
Agregacje warunkowe:
caseCountIf(Status == "Error") // Error count
caseSumIf(Amount, Activity == "Payment") // Total payments
caseAvgIf(Duration, Activity == "Review") // Avg review time
-
Porównywanie zdarzenia z całą sprawą:
Duration / caseAvg(Duration) // Is this event faster/slower than average?
caseSum
(attribute) Sumuje wartości atrybutu liczbowego ze wszystkich zdarzeń w bieżącym case.
| Parametry | | attribute | number | Atrybut do zsumowania | |
| Zwracana wartość | liczba |
| Przykłady | caseSum(ItemAmount) → Suma wszystkich wartości ItemAmount w case |
caseAvg
(attribute) Oblicza średnią wartość atrybutu liczbowego ze wszystkich zdarzeń w bieżącym case.
| Parametry | | attribute | number | Atrybut do uśrednienia | |
| Zwracana wartość | liczba |
| Przykłady | caseAvg(ProcessingTime) → Średni czas przetwarzania na zdarzenie |
caseMin
(attribute) Zwraca najmniejszą wartość atrybutu spośród wszystkich zdarzeń w bieżącym case.
| Parametry | | attribute | number | Atrybut, którego najmniejszą wartość zwrócić | |
| Zwracana wartość | liczba |
| Przykłady | caseMin(ItemPrice) → Najniższa cena w case |
caseMax
(attribute) Zwraca największą wartość atrybutu spośród wszystkich zdarzeń w bieżącym case.
| Parametry | | attribute | number | Atrybut, którego największą wartość zwrócić | |
| Zwracana wartość | liczba |
| Przykłady | caseMax(ItemPrice) → Najwyższa cena w case |
caseCount
() Zwraca liczbę zdarzeń w bieżącym case.
| Zwracana wartość | liczba |
| Przykłady | caseCount() → Liczba zdarzeń w case |
caseMedian
(attribute) Zwraca medianę wartości atrybutu ze wszystkich zdarzeń w bieżącym case.
| Parametry | | attribute | number | Atrybut, którego medianę zwrócić | |
| Zwracana wartość | liczba |
| Przykłady | caseMedian(Duration) → Środkowa wartość Duration w case |
caseCountDistinct
(attribute) Zlicza różne wartości atrybutu w bieżącym case.
| Parametry | | attribute | any | Atrybut, którego różne wartości zliczyć | |
| Zwracana wartość | liczba |
| Przykłady | caseCountDistinct(Resource) → Liczba unikalnych zasobów w case |
caseStdDev
(expr) Oblicza odchylenie standardowe dla zdarzeń w case.
| Parametry | | expr | number | Wyrażenie wartości | |
| Zwracana wartość | liczba |
| Przykłady | caseStdDev(Amount) → Odchylenie standardowe w case |
caseSumIf
(attribute, condition) Sumuje wartości tylko dla zdarzeń spełniających warunek.
| Parametry | | attribute | number | Atrybut do zsumowania | | condition | boolean | Warunek filtrowania | |
| Zwracana wartość | liczba |
| Przykłady | caseSumIf(Amount, Status == "Approved") → Suma Amount dla zdarzeń, w których Status ma wartość Approved |
caseAvgIf
(attribute, condition) Oblicza średnią tylko dla zdarzeń spełniających warunek.
| Parametry | | attribute | number | Atrybut do uśrednienia | | condition | boolean | Warunek filtrowania | |
| Zwracana wartość | liczba |
| Przykłady | caseAvgIf(Duration, Activity == "Review") → Średni czas trwania działań Review |
caseCountIf
(condition) Zlicza zdarzenia w bieżącym case, które spełniają warunek.
| Parametry | | condition | boolean | Warunek zliczania | |
| Zwracana wartość | liczba |
| Przykłady | caseCountIf(Status == "Error") → Liczba zdarzeń z błędem w case |
caseMinIf
(attribute, condition) Zwraca najmniejszą wartość spośród zdarzeń spełniających warunek.
| Parametry | | attribute | number | Atrybut, którego najmniejszą wartość zwrócić | | condition | boolean | Warunek filtrowania | |
| Zwracana wartość | liczba |
| Przykłady | caseMinIf(Timestamp, Activity == "Start") → Znacznik czasu pierwszego działania Start |
caseMaxIf
(attribute, condition) Zwraca największą wartość spośród zdarzeń spełniających warunek.
| Parametry | | attribute | number | Atrybut, którego największą wartość zwrócić | | condition | boolean | Warunek filtrowania | |
| Zwracana wartość | liczba |
| Przykłady | caseMaxIf(Timestamp, Activity == "End") → Znacznik czasu ostatniego działania End |
Agregacje narastające
Agregacje narastające obliczają wartości skumulowane do bieżącego zdarzenia włącznie. W miarę przechodzenia chronologicznie przez zdarzenia w sprawie wartość narastająca jest aktualizowana.
Przydaje się to do:
- Śledzenia sum narastających
- Określania pozycji zdarzenia w sekwencji
- Obliczania średnich kroczących
Przykłady agregacji narastających
-
Sumy narastające: śledzenie zmian wartości w kolejnych etapach sprawy:
caseRunningSum(ItemAmount) // Cumulative order total at each event
| Zdarzenie | Kwota | caseRunningSum(Amount) |
| 1 | 100 | 100 |
| 2 | 50 | 150 |
| 3 | 75 | 225 |
-
Pozycja zdarzenia: określanie miejsca zdarzenia w sekwencji sprawy:
caseRunningCount() // 1, 2, 3, 4...
-
Średnia krocząca: obliczanie średniej do bieżącego punktu:
caseRunningAvg(Duration) // Average duration so far
-
Logika zależna od pozycji:
if(caseRunningCount() == 1, "First",
if(caseRunningCount() == caseCount(), "Last", "Middle")
)
caseRunningSum
(attribute) Oblicza sumę narastająco, uwzględniając bieżące zdarzenie.
| Parametry | | attribute | number | Atrybut do zsumowania | |
| Zwracana wartość | liczba |
| Przykłady | caseRunningSum(ItemAmount) → Suma narastająca dla każdego zdarzenia |
caseRunningCount
() Zwraca numer zdarzenia w case, zaczynając od 1.
| Zwracana wartość | liczba |
| Przykłady | caseRunningCount() → Pozycja zdarzenia: 1, 2, 3, ... |
caseRunningAvg
(attribute) Oblicza średnią narastająco, uwzględniając bieżące zdarzenie.
| Parametry | | attribute | number | Atrybut do uśrednienia | |
| Zwracana wartość | liczba |
| Przykłady | caseRunningAvg(Duration) → Średni czas trwania do tego momentu |
caseRunningMin
(expr) Oblicza najmniejszą wartość narastająco do bieżącego zdarzenia.
| Parametry | | expr | number | Wyrażenie wartości | |
| Zwracana wartość | liczba |
| Przykłady | caseRunningMin(Amount) → Najmniejsza wartość Amount do tego momentu |
caseRunningMax
(expr) Oblicza największą wartość narastająco do bieżącego zdarzenia.
| Parametry | | expr | number | Wyrażenie wartości | |
| Zwracana wartość | liczba |
| Przykłady | caseRunningMax(Amount) → Największa wartość Amount do tego momentu |
Funkcje statystyczne
Funkcje statystyczne służą do analizy rozkładu wartości w obrębie sprawy.
-
Percentyle: określają położenie wartości względem pozostałych wartości w sprawie. Percentyl należy podać jako ułamek z zakresu od 0 do 1, więc 0.9 oznacza 90. percentyl:
casePercentile(Duration, 0.5) // Median duration in this case
casePercentile(Duration, 0.9) // 90th percentile
-
Wariancja: określa rozproszenie wartości:
caseVariance(Amount) // Variation within this case
casePercentile
(attribute, percentile) Oblicza percentyl wartości atrybutu w bieżącej sprawie.
| Parametry | | attribute | number | Analizowany atrybut | | percentile | number | Percentyl jako ułamek od 0 do 1 (0.9 = 90. percentyl) | |
| Zwracana wartość | liczba |
| Przykłady | casePercentile(Duration, 0.9) → 90. percentyl czasu trwania w sprawie |
caseVariance
(attribute) Oblicza wariancję wartości atrybutu w bieżącej sprawie.
| Parametry | | attribute | number | Analizowany atrybut | |
| Zwracana wartość | liczba |
| Przykłady | caseVariance(ProcessingTime) → Wariancja czasów przetwarzania w sprawie |
Powiązane tematy