트랜잭션 조회 세분화
BEGIN 및 END 표현식과 함께 EXPLICIT 표현식을 사용하여 트랜잭션 AQL 조회를 세분화합니다. 또한 TIMEOUT 및 TIMEWINDOW 표현식을 사용하여 시간 간격을 지정합니다.
BEGIN 및 END 표현식과 함께 EXPLICIT 표현식을 사용하여 트랜잭션 조회에 보다 정확한 필터링을 적용하십시오.
예를 들어, EXPLICIT END 표현식과 함께 BEGIN 표현식을 사용하면 여러 번의 로그인 시도 실패(BEGIN)를 캡처한 다음 로그인 성공(EXPLICIT END)을 캡처할 수 있습니다.
TIMEOUT 및 TIMEWINDOW 표현식을 사용하여 트랜잭션 조회의 세션에 대해 시간 필터를 적용하십시오.
표현식
다음에서 설명하는 표현식을 사용하여 트랜잭션 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'
다음 표에서는 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 |
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를 사용하는 조회의 결과를 보여줍니다.
| 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 표현식을 사용하는 조회의 결과를 보여줍니다.
| 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 표현식을 모두 사용하는 조회의 결과를 보여줍니다.
| 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을 사용하는 조회의 결과를 보여줍니다.
| 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 표현식을 사용하는 조회의 결과를 보여줍니다.
| 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가 종료되었습니다.