このトピックでは、Simple Log Service Processing Language (SPL) の実装、構文、および命令式について説明します。
実装
Simple Log Serviceは、リアルタイム消費、スキャンベースのクエリ、Logtail収集のシナリオでSPLをサポートしています。 次の図は、SPLの仕組みを示しています。
さまざまなシナリオでのSPL機能の詳細については、「さまざまなシナリオでのSPL」をご参照ください。 SPLがサポートされているAlibaba Cloudリージョンの詳細については、「サポートされているリージョン」をご参照ください。
制限事項
カテゴリ | 項目 | リアルタイム消費 | スキャンベースのクエリ | Logtailコレクション |
SPLの複雑さ | スクリプトパイプラインレベルの数 | 16 | 16 | 16 |
スクリプト長 | 64 KB | 64 KB | 64 KB | |
SPLランタイム | メモリ容量 重要 詳細については、「エラー処理」をご参照ください。 | 1 GB | 2 GB | 50 MB |
タイムアウト時間 重要 詳細については、「エラー処理」をご参照ください。 | 1 秒 | 2 秒 | 1 秒 |
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ステートメントの終了識別子。 このシンボルは、単一のステートメントまたは複数のステートメントの最後のステートメントではオプションです。 |
'...' | 文字列定数を囲むために使用される引用符。 |
"..." | フィールド名またはフィールド名パターンを囲むために使用される引用符。 |
-- | 単一行のコンテンツのコメントシンボル。 |
/*...*/ | 複数行のコンテンツのコメント記号。 |
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 | 配列データ型。 ブラケット ( 例: |
MAP | ディクショナリのデータ型。 ディクショナリキーは、基本的な数値データ型である必要があります。 ディクショナリ値は、任意のデータ型とすることができる。 ブラケット ( 例: | |
JSONデータ型 | JSON | JSONデータ型。 |
SPLベースのデータ処理中にデータ型を変換する方法の詳細については、「一般的なリファレンス」をご参照ください。
SPL命令式
命令式の構文
cmd -option=<option> -option ... <expression>, ... as <output>, ...
パラメーター
パラメーター | 説明 |
cmd | 命令の名前。 |
オプション | 次のパラメータ形式がサポートされています。
|
expression | 必須。 データソースの処理ロジック。 パラメーター名を指定する必要はありません。 <expression> パラメーターの位置は、命令の定義に準拠している必要があります。 次のタイプの式がサポートされています。
|
アウトプット | 処理結果を含む出力フィールド。 例: |
注意事項
次の表に、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 | 指定された正規表現のグループに一致する情報を、指定されたフィールドから抽出します。 |