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

Simple Log Service:構文の概要

最終更新日:Aug 27, 2024

Simple Log Service用のPythonベースのドメイン固有言語 (DSL) は、データを効率的に変換するために使用できる200を超える組み込み関数を提供します。 このトピックでは、DSL for Simple Log Serviceの言語モード、機能カテゴリ、および実装について説明します。

言語モード

DSL for Simple Log ServiceはPythonと互換性があります。 標準モードでは、DSLはPythonのサブセットと見なすことができます。 基本的なデータ構造と式を除いて、他の構文ルールは関数を使用して編成されます。 ユーザー定義関数 (UDF) を使用する場合は、 ticket

カテゴリ

Python構文

標準モード

データ構造

Number、string、およびBoolean

サポートされています。

"" "で始まる、または終わる文字列はサポートされません。

タプル、リスト、セット、および辞書

サポートされています。

set構造はサポートされていません。 例: {1,2,3}

オブジェクト

テーブルやdatetimeオブジェクトなどの組み込みの拡張データ構造のみがサポートされています。

基本構文

プラス記号 (+) 、減算記号 (-) 、乗算記号 (×) 、除算演算子 (/) などの演算子

などの比較演算子のみ==,! =、および>and、OR、NOTなどの論理演算子は、コードで直接使用できます。 他の演算子の機能を使用するには、関数を呼び出す必要があります。

Comments

サポートされています。

変数の割り当て

サポートされていません。 値を変数に渡すには、関数を呼び出す必要があります。

条件評価

サポートされています。 関数: e_if、e_if_else、およびe_switch。

ループ

間接的にサポートされます。 ループを実装するには、ネストされた組み込み関数を使用する必要があります。 次のサンプル関数は、配列内の要素をトラバースする方法を示しています。

e_if(op_ge(op_len(json_parse(v("x"))), 1), e_set("x0", lst_get(v("x"), 0)))
e_if(op_ge(op_len(json_parse(v("x"))), 2), e_set("x1", lst_get(v("x"), 1)))

機能

Pythonの標準組み込み関数

サポートされていません。 DSL for Simple Log Serviceが提供する200以上の組み込み機能を使用できます。

関数の呼び出し

サポートされています。 パラメーターの解凍を使用する関数呼び出しはサポートされていません。

defやlambdaなどのUDF

サポートされていません。 DSL for Simple Log Serviceが提供する200以上のグローバル処理および式関数を使用できます。 ビジネス要件に基づいてこれらの機能を組み合わせることもできます。

モジュール

Python標準ライブラリのインポートと使用

サポートされていません。

スレッドとプロセスの作成

サポートされていません。

サードパーティのライブラリのインポート

サポートされていません。

外部ネットワーク接続または外部コマンド呼び出し

サポートされています。 DSL for Simple Log Serviceは、組み込みのリソースコネクタを提供します。

関数カテゴリ

DSL for Simple Log Serviceの標準モードでは、すべての操作は関数を呼び出すことによって実行されます。 DSLは、グローバル処理関数と表現関数に分類される200を超える組み込み関数を提供します。

  • グローバル処理機能

    グローバル処理関数は、ログを受信、処理、および返すために使用されます。 グローバル処理関数のみを使用して、変換ルールの各ステップを構築できます。

  • Expression functions

    式関数は通常、特定のパラメータを受け取り、特定の値を返すために使用されます。 表現関数を組み合わせて、より柔軟なロジックを定義するパラメータとしてグローバル処理関数に渡すことができます。

次の表に、グローバル処理関数と式関数を示します。

カテゴリ

ステップを作成

ログの受信

リターン結果

ログの変更

関数の組み合わせ

グローバル処理機能

サポートされています。

ログは自動的に受信されます。

ゼロから複数のログが返されます。

サポートされています。 ほとんどの場合、ログは変更できます。

サポートされています。

Expression functions

サポートされていません。

少数の式関数のみでサポートされます。 ほとんどの式関数はログを直接処理しません。

特定のデータ構造が返されます。

サポートされていません。

サポートされています。

グローバル処理機能

グローバル処理関数は、ログを受信、処理、および返すために使用されます。

説明

各ステップの最初の行には、グローバル処理関数のみを配置できます。

次の構文が使用されます。

Global Processing Function 1(..Parameters....)
Global Processing Function 2(..Parameters....)
Global Processing Function 3(..Parameters....)
Global Processing Function 4(..Parameters....)

グローバル処理機能は、フロー制御機能とイベント処理機能とにさらに分類することができる。 次の表に、関数を示します。

カテゴリ

説明

フロー制御関数

関数は、プロセスの管理、ログの受信、および特定の条件に基づいてログを処理するための他の関数の呼び出しに使用されます。

e_ife_switch、およびe_if_else

イベント処理関数

関数はログを変換するために使用されます。 ゼロから複数のログが返されます。

例:

  • e_drop_fields: ログフィールドを破棄します。

  • e_kv: ログのキーと値のペアを抽出します。

  • e_dict_map: ログを強化します。

変換ロジック:

  • 基本的な処理

    データ変換機能は、ソースLogstoreからストリーミングデータを読み取り、辞書構造の各ログを特定の関数に送信します。 次に、この機能は、変換ルールで指定された関数を順番に実行してイベントを処理し、変換結果を指定された宛先ログストアに書き込みます。

    説明

    ログのすべてのフィールドと値は文字列として送信されます。 たとえば、生ログ {"__time__": "1234567" 、"__topic__": "" 、"k1": "test"} は、e_set("f1", 200) 関数によって処理されます。 この関数は、値が200に設定されているf1フィールドを生ログに追加します。 次に、生ログは {"__time__": "1234567" 、"__topic__": "" 、"k1": "test" 、"f1": "200"} に変換されます。 このログでは、f1フィールドと値200は文字列です。

    変換ルールで指定されたイベント処理関数が順番に呼び出されます。 各関数はログを受信して処理し、処理されたログを返します。

    たとえば、e_set("type", "test") 関数は、値がtestに設定されているtypeフィールドをログに追加します。 next関数は、処理されたログを受け取り、処理します。

  • 条件評価

    • e_if: e_if関数を呼び出して、条件式をプロセスログに追加できます。 ログが指定された条件を満たさない場合、対応する操作はスキップされます。 e_if関数はifロジックを実装します。

      たとえば、e_if(e_match("status", "200"), e_regex("data", "ret: \d +", "result")) 関数は、statusフィールドの値が200かどうかをチェックします。 値が200の場合、関数は指定された正規表現を使用してdataフィールドからresultフィールドを抽出します。 そうでなければ、操作は行われない。

    • e_if_else: この関数は、if_else関数と同様に機能します。

  • 処理終了

    • 変換ルールのステップはログを返さない場合があります。 これは、関連ログが削除されたことを示します。

      たとえば、e_if(str_islower(v("result")), e_drop()) 関数を使用して、ログのresultフィールドの値が小文字のみで構成される文字列であるかどうかを確認します。 条件がtrueに評価された場合、ログは破棄され、以降の手順はこのログに対して実行されません。 システムは自動的に次のログを処理します。

    • 宛先ログストアにログが書き込まれた場合、処理は終了する。 たとえば、e_output関数を使用してログを宛先Logstoreに書き込み、ログを削除する場合、このログに対して以降の手順は実行されません。

      説明

      e_coutput関数は出力ログをコピーし、以降の手順はこのログに対して実行されます。

  • 並列処理のためのログ分割

    変換ルールのステップは、複数のログを返す場合があります。 これは、関連するログが分割されていることを示します。

    たとえば、e_split(data) 関数は、dataフィールドの値に基づいてログを2つのログに分割します。 ログのdataフィールドの値が "abc, xyz" の場合、ログは2つのログに分割されます。 1つのログでは、dataフィールドの値はabcです。 もう一方のログでは、データフィールドの値はxyzです。

    分割後に生成されたログは、後続の手順で処理されます。

Expression functions

グローバル処理関数に加えて、DSL for Simple Log Serviceは、特定のパラメーターを受け取り、特定の値を返すために使用される200式関数を提供します。 グローバル処理関数で式関数または式関数の組み合わせを呼び出すことができます。 次の構文が使用されます。

Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)

式関数は、イベントチェック関数、リソース関数、制御関数、およびその他の式関数に分類できます。 次の表に、関数を示します。

カテゴリ

説明

イベントチェック関数

関数は、ログを受信し、特定の情報を抽出し、ログを変更せずに情報を返すために使用されます。

v: ログフィールドの値を返します。 e_searchおよびe_match: ログ内のフィールドの値が指定された条件を満たすかどうかを確認します。

リソース関数

関数は、オンプレミスまたは外部リソースへのアクセス、特定のパラメータの受信、および特定の値の返却に使用されます。 戻り値のデータ型には、ディクショナリとテーブルがあります。

res_oss_file、res_rds_mysql、およびres_log_logstore_pull

制御機能

関数は、特定のパラメータを受け取り、式または条件ベースの制御に対して論理演算を実行するために使用されます。 関数は、他の式関数を呼び出して結果を返すためにも使用されます。

op_andop_orop_notop_if、およびop_coalesce

その他の式関数

関数は、特定のパラメータまたは他の関数の結果を受け取り、特定の値を返すために使用されます。

文字列関数、日付と時刻の関数、および変換関数。