트랜잭션 조회 세분화

BEGIN 및 END 표현식과 함께 EXPLICIT 표현식을 사용하여 트랜잭션 AQL 조회를 세분화합니다. 또한 TIMEOUT 및 TIMEWINDOW 표현식을 사용하여 시간 간격을 지정합니다.

BEGIN 및 END 표현식과 함께 EXPLICIT 표현식을 사용하여 트랜잭션 조회에 보다 정확한 필터링을 적용하십시오.

예를 들어, EXPLICIT END 표현식과 함께 BEGIN 표현식을 사용하면 여러 번의 로그인 시도 실패(BEGIN)를 캡처한 다음 로그인 성공(EXPLICIT END)을 캡처할 수 있습니다.

TIMEOUT 및 TIMEWINDOW 표현식을 사용하여 트랜잭션 조회의 세션에 대해 시간 필터를 적용하십시오.

표현식

다음에서 설명하는 표현식을 사용하여 트랜잭션 AQL 조회를 세분화하십시오.

표 1. AQL 트랜잭션 조회 표현식
조회 표현식 설명
BEGIN BEGIN 표현식이 충족되는 이벤트를 가져오거나 이전 이벤트가 세션을 종료할 때 세션이 시작됩니다.
EXPLICIT BEGIN EXPLICIT BEGIN 표현식이 true인 경우에만 새 세션을 시작합니다.
END END 표현식이 true인 이벤트를 가져오거나 다음 이벤트가 새 세션을 시작할 때 세션이 종료됩니다.
EXPLICIT END EXPLICIT END 표현식이 true인 경우에만 현재 세션을 닫습니다.
TIMEOUT 이전 이벤트가 발생한 시간에서 현재 이벤트가 발생한 시간까지 지정된 TIMEOUT 기간이 경과하면 세션을 닫습니다.
TIMEWINDOW 세션 시간을 추적합니다.

첫 번째 이벤트가 발생한 시간에서 현재 이벤트가 발생한 시간까지 지정된 TIMEWINDOW 기간이 경과하면 세션을 닫습니다.

구문
SESSION BY 
<TimeExpression> <ExpressionList> 
[EXPLICIT] BEGIN <booleanExpression>  
[EXPLICIT] END <booleanExpression> 
TIMEOUT <IntegerLiteral millieseconds> 
TIMEWINDOW <IntegerLiteral SECONDS|MINUTES|HOURS|DAYS>

다음 예제는 사용 가능한 조회 표현식의 다양한 결합을 사용하여 얻은 결과의 예제를 보여줍니다.

BEGIN 및 END 표현식

BEGIN 표현식은 이벤트가 BEGIN 표현식과 일치하거나 이전 이벤트가 세션을 종료할 때 세션을 시작합니다.

END 표현식은 이벤트에 대한 END 표현식이 true이거나 다음 이벤트가 새 세션을 시작할 때 세션을 종료합니다.

BEGIN 및 END 표현식과 함께 EXPLICIT 표현식을 사용하여 결과 세트를 세분화하는 더 정확한 필터를 적용합니다.

다음 조회 및 결과 예제를 참조하십시오.

다음 조회 예제는 BEGIN 및 END 표현식을 사용합니다.

Select sessionId, 
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss') 
start_time, username, sourceip, 
category from events into TR1 
where username = 'user_x' 
SESSION BY starttime username, sourceip 
BEGIN category=16001 
END category=16003 
start '2016-12-10 16:00' stop '2016-12-10 23:30'
이벤트 카테고리 16001은 콘솔에서 사용자 로그인 또는 로그아웃 이벤트를 나타내고, 이벤트 카테고리 16003은 사용자가 백업 시작 또는 보고서 생성과 같은 프로세스를 시작했음을 나타냅니다.

다음 표에서는 BEGIN 및 END를 사용하는 조회의 결과를 보여줍니다.

표 2. BEGIN 및 END 조회 결과
sessionID start_time 사용자 이름 sourceip 카테고리
1 2016-12-10 16:00:06 user_x 10.2.2.10 16001
1 2016-12-10 16:00:06 user_x 10.2.2.10 16003
2 2016-12-10 16:00:06 user_x 10.2.2.10 16003
3 2016-12-10 16:00:10 user_x 10.2.2.10 16001
3 2016-12-10 16:00:10 user_x 10.2.2.10 16003
4 2016-12-10 16:00:11 user_x 10.2.2.10 16003
3 2016-12-10 16:00:11 user_x 10.2.2.10 16001
3 2016-12-10 16:00:11 user_x 10.2.2.10 16003
참고: Sessionid 2는 이를 닫는 하나의 이벤트로만 구성됩니다 (카테고리 16003). 하나의 이벤트가 있는 세션은 예외이며 발생할 수 있습니다.

EXPLICIT BEGIN 및 END 표현식

세션이 시작되지 않고 이벤트가 EXPLICIT BEGIN 이벤트가 아닌 경우 이벤트를 건너뜁니다.

Select sessionId, 
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss') 
start_time, username, sourceip, 
category from events into TR2 
where username='user_x' 
SESSION BY starttime username, sourceip 
EXPLICIT BEGIN category=16001 
END category=16003 start '2016-12-10 16:00' 
stop '2016-12-10 23:30'

다음 표에서는 EXPLICIT BEGIN 및 END를 사용하는 조회의 결과를 보여줍니다.

표 3. EXPLICIT BEGIN 및 END 조회 결과
sessionID start_time 사용자 이름 sourceip 카테고리
1 2016-12-10 16:00:06 user_x 10.2.2.10 16001
1 2016-12-10 16:00:06 user_x 10.2.2.10 16003
2 2016-12-10 16:00:07 user_x 10.2.2.10 16001
2 2016-12-10 16:00:07 user_x 10.2.2.10 16003
3 2016-12-10 16:00:11 user_x 10.2.2.10 16001
3 2016-12-10 16:00:11 user_x 10.2.2.10 16003
3 2016-12-10 16:00:11 user_x 10.2.2.10 16003
4 2016-12-10 16:00:14 user_x 10.2.2.10 16001
5 2016-12-10 16:00:15 user_x 10.2.2.10 16001
5 2016-12-10 16:00:15 user_x 10.2.2.10 16003

EXPLICIT BEGIN 표현식을 충족하는 이벤트만 리턴됩니다.

EXPLICIT BEGIN 및 END의 Sessionid 2 및 Sessionid 4는 EXPLICIT BEGIN 표현식을 충족하지 않습니다.

BEGIN 및 EXPLICIT END

EXPLICIT END 표현식이 true인 경우에만 현재 세션을 닫으십시오. EXPLICIT END 표현식이 true이면 세션에는 BEGIN 이벤트에 대한 검사가 더 이상 없습니다.

단일 세션의 여러 BEGIN 이벤트가 하나의 EXPLICIT END 표현식과 연관될 수 있습니다. 예를 들어, EXPLICIT END 표현식을 사용하면 특정 시간 간격(세션 제한시간) 동안 로그인에 성공하기까지 여러 번의 로그인 시도 실패를 계수할 수 있습니다.

다음 조회 예제는 BEGIN 및 EXPLICIT END 표현식을 사용합니다.

Select sessionId, 
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss') 
start_time, username, sourceip, 
category from events into TR3 
where username = 'user_x' 
SESSION BY starttime username, sourceip 
BEGIN category=16001 
EXPLICIT END category=16003 
start '2016-12-10 16:00' 
stop '2016-12-10 23:30'

다음 표에서는 BEGIN 및 EXPLICIT END 표현식을 사용하는 조회의 결과를 보여줍니다.

표 4. BEGIN 및 EXPLICIT END 조회 결과
sessionID start_time 사용자 이름 sourceip 카테고리
1 2016-12-10 16:00:06 user_x 10.2.2.10 16001
1 2016-12-10 16:00:06 user_x 10.2.2.10 16003
2 2016-12-10 16:00:07 user_x 10.2.2.10 16003
2 2016-12-10 16:00:10 user_x 10.2.2.10 16001
2 2016-12-10 16:00:10 user_x 10.2.2.10 16003
3 2016-12-10 16:00:11 user_x 10.2.2.10 16001
3 2016-12-10 16:00:11 user_x 10.2.2.10 16003
4 2016-12-10 16:00:12 user_x 10.2.2.10 16003
4 2016-12-10 16:00:12 user_x 10.2.2.10 16001
4 2016-12-10 16:00:12 user_x 10.2.2.10 16003
5 2016-12-10 16:00:13 user_x 10.2.2.10 16001
4 2016-12-10 16:00:11 user_x 10.2.2.10 16003

EXPLICIT BEGIN 및 EXPLICIT END

세션이 시작되지 않고 이벤트가 EXPLICIT BEGIN 이벤트가 아닌 경우 이벤트를 무시합니다.

EXPLICIT END 표현식이 true인 경우에만 현재 세션을 닫으십시오. EXPLICIT END 표현식이 true이면 세션에는 BEGIN 이벤트에 대한 검사가 더 이상 없습니다.

다음 조회 예제는 EXPLICIT BEGIN 및 EXPLICIT END 표현식을 모두 사용합니다.

Select sessionId, 
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss') 
start_time, username, sourceip, 
category from events into TR4 
where username = 'user_x' 
SESSION BY starttime username, sourceip 
EXPLICIT BEGIN category=16001 
EXPLICIT END category=16003 
start '2016-12-10 16:00' 
stop '2016-12-10 23:30'

다음 표에서는 EXPLICIT BEGIN 및 EXPLICIT END 표현식을 모두 사용하는 조회의 결과를 보여줍니다.

표 5. EXPLICIT BEGIN 및 EXPLICIT END 조회 결과
sessionID start_time 사용자 이름 sourceip 카테고리
1 2016-12-10 16:00:06 user_x 10.2.2.10 16001
1 2016-12-10 16:00:06 user_x 10.2.2.10 16003
2 2016-12-10 16:00:10 user_x 10.2.2.10 16001
2 2016-12-10 16:00:10 user_x 10.2.2.10 16003
3 2016-12-10 16:00:11 user_x 10.2.2.10 16001
3 2016-12-10 16:00:12 user_x 10.2.2.10 16001
3 2016-12-10 16:00:12 user_x 10.2.2.10 16003
4 2016-12-10 16:00:13 user_x 10.2.2.10 16001
4 2016-12-10 16:00:14 user_x 10.2.2.10 16001
4 2016-12-10 16:00:14 user_x 10.2.2.10 16003
5 2016-12-10 16:00:15 user_x 10.2.2.10 16001
5 2016-12-10 16:00:15 user_x 10.2.2.10 16003

TIMEOUT

이전 이벤트가 발생한 시간에서 현재 이벤트가 발생한 시간까지 지정된 TIMEOUT 기간이 경과하면 세션을 닫습니다. 현재 이벤트는 새 세션의 파트가 됩니다. TIMEOUT 값은 밀리초 단위로 지정됩니다.

다음 조회 예제는 TIMEOUT 표현식을 사용합니다.

Select sessionId, 
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss.SSS') 
start_time, username, sourceip, 
category from events into TR5 
where username='user_x' 
SESSION BY starttime username, sourceip 
BEGIN category=16001 
EXPLICIT END category=16003 
TIMEOUT 3600 
start '2016-12-10 16:00' 
stop '2016-12-10 23:30'

다음 표에서는 TIMEOUT을 사용하는 조회의 결과를 보여줍니다.

표 6. TIMEOUT 조회 결과
sessionID start_time 사용자 이름 sourceip 카테고리
1 2016-12-10 16:00:06.716 user_x 10.2.2.10 16003
2 2016-12-10 16:00:10.328 user_x 10.2.2.10 16001

Sessionid 1이 종료되고 3600의 TIMEOUT이 초과되어 sessionid 2가 시작됩니다.

TIMEWINDOW

세션 시간을 추적합니다. 첫 번째 이벤트가 발생한 시간에서 현재 이벤트가 발생한 시간까지 지정된 TIMEWINDOW 기간이 경과하면 세션을 닫습니다. 현재 이벤트는 새 세션의 파트가 됩니다. TIMEWINDOW 값은 초, 분, 시간 또는 일 단위로 지정할 수 있습니다.

다음 조회 예제는 TIMEWINDOW 표현식을 사용합니다.

Select sessionId, 
DATEFORMAT(starttime,'YYYY-MM-dd HH:mm:ss.SSS') 
start_time, username, sourceip, 
category from events into TR6 
where username='user_x' 
SESSION BY starttime username, sourceip 
BEGIN category=16001 
EXPLICIT END category=16003 
TIMEWINDOW 3000 
start '2016-12-10 16:00' 
stop '2016-12-10 23:30'

다음 표에서는 TIMEWINDOW 표현식을 사용하는 조회의 결과를 보여줍니다.

표 7. TIMEWINDOW 조회 결과
sessionID start_time 사용자 이름 sourceip 카테고리
1 2016-12-10 16:00:06.415 user_x 10.2.2.10 16001
1 2016-12-10 16:00:06.433 user_x 10.2.2.10 16003
2 2016-12-10 16:00:06.716 user_x 10.2.2.10 16003
3 2016-12-10 16:00:10.328 user_x 10.2.2.10 16001
3 2016-12-10 16:00:06.328 user_x 10.2.2.10 16003

Sessionid 1은 TIMEWINDOW 표현식 시간 내에 있지만, 3600의 TIMEWINDOW가 초과되어 sessionid 2가 종료되었습니다.