トランザクション照会の詳細化

EXPLICIT 式を BEGIN 式および END 式と一緒に使用することで、トランザクション AQL 照会を詳細化します。 また、TIMEOUT 式と TIMEWINDOW 式を使用して、時間間隔を指定します。

EXPLICIT 式を BEGIN 式および END 式と一緒に使用して、より詳細なフィルタリングをトランザクション照会に適用します。

例えば、BEGIN 式を EXPLICIT END 式と一緒に使用して、いくつかの失敗したログイン試行で始まり (BEGIN)、後に 1 回の成功したログインが続く (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 式が イベントについて true である場合、または次のイベントが新しいセッションを開始した場合、END 式がセッションを終了します。

EXPLICIT 式を BEGIN 式および END 式と一緒に使用することで、より詳細なフィルターを適用して結果セットを絞り込みます。

以下の照会および結果の例を参照してください。

以下の照会例では、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 は、それをクローズする 1 つのイベント (カテゴリー 16003) のみで構成されます。 イベントが 1 つのみのセッションは例外であり、発生することがあります。

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 イベントは、1 つの 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 が終了し、sessionid 2 が開始されます。これは、3600 の TIMEOUT が超過したためです。

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 は終了します。