AQL のデータ計算および書式設定の関数
Ariel データベースから取得した検索結果に対して、Ariel 照会言語 (AQL) の計算および書式設定の関数を使用します。
以下のリストで、計算およびデータの書式設定に使用される AQL 関数について説明します。
BASE64
- 目的
- バイナリー・データを表す Base64 エンコード・ストリングを返します。
- 例
SELECT BASE64(payload) FROM events
CONCAT
- 目的
- 渡されたすべてのストリングを 1 つのストリングに連結します。
- 例
SELECT CONCAT(username, ':', sourceip, ':', destinationip) FROM events LIMIT 5
DATEFORMAT
- 目的
- 1970 年 1 月 1 日の協定世界時 (UTC) 00:00:00 からの時間 (ミリ秒) をユーザーが判読可能な形式に書式設定します。
- 例
SELECT DATEFORMAT(startTime, 'yyyy-MM-dd hh:mm:ss') AS StartTime FROM eventsSELECT DATEFORMAT(starttime,'yyyy-MM-dd hh:mm') AS 'Start Time', DATEFORMAT(endtime, 'yyyy-MM-dd hh:mm') AS Storage_time, QIDDESCRIPTION(qid) AS 'Event Name' FROM events
DOUBLE
- 目的
- 数値を表す値を double 型に変換します。
- 例
DOUBLE('1234')
LONG
- 目的
- 数値を表す値を長整数に変換します。
- 例
SELECT destinationip, LONG(SUM(sourcebytes+destinationbytes)) AS TotalBytes FROM flows GROUP BY sourceip
PARSEDATETIME
- 目的
- 時刻値 (例:
PARSEDATETIME('time reference')) をパーサーに渡します。 time reference は、照会の解析時刻を示します。
- 例
SELECT * FROM events START PARSEDATETIME('1 hour ago')
PARSETIMESTAMP
- 目的
- 日時のテキスト表現を解析し、UNIX エポック時間に変換します。
例えば、次のテキスト日付形式を解析します。
Thursday, August 24, 2017 3:30:32 PM GMT +01:00 および次のエポック・タイムスタンプ: 1503588632 に変換します。
- 時刻形式の変換の仕組みを示す例
次の例は、DATEFORMAT 関数を使用してエポック時間をどのように指定された日付形式でテキスト・タイム・スタンプに変換し、さらに PARSETIMESTAMP 関数を使用してテキスト・タイム・スタンプをどのようにエポック時間の形式に変換するかを実際に示しています。
SELECT starttime, DATEFORMAT(starttime,'EEE, MMM d, "yyyy"') AS "text time format", PARSETIMESTAMP('EEE, MMM d, "yyyy"', "text time format") AS 'epoch time returned' from events limit 5次の例は、照会からの出力を抜き出して示したものです。
starttime text time format epoch time returned 1503920389888 Mon, M08 28, "2017" 1503920389888
- 時間計算を実行するために、PARSETIMESTAMP を使用してどのように時間をエポック時間に変換するかを示す例。
次の例では、ログアウト時間からログイン時間までの間隔が 1 時間未満である場合にイベントが返されます。
EEE, d MMM yyyy HH:mm:ss.SSSZ 時刻形式は、使用する可能性がある時刻形式の 1 つの例にすぎません。my_login および my_logout は、既知の時刻形式のカスタム・プロパティーです (例: EEE, MMM d, "yy")。
SELECT * from events WHERE PARSETIMESTAMP('EEE, d MMM yyyy HH:mm:ss.SSSZ', my_logout) - PARSETIMESTAMP('EEE, d MMM yyyy HH:mm:ss.SSSZ', my_login) < 3600000 last 10 days
NOW
- 目的
- 1970 年 1 月 1 日の協定世界時 (UTC) 00:00:00 からの時間をミリ秒で表現した現在時刻を返します。
- 例
SELECT ASSETUSER(sourceip, NOW()) AS 'Asset user' FROM events
LOWER
- 目的
ストリングをすべて小文字にして返します。
- 例
SELECT LOWER(username), LOWER(LOGSOURCENAME(logsourceid)) FROM events
REPLACEALL
- 目的
- 正規表現と突き合わせ、すべての一致をテキストで置換します。
- 例
REPLACEALL('\d{16}', username, 'censored')
REPLACEFIRST
- 目的
- 正規表現と突き合わせ、最初の一致をテキストで置換します。
- 例
REPLACEFIRST('\d{16}', username, 'censored')
STR
- 目的
- 任意のパラメーターをストリングに変換します。
- 例
STR(sourceIP)
STRLEN
- 目的
- このストリングの長さを返します。
- 例
SELECT STRLEN(sourceIP), STRLEN(username) from events
STRPOS
- 目的
- あるストリング内の別のストリングの位置 (インデックス - 先頭はゼロ) を返します。 ストリング内で、指定したサブストリングのインデックスを検索します。 オプションで、指定したパターンの検索を開始する位置 (インデックス) を示す追加パラメーターを指定できます。
- 例
SELECT STRPOS(username, 'name') FROM events
SUBSTRING
- 目的
- 文字の範囲をコピーして新しいストリングを作成します。
- 例
SELECT SUBSTRING(userName, 0, 3) FROM events
UPPER
- 目的
- ストリングをすべて大文字にして返します。
- 例
SELECT UPPER(username), UPPER(LOGSOURCENAME(logsourceid)) FROM events
UTF8
- 目的
- バイト配列の UTF8 ストリングを返します。
- 例
SELECT UTF8(payload) FROM events WHERE sourceip='192.0.2.0'