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

基本的なデータ構造

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

種類 説明
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'。 バイトは、文字列の形式とは異なる形式を使用してメモリ内でエンコードされます。 Bytes受信されたと特別な機能によって返さ。
なしNoneヌルヌル値を記入。 Some名前パラメータの機能使用None特定デフォルト示すためにデフォルト値として行動。
説明 Noneまたはnullは異なるから空の文字列。
ListAnアレイ。 Example: [1,2、3,4] 。
  • 一部の関数はリストをパラメータとして受け入れます。 例: e_dict_map("dict data", ["f1", "f2", "f3"], ...)
  • Some機能リターンリスト。 たとえば、配列を抽出する json_select 関数を呼び出すと、リストが返されます。
Tupleタプルとリストは同じように機能します。 例: (1,2,3,4)
辞書ディクショナリは、{"key": "value" 、"k2": "v2" 、...} 形式のキーと値のペアのコレクションです。 キーはほとんどの場合文字列であり、繰り返すことはできません。 キーの値は、前述のデータ型にすることができます。 キーと値のペアは、順序付けされていない方法でハッシュテーブルに格納されます。
  • イベントは特別な辞書です。
  • 一部の関数は、特定の形式の辞書を受け入れます。 例: {"key": [1,2,3], "ke": {"k3": "va3"} }
  • 辞書構造は、フィールドを辞書にマッピングするための入力データとして使用される。
Boolean例: TrueFalsetrue、および false
テーブル各テーブルは複数の列で構成されています。 外部リソースから複数行のCSV形式のデータを読み込むことで、テーブルを作成できます。 ApsaraDB RDSインスタンスとLogstoreから複数の列のデータをロードしてテーブルを構築することもできます。 テーブルは、データマッピングやエンリッチメントなどの高度な操作に適しています。
Datetime objectdatetimeオブジェクトは、日付および時刻情報を示すメモリオブジェクトである。 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文字列に設定します。
    次の表に、さまざまなデータ型を文字列に変換する例を示します。
    オリジナルタイプ例:新しいタイプ例:
    Integer1String"1"
    浮く1.2String「1.2」
    BooleanString「真」
    Byteb "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(2018, 10, 10, 10, 10, 10)ISO 形式で時間を表す文字列2018-10-10 10:10

固定識別子

データ変換機能は、固定識別子を提供する。 識別子を使用してコードを単純化できます。
識別子種類説明
trueBooleanTrueに相当します。
falseBooleanFalseに相当します。
nullなしなしに相当します。
F_TAGSStringTAGフィールドを表す正規表現。"__tag __:.+" に相当します。
F_METAStringTAG__topic__ 、および __source__ フィールドの組み合わせを表す正規表現。__tag __:.+ |__ topic __|__ source__ に相当します。
F_TIMEString__time__ フィールドの名前。__time__ に相当します。
F_PACK_METAStringpack_metaフィールドを表す正規表現。"__pack_meta _|___tag __:__ pack_id__" に相当します。
F_RECEIVE_TIMEStringサーバーがログを受信した時刻のtagフィールド。"__tag __:__ receive_time__" に相当します。
C_JOB_REGIONStringデータ変換ジョブのリージョン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_NAMEStringデータ変換ジョブの構成名。 例: etl-1649227848-642277。 たとえば、e_set("job_name", C_JOB_NAME) は、データ変換ジョブの構成名をjob_nameフィールドに割り当てます。
C_JOB_IDStringデータ変換ジョブの実行ID。 例: 73b96061b8c1c2101d558139bf641ea 9 たとえば、e_set("job_id", C_JOB_ID) は、データ変換ジョブの実行IDをjob_idフィールドに割り当てます。

JSON オブジェクト

JSONオブジェクトは、JSON式関数json_selectまたはjson_parseを使用してデータを解析した後に取得するオブジェクトです。 JSONオブジェクトは、基本的なデータ構造のデータで構成されます。 次の表に、文字列のJSONオブジェクトへの変換例を示します。
StringJSON objectデータ型
11Integer
1。21.2浮く
trueBoolean
falseBoolean
"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"}辞書