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

Simple Log Service:データ構造

最終更新日:Aug 27, 2024

このトピックでは、データ変換構文に関連するデータ構造について説明します。

基本的なデータ構造

次の表に、さまざまなタイプの基本データ構造を示します。

データ型

説明

Integer

フィールド値として整数を使用できます。 整数をパラメーターの値として関数に渡すこともできます。

たとえば、e_set("f1", 100) は、f1フィールドの値が100に設定されていることを示します。

浮く

フィールド値としてfloat値を使用できます。 float値をパラメーターの値として関数に渡すこともできます。

例えば、e_set("f1", 1.5) は、f1フィールドの値が1.5に設定されることを示す。

String

文字列は複数の形式で指定できます。 例:

  • 「abc」「abc」に相当します。 文字列に二重引用符 (") が含まれている場合は、'abc" xyz' 形式で文字列を指定できます。 バックスラッシュ (\) を使用して、"abc\" xyz "形式の二重引用符をエスケープすることもできます。

    バックスラッシュ (\) は特殊文字をエスケープするために使用されます。 たとえば、"\\abc\\xyz"\abc\xyz文字列を示します。

  • r "\\10.64.1.1\share\folder""\\\\\ 10.64.1.1\\share\\folder" は、\\10.64.1.1\share\folder文字列を示します。

  • マルチバイト文字列は Unicode でエンコードされます。 たとえば、漢字 2 文字で構成される文字列 は 2 です。

  • 正規表現は文字列として表されます。

説明

フィールド値は二重引用符 ("") で囲む必要があります。 一重引用符 ('') を使用して文字列を囲み、二重引用符 (" ") を使用してフィールド値を囲むことができます。 たとえば、e_search("domain: '/url/test.jsp'") は無効であり、e_search('domain: "/url/test.jsp"') は有効です。

Byte

例: b'abc' バイトは、文字列の形式とは異なる形式を使用してメモリ内でエンコードされます。 バイトは特殊関数によって受信され、返されます。

なし

Nonenullはどちらもnull値を示します。 関数の一部の名前付きパラメーターでは、Noneをデフォルト値として使用して、特定のデフォルト動作を示します。

説明

なしまたはnullは空の文字列とは異なります。

List

配列。 例: [1,2,3,4] 。

  • 一部の関数はリストをパラメータとして受け入れます。 例: e_dict_map("dict data", ["f1", "f2", "f3"], ...)

  • 一部の関数はリストを返します。 たとえば、json_select関数を呼び出して配列を抽出すると、リストが返されます。

Tuple

タプルとリストは同じように機能します。 例: (1,2,3,4)

辞書

ディクショナリは、{"key": "value" 、"k2": "v2" 、...} 形式のキーと値のペアのコレクションです。 キーはほとんどの場合文字列であり、繰り返すことはできません。 キーの値は、前述のデータ型にすることができます。 キーと値のペアは、順序付けされていない方法でハッシュテーブルに格納されます。

  • イベントは特別な辞書です。

  • 一部の関数は、特定の形式の辞書を受け入れます。 例: {"key": [1,2,3], "key2": {"k3": "v3"}}

  • 辞書構造は、フィールドを辞書にマッピングするための入力データとして使用される。

Boolean

例: TrueFalsetruefalse

テーブル

各テーブルは複数の列で構成されています。 外部リソースから複数行のCSV形式のデータを読み込むことで、テーブルを作成できます。 ApsaraDB RDSインスタンスとLogstoreから複数の列のデータをロードしてテーブルを構築することもできます。 テーブルは、データマッピングやエンリッチメントなどの高度な操作に適しています。

Datetime object

datetimeオブジェクトは、日付および時刻情報を示すメモリオブジェクトである。 UNIX タイムスタンプまたはフォーマットされた時間文字列に変換できます。 datetimeオブジェクトは、さらに変換するためにdt_like関数に渡すことができます。

イベントタイプ

次のリストは、イベントタイプを示しています。

  • 基本タイプ

    ログデータは、データ変換プロセス中に辞書構造に処理されます。 例: {"__topic__": "access_log", "content": "....."}

    辞書のキーと値は、ログのフィールドと値に対応します。

    説明

    イベントのキーと値は文字列であり、キーは一意である必要があります。

  • メタフィールド

    次のメタフィールドがサポートされています。

    • __time__: ログデータの書き込み時に指定されたログ時間。 値は整数を表す文字列で、UNIXの時間形式に従います。 1970年1月1日木曜日00:00:00から経過した秒数です。

    • __topic__: ログのトピック。 トピックは、Logstoreでログをグループ化するために使用されます。 ログがLogstoreに書き込まれるときに、ログのトピックを指定できます。 ログを照会するときにトピックを指定できます。

    • __source__: ログのソース。 例えば、このフィールドの値は、ログが生成されるサーバのIPアドレスとすることができる。

  • __time__フィールドの変更

    __time__ フィールドの値を変更すると、ログのイベント時間を変更できます。 日付と時刻の関数を使用して、__time__ フィールドでより多くの操作を実行できます。

    説明

    __time__フィールドが削除された場合、ログが処理されたシステム時刻が、ログが宛先ログストアに書き込まれるイベント時刻として使用されます。

  • タグ

    タグは、ログのフィールドを区別するために使用されます。 タグは __tag __: Name形式です。

    • ソースLogstoreがパブリックIPアドレスを記録するように設定されている場合、ログにはtag: __tag __:__ receive_time__ が含まれます。

    • コンテナログには、コンテナ関連のタグが多数含まれています。 例: __tag __:__ container_name__

    • タグは追加および変更できます。 たとえば、type: e_set("__tag __: type", "access_log") という名前のタグを追加できます。

  • 値の割り当て中の自動変換

    イベントのキーと値は文字列です。 キーに値を割り当てる場合、またはイベント内のキーに新しい値を指定する場合、キーとキーの値は自動的に文字列に変換されます。 例:

    e_set("v1", 12.3)
    e_set("v2", True)

    v112.3文字列に設定し、v2true文字列に設定します。

    次の表に、さまざまなデータ型を文字列に変換する例を示します。

    オリジナルタイプ

    新しいタイプ

    Integer

    1

    String

    "1"

    浮く

    1.2

    String

    「1.2」

    Boolean

    String

    「真」

    Byte

    b "123"

    UTF-8でエンコードされた文字列

    「123」

    Tuple

    • 例1: (1, 2, 3)

    • 例2: ("a", 1)

    リストを表す文字列

    • 例1: "[1, 2, 3]"

    • 例2: "[\" a\", 1]"

    List

    • 例1: [1,2,3]

    • 例2: ["a", 1]

    String

    • 例1: "[1, 2, 3]"

    • 例2: "[\" a\", 1]"

    辞書

    {"1":2, "3":4}

    String

    "{\" 1\": 2, \" 3\": 4}"

    Datetime

    datetime(2018, 10, 10, 10, 10, 10)

    ISO 形式で時間を表す文字列

    2018-10-10 10:10

固定識別子

データ変換機能は、固定識別子を提供する。 識別子を使用してコードを単純化できます。

ID

データ型

説明

true

Boolean

Trueに相当します。

false

Boolean

Falseに相当します。

null

なし

なしに相当します。

F_TAGS

String

TAGフィールドを表す正規表現。 「__tag __:.+ 」と同等です。

F_META

String

TAG__topic__ 、および __source__ フィールドの組み合わせを表す正規表現。 __tag __:.+ |__ topic __|__ source__ に相当します。

F_TIME

String

__time__ フィールドの名前。 __time__ に相当します。

F_PACK_META

String

pack metaフィールドを表す正規表現。 「__pack_meta __|__ tag __:__ pack_id__」と同等です。

F_RECEIVE_TIME

String

サーバーがログを受信する時刻のtagフィールド。 "__tag __:__ receive_time__" と同じです。

C_JOB_REGION

String

データ変換ジョブのリージョンID。 例: cn-hangzhou 例えば、e_set("job_region", C_JOB_REGION) は、データ変換ジョブのリージョンIDをjob_regionフィールドに割り当てる。

C_JOB_プロジェクト

String

データ変換ジョブが属するプロジェクトの名前。 例: my-sls-project たとえば、e_set("job_project", C_JOB_PROJECT) は、データ変換ジョブが属するプロジェクトの名前をjob_projectフィールドに割り当てます。

C_JOB_NAME

String

データ変換ジョブの構成名。 例: etl-1649227848-642277。 たとえば、e_set("job_name", C_JOB_NAME) は、データ変換ジョブの構成名をjob_nameフィールドに割り当てます。

C_JOB_ID

String

データ変換ジョブの実行ID。 例: 73b96061b8c1c2101d558139bf641ea 9 たとえば、e_set("job_id", C_JOB_ID) は、データ変換ジョブの実行IDをjob_idフィールドに割り当てます。

JSON オブジェクト

JSONオブジェクトは、JSON式関数json_selectまたはjson_parseを使用してデータを解析した後に取得するオブジェクトです。 JSONオブジェクトは、基本的なデータ構造のデータで構成されます。 次の表に、文字列のJSONオブジェクトへの変換例を示します。

文字列

JSONオブジェクト

データ型

1

1

Integer

1.2

1.2

浮く

true

Boolean

false

Boolean

"abc"

"abc"

String

null

なし

なし

["v1", "v2", "v3"]

["v1", "v2", "v3"]

List

["v1", 3, 4.0]

["v1", 3, 4.0]

List

{"v1": 100, "v2": "good"}

{"v1": 100, "v2": "good"}

辞書

{"v1": {"v11": 100, "v2": 200}, "v3": "good"}

{"v1": {"v11": 100, "v2": 200}, "v3": "good"}

辞書