같은 케이스에 속한 모든 이벤트의 값을 집계하는 함수입니다.
케이스 집계 이해하기
process mining에서 케이스는 프로세스의 단일 인스턴스를 의미합니다(예: 주문 하나, 티켓 하나, 고객 여정 하나). 각 케이스에는 여러 이벤트가 포함되며, 각 이벤트는 개별 단계 또는 활동을 나타냅니다.
케이스 집계 함수는 케이스의 모든 이벤트를 대상으로 값을 계산하고, 그 결과를 각 이벤트에서 사용할 수 있게 합니다. 이를 통해 다음 작업을 수행할 수 있습니다.
- 케이스의 총값 계산(예: 총 주문 금액)
- 케이스 내 패턴 찾기(예: 재작업 이벤트 수)
- 개별 이벤트와 케이스 수준 통계 비교
자주 사용하는 패턴
-
케이스 합계 계산:
caseSum(ItemAmount) // Total order value
caseCount() // Number of events in case
caseCountDistinct(Resource) // Unique resources involved
-
최댓값과 최솟값 찾기:
caseMin(Timestamp) // First event time
caseMax(Timestamp) // Last event time
caseMax(Timestamp) - caseMin(Timestamp) // Total case duration
-
조건부 집계:
caseCountIf(Status == "Error") // Error count
caseSumIf(Amount, Activity == "Payment") // Total payments
caseAvgIf(Duration, Activity == "Review") // Avg review time
-
이벤트와 케이스 비교:
Duration / caseAvg(Duration) // Is this event faster/slower than average?
caseSum
(attribute) 현재 케이스의 모든 이벤트에서 숫자 속성의 합계를 계산합니다.
| 매개변수 | | attribute | number | 합계를 계산할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseSum(ItemAmount) → 케이스의 모든 ItemAmount 값 합계 |
caseAvg
(attribute) 현재 케이스의 모든 이벤트에서 숫자 속성의 평균을 계산합니다.
| 매개변수 | | attribute | number | 평균을 계산할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseAvg(ProcessingTime) → 이벤트당 평균 처리 시간 |
caseMin
(attribute) 현재 케이스의 모든 이벤트에서 속성의 최솟값을 반환합니다.
| 매개변수 | | attribute | number | 최솟값을 반환할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseMin(ItemPrice) → 케이스에서 가장 낮은 가격 |
caseMax
(attribute) 현재 케이스의 모든 이벤트에서 속성의 최댓값을 반환합니다.
| 매개변수 | | attribute | number | 최댓값을 반환할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseMax(ItemPrice) → 케이스에서 가장 높은 가격 |
caseCount
() 현재 케이스의 이벤트 수를 반환합니다.
caseMedian
(attribute) 현재 케이스의 모든 이벤트에서 속성의 중앙값을 반환합니다.
| 매개변수 | | attribute | number | 중앙값을 반환할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseMedian(Duration) → 케이스 내 Duration의 중앙값 |
caseCountDistinct
(attribute) 현재 케이스에서 속성의 고유한 값 개수를 셉니다.
| 매개변수 | | attribute | any | 고유한 값의 개수를 셀 속성 | |
| 반환값 | 숫자 |
| 예시 | caseCountDistinct(Resource) → 케이스의 고유 리소스 수 |
caseStdDev
(expr) 케이스 내 이벤트 값의 표준편차를 계산합니다.
| 매개변수 | |
| 반환값 | 숫자 |
| 예시 | caseStdDev(Amount) → 케이스 내 표준편차 |
caseSumIf
(attribute, condition) 조건을 충족하는 이벤트의 값만 합산합니다.
| 매개변수 | | attribute | number | 합계를 계산할 속성 | | condition | boolean | 필터 조건 | |
| 반환값 | 숫자 |
| 예시 | caseSumIf(Amount, Status == "Approved") → Status가 Approved인 이벤트의 Amount 합계 |
caseAvgIf
(attribute, condition) 조건을 충족하는 이벤트의 값만 평균을 계산합니다.
| 매개변수 | | attribute | number | 평균을 계산할 속성 | | condition | boolean | 필터 조건 | |
| 반환값 | 숫자 |
| 예시 | caseAvgIf(Duration, Activity == "Review") → Review 활동의 평균 소요 시간 |
caseCountIf
(condition) 현재 케이스에서 조건을 충족하는 이벤트 수를 셉니다.
| 매개변수 | |
| 반환값 | 숫자 |
| 예시 | caseCountIf(Status == "Error") → 케이스의 오류 이벤트 수 |
caseMinIf
(attribute, condition) 조건을 충족하는 이벤트 중 최솟값을 반환합니다.
| 매개변수 | | attribute | number | 최솟값을 반환할 속성 | | condition | boolean | 필터 조건 | |
| 반환값 | 숫자 |
| 예시 | caseMinIf(Timestamp, Activity == "Start") → 첫 번째 Start 활동의 타임스탬프 |
caseMaxIf
(attribute, condition) 조건을 충족하는 이벤트 중 최댓값을 반환합니다.
| 매개변수 | | attribute | number | 최댓값을 반환할 속성 | | condition | boolean | 필터 조건 | |
| 반환값 | 숫자 |
| 예시 | caseMaxIf(Timestamp, Activity == "End") → 마지막 End 활동의 타임스탬프 |
누적 집계
누적 집계는 현재 이벤트까지의 누적 값을 계산합니다. 케이스의 이벤트를 시간순으로 살펴보면 누적 값이 계속 갱신됩니다.
다음과 같은 경우에 유용합니다.
- 누적 합계 추적
- 이벤트 순서 확인(누적 개수)
- 이동 평균 계산
누적 집계 패턴
-
누적 합계: 케이스가 진행되면서 값이 어떻게 누적되는지 추적합니다.
caseRunningSum(ItemAmount) // Cumulative order total at each event
| 이벤트 | 금액 | caseRunningSum(Amount) |
| 1 | 100 | 100 |
| 2 | 50 | 150 |
| 3 | 75 | 225 |
-
이벤트 순서: 케이스 순서에서 이벤트가 몇 번째인지 확인합니다.
caseRunningCount() // 1, 2, 3, 4...
-
이동 평균: 현재 시점까지의 평균을 계산합니다.
caseRunningAvg(Duration) // Average duration so far
-
순서 기반 논리
if(caseRunningCount() == 1, "First",
if(caseRunningCount() == caseCount(), "Last", "Middle")
)
caseRunningSum
(attribute) 현재 이벤트까지 포함한 누적 합계를 계산합니다.
| 매개변수 | | attribute | number | 합계를 계산할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseRunningSum(ItemAmount) → 각 이벤트 시점의 누적 합계 |
caseRunningCount
() 케이스 내 이벤트 순번을 1부터 반환합니다.
| 반환값 | 숫자 |
| 예시 | caseRunningCount() → 이벤트 순번: 1, 2, 3, ... |
caseRunningAvg
(attribute) 현재 이벤트까지 포함한 누적 평균을 계산합니다.
| 매개변수 | | attribute | number | 평균을 계산할 속성 | |
| 반환값 | 숫자 |
| 예시 | caseRunningAvg(Duration) → 현재 시점까지의 평균 소요 시간 |
caseRunningMin
(expr) 현재 이벤트까지의 누적 최솟값을 계산합니다.
| 매개변수 | |
| 반환값 | 숫자 |
| 예시 | caseRunningMin(Amount) → 누적 최솟값 |
caseRunningMax
(expr) 현재 이벤트까지의 누적 최댓값을 계산합니다.
| 매개변수 | |
| 반환값 | 숫자 |
| 예시 | caseRunningMax(Amount) → 누적 최댓값 |
통계 함수
케이스 내 값의 분포를 분석하는 통계 함수입니다.
-
백분위수: 케이스의 다른 값과 비교해 특정 값의 위치를 확인합니다. 백분위수는 0에서 1 사이의 비율로 입력합니다. 예를 들어 0.9는 90번째 백분위수를 의미합니다.
casePercentile(Duration, 0.5) // Median duration in this case
casePercentile(Duration, 0.9) // 90th percentile
-
분산: 값이 얼마나 퍼져 있는지 측정합니다.
caseVariance(Amount) // Variation within this case
casePercentile
(attribute, percentile) 현재 케이스에서 속성의 백분위수를 계산합니다.
| 매개변수 | | attribute | number | 분석할 속성 | | percentile | number | 0~1 사이의 백분위수 비율(0.9 = 90백분위수) | |
| 반환값 | 숫자 |
| 예시 | casePercentile(Duration, 0.9) → 케이스의 90백분위수 소요 시간 |
caseVariance
(attribute) 현재 케이스에서 속성의 분산을 계산합니다.
| 매개변수 | |
| 반환값 | 숫자 |
| 예시 | caseVariance(ProcessingTime) → 케이스의 처리 시간 분산 |
관련 주제