すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:ファジーマッチを使用してログを照会するにはどうすればよいですか?

最終更新日:Aug 27, 2024

このトピックでは、ファジー一致を使用してログをクエリする方法について説明します。

クエリステートメントにワイルドカード文字を含めて、ファジーマッチを実装する

原理

  1. Simple Log Serviceは、ファジー一致条件に基づいて一致する最初の100ワードを照会します。

  2. 返されるデータは、一致した単語を含むログです。

ファジー一致条件のプレフィックスが短い場合、一致する単語の数は100を超える可能性があります。 この場合、一致したログの一部のみが返されます。 さらに、NOT句をワイルドカード文字と組み合わせると、一部の単語のみをフィルタリングできます。 たとえば、not abcd * ステートメントを実行しても、abcdで始まる単語が返されます。

移動方法

Simple Log Serviceのアスタリスク (*) は、文字が0個以上存在することを示します。 疑問符 (?) は、文字の1回の出現を示す。 たとえば、abc * は、単語がabcで始まる場合に一致することを示します。 ab?dは、単語がabで始まり、dで終わり、abとdの間に1文字を含む場合に単語が一致することを示します。 詳細については、「検索構文」をご参照ください。

LIKE句を使用してファジーマッチを実装する

LIKE句は、標準SQLのLIKE構文に準拠しています。 LIKE句のパーセント記号 (%) は、0個以上の文字の出現を示します。 アンダースコア (_) は、文字の1つの発生を示します。

例:

  • 名前がabcdで始まるフィールドを含むクエリログ:

    * | select * from log where key like 'abcd%'
  • 名前がabcdで始まらないフィールドを含むクエリログ:

    * | select * from log where key not like 'abcd%'

正規表現関数を使用してファジー一致を実装する

正規表現関数で正規表現を指定して、複数の単語を一致させることができます。 正規表現は文字と数字に一致し、ビジネス要件をより適切に満たすことができます。 詳細については、「正規表現関数」をご参照ください。

例:

  • * | select * from log where regexp_like(key, abc *): abcで始まる単語を返します。

  • * | select * from log where regexp_like(key, abc\d +): abcで始まる単語を返します。 さらに、abcの後に数字が続く。

  • * | select * from log where regexp_like(key, abc[xyz]): abcで始まる単語を返します。 さらに、abcの後にx、y、またはzが続く。