728x90
PM4Py는 다양한 로그 필터링 방법들을 제공한다. 이번 포스팅에서는 케이스의 소요 시간을 바탕으로 이벤트 로그를 필터링하는 방법에 대해 알아보겠다.
* 본 포스팅은 기본적인 python 문법을 알고 있다는 가정 하에 진행된다.
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("tests","input_data","running-example.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.
2. log에 대해 케이스의 소요 시간을 바탕으로 이를 필터링한다.
이 때, filter_on_case_performance 안의 인수는 각각 필터링할 로그, 소요 시간의 최솟값, 소요 시간의 최댓값이다. 소요 시간의 단위는 초 단위이다. 즉, 아래 코드는 케이스의 소요 시간이 86400초 (1일) - 864000초 (10일) 사이인 trace만 남는 것이다.
from pm4py.algo.filtering.log.cases import case_filter
filtered_log = case_filter.filter_on_case_performance(log, 86400, 864000)
3. 확인을 위해 기존의 log와 필터링 후 log의 케이스 개수를 비교해본다.
print(len(log))
print(len(filtered_log))
*이 코드를 한 번에 입력하고 싶으면 다음 코드를 입력하면 된다. (순서대로 붙여넣기 해도 되지만, 보기 좋게 바꾸어 놓았다.)
import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.filtering.log.cases import case_filter
log = xes_importer.import_log(os.path.join("input_data","running-example.xes"))
filtered_log = case_filter.filter_on_case_performance(log, 86400, 864000)
print(len(log))
print(len(filtered_log))
4. 다음과 같은 결과가 나온다면 성공이다.

pm4py를 이용해 코드 몇 줄로 간단하게 이벤트 로그의 케이스 소요 시간을 바탕으로 로그를 필터링할 수 있다.
References
1. PM4Py 공식 홈페이지: http://pm4py.pads.rwth-aachen.de/
300x250
최근댓글