signature
lineフィールドの文字列から特殊文字だけを集めたシグネチャ文字列を生成してsignatureフィールドに割り当てます。パーサーを開発する前にパターン種別ごとのログサンプルを抽出する目的で使用します。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | 加工クエリ |
| 必要な権限 | なし |
| ライセンス使用量 | 該当なし |
| 並列実行 | 対応 |
| 分散実行 | 非対応 |
構文
signatureコマンドはオプションや位置引数など、いかなるパラメーターも受け付けません。4.0.2609.0以降ではコマンド名の後に空白以外の値を入力するとエラーが発生しますが、5.0系(5.0.2605.2まで)はこの検証を行わず、そのような値を無視してそのまま実行します。
入力フィールド
| フィールド | 型 | 必須/任意 | 説明 |
|---|---|---|---|
line | string | 必須 | シグネチャを抽出する元の文字列。値がnullの場合はそのレコードをスキップします。 |
出力フィールド
| フィールド | 型 | 説明 |
|---|---|---|
signature | string | 元の文字列から英字と数字を除いた特殊文字で構成されるシグネチャ |
エラーコード
パースエラー
| エラーコード | メッセージ | 説明 |
|---|---|---|
| 21500 | unexpected-parameter | コマンド名の後にオプションや値を入力した場合。4.0.2609.0以降で発生します。5.0系(5.0.2605.2まで)ではこの検証を行いません。 |
ランタイムエラー
該当なし
説明
signatureコマンドは、lineフィールドの文字列から英字と数字を除いた特殊文字だけを抽出してsignatureフィールドに割り当てます。ダブルクォーテーション(")で囲まれた区間内の特殊文字は抽出対象から除外されます。
このコマンドは、ログデータからパターン種別を分類するのに有用です。同じシグネチャを持つログは同じ形式を共有している可能性が高いため、statsコマンドと組み合わせると種別ごとのサンプルログを抽出できます。
lineフィールドの値がない(null)レコードには、signatureフィールドが割り当てられません。レコードが1件ずつ処理される場合はこれらのレコードが結果から除外され、複数件がバッチ単位で処理される場合はsignatureフィールドを付与せず元のフィールドのまま結果に含まれます。
使用例
これらの使用例で参照するWEB_APACHE_SAMPLEテーブルを準備するには、クエリ実習用データを参照してください。
-
シグネチャ別の最初のサンプルログを抽出
table WEB_APACHE_SAMPLE | signature | stats first(line) as sample by signature各シグネチャ種別ごとに最初のログサンプルを抽出します。
-
シグネチャ別のログ件数を確認
table WEB_APACHE_SAMPLE | signature | stats count by signature | sort -countシグネチャ別のログ件数を集計して件数の多い順に並べ替えます。
-
特定のシグネチャパターンのログをフィルタリング
table WEB_APACHE_SAMPLE | signature | search signature == ". . . [.] \". .\" . ."Apacheアクセスログ形式に該当するシグネチャパターンに一致するログのみをフィルタリングします。
変更履歴
| 対象 | 導入リリース |
|---|---|
signature コマンド | Sonar 4.0以前 |
| パラメーター入力を拒否する検証(エラーコード21500) | 4.0.2609.0 |