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

Simple Log Service:SPL構文

最終更新日:Jan 20, 2025

このトピックでは、Simple Log Service Processing Language (SPL) の実装、構文、および命令式について説明します。

SPLのしくみ

Simple Log Serviceは、Logtail収集インジェストプロセッサスキャンベースのクエリとログ分析ルールベースのデータ消費データ変換 (新バージョン)ログクエリと分析の機能でSPLをサポートしています。 次の図は、SPLの仕組みを示しています。

説明

さまざまなシナリオでSPLがサポートする機能の詳細については、「SPL in different scenarios」および「SPL case」をご参照ください。

SPL-SPL Doc - ch.jpeg

制限事項

カテゴリ

項目

Logtailコレクション

取り込みプロセッサ

リアルタイム消費

データ変換の概要 (新バージョン)

スキャンベースのクエリ

SPLの複雑さ

スクリプトパイプラインレベルの数

16

16

16

16

16

スクリプト長

64 KB

64 KB

10 KB

10 KB

64 KB

SPLランタイム

メモリ容量

重要

詳細については、「エラー処理」をご参照ください。

50 MB

1 GB

1 GB

1 GB

2 GB

タイムアウト時間

重要

詳細については、「エラー処理」をご参照ください。

1 秒

5 秒

5 秒

5 秒

2 秒

SPL構文

SPLステートメント

SPLステートメントは、マルチレベルデータ処理をサポートし、接続のパイプラインシンボルとして垂直バー (|) を使用し、セミコロン (;) で終わります。 次のセクションでは、SPL構文について説明します。

  • 構文

    <data-source> | <spl-expr> | <spl-expr> ;
  • パラメーター

    パラメーター

    説明

    データソース

    LogstoreとSPL定義のデータセットを含むデータソース。

    例: * | project status, body

    さまざまなシナリオでSPLでサポートされているデータソースの詳細については、「さまざまなシナリオでのSPL」をご参照ください。

    spl-expr

    データ処理式。 詳細は、「SPL命令式」をご参照ください。

構文シンボル

シンボル

説明

*

SPLステートメントのデータソースとしてLogstoreを指定できるプレースホルダーです。

.

SPL文がピリオド (.) で始まる場合のSPL構文のキーワード。

|

SPLパイプラインシンボル。SPL命令式を導入するために使用されます。 形式:| <spl-cmd> ....

;

SPLステートメントの終了識別子。 このシンボルは、単一のステートメントまたは複数のステートメントの最後のステートメントではオプションです。

'...'

文字列定数を囲むために使用される引用符。

"..."

フィールド名またはフィールド名パターンを囲むために使用される引用符。

--

単一行のコンテンツのコメントシンボル。

/*...*/

複数行のコンテンツのコメント記号。

¥

名前付きデータセット参照のシンボル。 形式: $<dataset-name>

SPLデータ型

次の表に、SPLでサポートされているデータ型を示します。

カテゴリ

データ型

説明

基本的な数値データ型

BOOLEAN

BOOLEANデータ型。

TINYINT

幅が8ビットの整数。

SMALLINT

16ビット幅の整数。

INTEGER

幅が32ビットの整数。

BIGINT

64ビットの幅を持つ整数。

ハゲイント

幅が128ビットの整数。

REAL

32ビット幅の可変精度浮動小数点数。

DOUBLE

64ビット幅の可変精度浮動小数点数。

TIMESTAMP

ナノ秒の精度のUNIXタイムスタンプ。

日付

日付データ型。 書式 : YYYY-MM-DD

VARCHAR

可変長の文字データ型。

VARBINARY

可変長のバイナリデータ型。

構造化数値データ型

ARRAY

配列データ型。 ブラケット ([]) は、対応するインデックスに基づいて配列内の要素にアクセスするために使用されます。 インデックスは1から始まります。

例: * | extend a = ARRAY [0,1, 2] | extend b = a[1]

MAP

ディクショナリのデータ型。 ディクショナリキーは、基本的な数値データ型である必要があります。 ディクショナリ値は、任意のデータ型とすることができる。 ブラケット ([]) は、辞書内の要素にアクセスするために使用されます。

例: * | extend a = MAP(ARRAY['foo', 'bar'], ARRAY [0,1]) | extend b = a['foo']

JSONデータ型

JSON

JSONデータ型。

SPLベースのデータ処理中にデータ型を変換する方法の詳細については、「一般的なリファレンス」をご参照ください。

SPL命令式

命令式の構文

cmd -option=<option> -option ... <expression>, ... as <output>, ...

パラメーター

パラメーター

説明

cmd

命令の名前。

オプション

必要に応じて、 命令の実行パラメータ。 パラメーター名を指定し、ハイフン (-) で開始する必要があります。 複数の実行パラメーターを任意の順序で指定できます。

次のパラメータ形式がサポートされています。

  • -option=<option>: 命令を実行するパラメーターをキーと値のペア形式で指定します。

  • -option: フィーチャーのスイッチをオンにするかどうかを指定します。 デフォルトでは、すべてのスイッチがオフになっています。 このパラメーターを設定すると、フィーチャーのスイッチがオンになります。

expression

必須。 データソースの処理ロジック。 パラメーター名を指定する必要はありません。 <expression> パラメータの位置は、命令の定義に従わなければならない。

次のタイプの式がサポートされています。

  • SPL式

    • フィールド名またはフィールド名パターン (コンテンツなど) を照合するために使用される式。 [a-zA-Z_] 以外の文字を指定する場合は、二重引用符 ("") で囲みます。 例: "__tag __:__ path__"

    • level='INFO' など、フィールドに値を割り当てるために使用される式。 正規表現の抽出結果を値として別のフィールドに割り当てることができます。 例: msg=regex_extract(content, '\S +')

  • SQL式

    • データの計算結果を返すために使用される式。 例: cast(status as int)>=500

アウトプット

処理結果を含む出力フィールド。 例: | parse-csv content as a, b, c

注意事項

次の表に、SPLでサポートされている手順を示します。

指示カテゴリ

命令名

説明

フィールド処理命令

project

この命令は、指定されたパターンに一致するフィールドを保持し、指定されたフィールドの名前を変更します。 命令実行中、すべての保持関連式は、リネーム関連式の前に実行される。

project-away

この命令は、指定されたパターンに一致するフィールドを削除し、他のすべてのフィールドをそのまま保持します。

project-rename

この命令は、指定されたフィールドの名前を変更し、他のすべてのフィールドをそのまま保持します。

expand-values

この命令は、指定されたフィールドの最初のレイヤーのJSONオブジェクトを展開し、複数の結果を生成します。

構造化データのSQL計算命令

伸ばす

この命令は、SQL式ベースのデータ計算の結果に基づいてフィールドを作成します。 サポートされているSQL関数の詳細については、「SPLでサポートされているSQL関数のリスト」をご参照ください。

どこで

この命令は、SQL式ベースのデータ計算の結果に基づいてデータをフィルタリングします。 指定されたSQL式に一致するデータは保持されます。 サポートされているSQL関数の詳細については、「SPLでサポートされているSQL関数のリスト」をご参照ください。

半構造化データの抽出手順

parse-regexp

この命令は、指定された正規表現のグループに一致する情報を指定されたフィールドから抽出します。

parse-csv

指定されたフィールドからCSV形式の情報を抽出します。

parse-json

この命令は、指定されたフィールドから第1層のJSON情報を抽出します。

parse-kv

この命令は、指定されたフィールドからキーと値のペア情報を抽出します。