728x90

 PM4Py는 다양한 로그 필터링 방법들을 제공한다. 이번 포스팅에서는 케이스가 수행된 시각을 바탕으로 이벤트 로그를 필터링하는 방법에 대해 알아보겠다.

 

1. 우선, xes 파일을 import하여 이를 log에 저장해 준다.

import os
from pm4py.objects.log.importer.xes import factory as xes_importer

log = xes_importer.import_log(os.path.join("input_data","receipt.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.
 

 

2. log에 대해 원하는 방법에 따라 수행 시각을 기준으로 필터링한다.

PM4Py는 수행 시각을 기준으로 필터링을 할 때에 세 가지의 방법을 제공한다. 그림에서 파란색이 포함된 것, 붉은 색이 포함되지 않은 것이다.

다시는.. 개발자에게.. 그림 못 그린다고.. 욕 하지 않겠습니다..

  • traces contained: start time과 end time이 모두 정해진 범위 안에 있는 case만을 남기고 필터링한다.
  • traces intersected: start time과 end time의 범위 안에 걸쳐진 모든 case들을 남기고 필터링한다.
  • events contained: start time과 end time 안에 이벤트가 있으면 케이스에 상관 없이 그 이벤트들을 남기고 필터링한다. 

그리고 이들의 필터링 코드는 다음과 같다. 이 때, filter_traces_contained 부분을 filter_traces_intersecting으로 바꾸면 두 번째 방법이, apply_events로 바꾸면 세 번째 방법이 된다.

from pm4py.algo.filtering.log.timestamp import timestamp_filter
filtered_log = timestamp_filter.filter_traces_contained(log, "2011-03-09 00:00:00", "2012-01-18 23:59:59")

3. 필터링 결과를 확인하기 위해 다음 코드를 입력한다.

print(len(log))
print(len(filtered_log))

4. 다음과 같은 결과가 나오면 성공이다. 

 475개의 케이스들이 filtering 되어 959개의 케이스만이 남아 있음을 확인할 수 있다.

이번 포스팅에서는 시간 범위를 이용하여 이벤트 로그를 필터링하는 방법에 대해 알아보았다. 이렇게 원하는 시간 범위에 대해서 이벤트 로그를 필터링함으로써 각 분기별 프로세스 비교, 월별 프로세스 비교 등 다양한 분석이 가능할 것이다.

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기