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

Simple Log Service:SPLの概要

最終更新日:Dec 10, 2024

このトピックでは、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

64

16

スクリプト長

64KB

64KB

64KB

128KB

64KB

SPLランタイム

メモリ容量

重要

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

50MB

1GB

1GB

1GB

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ステートメントの終了識別子。 このシンボルは、単一のステートメントまたは複数のステートメントの最後のステートメントではオプションです。

'...'

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

"..."

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

--

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

/*...*/

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

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-rename

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

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

伸ばす

SQL式ベースのデータ計算の結果に基づいてフィールドを作成します。

SPLでサポートされているSQL関数の詳細については、「SPLでサポートされているSQL関数」をご参照ください。

where

SQL式ベースのデータ計算の結果に基づいてデータをフィルタリングします。

SPLでサポートされているSQL関数の詳細については、「SPLでサポートされているSQL関数」をご参照ください。

半構造化データ抽出命令

parse-csv

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

parse-json

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

parse-regexp

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