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

Simple Log Service:マッピングおよび強化関数

最終更新日:Oct 31, 2024

このトピックでは、マッピング関数とエンリッチメント関数の構文とパラメーターについて説明します。 このトピックでは、関数の使用方法の例も示します。

関数

カテゴリ

関数

説明

フィールドベースのマッピング

e_dict_マップ

入力フィールドの値を指定されたデータディクショナリの値にマップし、新しいフィールドを返します。

この関数は、他の関数と一緒に使用できます。 詳細については、「e_dict_map関数を使用したログデータの強化」をご参照ください。

e_table_マップ

入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。

この関数は、他の関数と一緒に使用できます。 詳細については、「e_table_map関数を使用したHTTPレスポンスステータスコードの強化」をご参照ください。

e_tablestore_map

Tablestoreのデータテーブルをディメンションテーブルとして使用して、生ログを強化します。

e_redis_マップ

ApsaraDB for Redisのデータテーブルをディメンションテーブルとして使用して、生ログを強化します。

e_dict_map

e_dict_map関数は、入力フィールドの値を指定されたデータディクショナリの値にマップし、新しいフィールドを返します。

  • 構文

    e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite")
  • パラメーター

    パラメーター

    タイプ

    必須

    説明

    データ

    ディクト

    必須

    マッピングに使用されるデータ辞書。 このパラメーターの値は、標準形式 {key01:value01,key01:value02,...} である必要があります。 キーは文字列でなければなりません。 例: {"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}

    フィールド

    String or string list

    必須

    1つ以上のフィールド名。 このパラメーターの値に複数のフィールド名が含まれている場合、システムは次の操作を実行します。

    • システムは、フィールド名に対して順にマッピングを実行する。

    • システムがフィールドの複数の値に一致し、modeパラメーターがoverwriteに設定されている場合、システムは最後に一致した値を返します。

    • システムがフィールドの値と一致しない場合、システムはmissingパラメーターの値を返します。

    output_field

    String

    必須

    関数を返すフィールドの名前。

    case_insensitive

    ブール値

    選択可能

    マッピング中に大文字と小文字の区別を無効にするかどうかを指定します。

    • True: 大文字と小文字の区別を無効にします。 デフォルト値です。

    • False: ケースの感度を有効にします。

    説明

    データディクショナリに大文字小文字のみが異なる複数のキーが含まれ、case_insensitiveパラメーターがTrueに設定されている場合、システムは最初に入力フィールドの値を、値と同じ大文字小文字を使用するキーにマップします。 同じケースを使用するキーが存在しない場合、システムは値を複数のキーの1つにランダムにマッピングします。

    行方不明

    String

    任意

    入力フィールドに一致が見つからない場合に、output_fieldで指定されたフィールドに割り当てられる値。 デフォルト値: None。割り当てが実行されないことを示します。

    説明

    データディクショナリにアスタリスク (*) のキーが含まれている場合、missingパラメーターは無効になります。 これは、アスタリスク (*) が欠落しているパラメーターよりも優先度が高いためです。

    モード

    String

    任意

    フィールドの上書きモード。 デフォルト値: overwrite 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。

  • レスポンス

    新しいフィールドを含むログが返されます。

    • 例1: 生ログのproフィールドの値をデータディクショナリの値にマップし、protocolという名前の新しいフィールドを生成します。

      • 生ログ

        data:  123
        pro:  1
      • 変換ルール

        e_dict_map(
            {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"},
            "pro",
            "protocol",
        )
      • 結果

        data:  123
        pro:  1
        protocol:  TCP
    • 例2: 生ログのstatusフィールドの値をデータディクショナリの値にマッピングし、messageという名前の新しいフィールドを生成します。

      • 生ログ

        status:  500
        status:  400
        status:  200
      • 変換ルール

        e_dict_map({"400": "Error", "200": "Success", "*": "Other"}, "status", "message")
      • 結果

        status:  500
        message: Other
        status:  400
        message: Error
        status:  200
        message: Success
  • 関連ドキュメント

    この関数は、他の関数と一緒に使用できます。 詳細については、「e_dict_map関数を使用したログデータの強化」をご参照ください。

e_table_map

e_table_map関数は、入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。

  • 構文

    e_table_map(data, field, output_fields, missing=None, mode="fill-auto")
  • パラメーター

    パラメーター

    タイプ

    必須

    説明

    データ

    テーブル

    必須

    マッピングに使用されるテーブル。

    説明

    リソース関数res_rds_mysqlおよびres_log_logstore_pullをデータソースとして使用する場合、primary_keysパラメーターを設定する必要があります。 そうしないと、パフォーマンスに深刻な影響を与え、タスクの遅延を引き起こす可能性があります。 primary_keysパラメーターの設定方法の詳細については、「Resource functions」をご参照ください。

    フィールド

    文字列、文字列リスト、またはタプルリスト

    必須

    入力フィールド。 ログにフィールドが含まれていない場合、ログに対する操作は実行されません。

    output_fields

    文字列、文字列リスト、またはタプルリスト

    必須

    出力フィールド。 例: ["province", "pop"]

    行方不明

    String

    任意

    入力フィールドに一致しない場合に、output_fieldsで指定されたフィールドに割り当てられる値。 デフォルト値: None。割り当てが実行されないことを示します。 入力フィールドを複数の列にマッピングする場合は、missingパラメーターを入力フィールドに対応するデフォルト値のリストに設定できます。 デフォルト値の数は、列の数と同じでなければなりません。

    説明

    テーブルにアスタリスク (*) の列が含まれている場合、missingパラメーターは無効になります。 これは、アスタリスク (*) が欠落しているパラメーターよりも優先度が高いためです。

    モード

    String

    任意

    フィールドの上書きモード。 デフォルト値: fill-auto 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。

  • レスポンス

    新しいフィールドを含むログが返されます。

    • 例1: cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドの値を返します。

      • 生ログ

        data: 123
        city: nj
      • 変換ルール

        e_table_map(
            tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province"
        )
      • 結果

        data: 123
        city: nj
        province: js
    • 例2: cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドとpopフィールドの値を返します。

      • 生ログ

        data: 123
        city: nj
      • 変換ルール

        e_table_map(
            tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"),
            "city",
            ["province", "pop"],
        )
      • 結果

        data: 123
        city: nj
        province: js
        pop: 800
    • 例3: tab_parse_csv関数を使用してテーブルを作成し、cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドとpopフィールドの値を返します。

      • 生ログ

        data: 123
        city: nj
      • 変換ルール

        e_table_map(
            tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep="#"),
            "city",
            ["province", "pop"],
        )
      • 結果

        data: 123
        city: nj
        province: js
        pop: 800
    • 例4: tab_parse_csv関数を使用してテーブルを作成し、cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドとpopフィールドの値を返します。

      • 生ログ

        data: 123
        city: nj
      • 変換ルール

        e_table_map(
            tab_parse_csv(
                "city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|", quote="|"
            ),
            "city",
            ["province", "pop"],
        )
      • 結果

        data: 123
        city: nj
        province: js
        pop: 800
    • 例5: 入力フィールドは、マッピングに使用されるテーブルの対応するフィールドとは異なります。 ctyフィールドとcityフィールドに基づいてテーブル内の行を検索し、その行のprovinceフィールドの値を返します。

      • 生ログ

        data: 123
        cty: nj
      • 変換ルール

        e_table_map(
            tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"),
            [("cty", "city")],
            "province",
        )
      • 結果

        data: 123
        cty: nj
        province: js
    • 例6: 入力フィールドは、マッピングに使用されるテーブルの対応するフィールドとは異なります。 データをマップし、出力フィールドの名前を変更します。

      • 生ログ

        data: 123
        cty: nj
      • 変換ルール

        e_table_map(
            tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"),
            [("cty", "city")],
            [("province", "pro")],
        )
                                            
      • 結果

        data: 123
        cty: nj
        pro: js
    • 例7: 複数のフィールドの値をテーブルの行にマッピングします。

      • 生ログ

        data: 123
        city: nj
        pop: 800
      • 変換ルール

        e_table_map(
            tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"),
            ["city", "pop"],
            "province",
        )
      • 結果

        data: 123
        city: nj
        pop: 800
        province: js
    • 例8: 複数のフィールドの値をテーブルの行にマッピングします。 入力フィールドは、マッピングに使用されるテーブル内の対応するフィールドとは異なります。

      • 生ログ

        data: 123
        cty: nj
        pp: 800
      • 変換ルール

        e_table_map(
            tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"),
            [("cty", "city"), ("pp", "pop")],
            "province",
        )
      • 結果

        data: 123
        cty: nj
        pp: 800
        province: js
  • 関連ドキュメント

    この関数は、他の関数と一緒に使用できます。 詳細については、「e_table_map関数を使用したHTTPレスポンスステータスコードの強化」をご参照ください。

e_tablestore_map

e_tablestore_map関数は、Tablestoreのデータテーブルをディメンションテーブルとして使用して、生ログをエンリッチします。

  • 構文

    e_tablestore_map(
        fields,
        endpoint,
        ak_id,
        ak_secret,
        instance_name,
        table_names,
        output_fields=None,
        output_table_name=None,
        encoding="utf8",
        mode="fill-auto",
    )
  • パラメーター

    パラメーター

    タイプ

    必須

    説明

    フィールド

    文字列、数値、リスト、またはタプルリスト

    必須

    生ログとデータテーブルの間でデータをマップするために使用される生ログフィールド。 この関数は、複数の生ログフィールドをデータテーブルのプライマリキーに1つずつマッピングします。 例:

    • データテーブルにプライマリキーが含まれ、生ログにaフィールドが含まれている場合は、fields="a" を使用できます。

    • データテーブルにabcのプライマリキーが含まれ、生ログにabcフィールドが含まれている場合は、fields=["a", "b", "c"] を使用できます。

    • データテーブルにabcのプライマリキーが含まれ、生ログにa1b1c1フィールドが含まれている場合は、fields=[("a1", "a"), ("b1", "b"), ("c1", "c")] を使用できます。

    エンドポイント

    String

    必須

    データテーブルが作成されるTablestoreインスタンスのエンドポイント。 詳細については、「エンドポイント」をご参照ください。

    説明

    Tablestoreインスタンスの仮想プライベートクラウド (VPC) エンドポイントまたはパブリックエンドポイントを使用できます。 VPCエンドポイントは同じリージョン内のアクセスに使用され、パブリックエンドポイントはリージョンに関係なくインターネット経由のアクセスに使用されます。

    ak_id

    String

    必須

    Tablestoreインスタンスにアクセスする権限を持つアカウントのAccessKey ID。 詳細については、「AccessKey の作成」をご参照ください。

    RAMユーザーを使用する場合は、RAMユーザーにAliyunOTSReadOnlyAccessなどのアクセス権限が付与されていることを確認してください。 詳細については、「RAMユーザーへの権限付与」をご参照ください。

    ak_secret

    String

    必須

    Tablestoreインスタンスにアクセスする権限を持つアカウントのAccessKeyシークレット。 詳細については、「AccessKey の作成」をご参照ください。

    instance_name

    String

    必須

    Tablestoreインスタンスの名前。

    table_names

    文字列、文字列リスト、またはタプルリスト

    必須

    データテーブルの名前。 データテーブルでセカンダリインデックスを使用する場合は、このパラメーターをインデックスの名前に設定します。 セカンダリインデックス機能の詳細については、「セカンダリインデックスの作成」をご参照ください。

    たとえば、データテーブルに対してindex1セカンダリインデックスが作成されている場合、このパラメーターを "index1" に設定します。

    output_fields

    List

    選択可能

    出力フィールド。 主キー列または属性列の名前を指定できます。 例: ["province", "pop"] このパラメーターを設定しない場合、入力フィールドに基づいて一致する行のすべての列が返されます。

    説明

    Tablestoreインスタンスに複数のデータテーブルが作成されている場合、関数は最初に照合に使用されたデータテーブル内のデータのみを返します。

    output_table_name

    String

    任意

    返されたデータが格納されるデータテーブルの名前。 デフォルト値: なし。これは、出力フィールドにテーブル名が含まれていないことを示します。 このパラメーターを文字列に設定した場合、出力フィールドにはテーブル名が含まれます。

    たとえば、testという名前のデータテーブルが使用され、変換ルールにはoutput_fields=["province", "pop"],output_table_name="table_name" が含まれます。 テストデータテーブルのデータ列 ["province", "pop"] が一致する場合、出力フィールドはprovince: xxx, pop:xxx,table_name:testです。

    エンコード

    String

    任意

    HTTPSリクエストパラメーターのエンコード方法。 デフォルト値: utf-8

    モード

    String

    任意

    フィールドの上書きモード。 デフォルト値: fill-auto。 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。

  • レスポンス

    新しいフィールドを含むログが返されます。

  • 次の例は、次のtable_name_testデータテーブルに基づいています。

    city (主キー)

    pop (主キー)

    cid

    region

    bj

    300

    1

    bj

    huabei

    nj

    800

    2

    js

    huadong

    sh

    200

    3

    sh

    huadong

    • 例1: cityフィールドとpopフィールドに基づいてデータテーブルの行を検索し、その行のprovince列とcid列の値を返します。

      • 生ログ

        city:sh
        name:maki
        pop:200
      • 変換ルール

        e_tablestore_map(
            ["city","pop"],
            "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com",
            "LTA3****",
            "VIH9****",
            "d00s0dxa****",
            "table_name_test",
            output_fields=["province","cid"])
                                            
      • 結果

        city:sh
        name:maki
        pop:200
        cid:3
        province:sh
    • 例2: rawログのcity1フィールドとpop1フィールドをデータテーブルのcityおよびpopプライマリキーにマッピングし、フィールドに基づいてデータテーブルの行を見つけ、その行のすべての列の値を返します。

      • 生ログ

        city1:sh
        name:maki
        pop1:200
      • 変換ルール

        e_tablestore_map(
            [("city1","city"), ("pop1", "pop")],
            "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com",
            "LTA3****",
            "VIH9****",
            "d00s0dxa****",
            "table_name_test")
                                            
      • 結果

        city:sh
        name:maki
        pop:200
        cid:3
        province:sh
        region:huadong
    • 例3: cityフィールドとpopフィールドに基づいてデータテーブルの行を検索し、その行のすべての列の値を返します。 output_table_name"table_name" に設定します。 返された結果では、返されたデータが格納されているデータテーブルの名前を表示できます。

      • 生ログ

        city:sh
        name:maki
        pop:200
      • 変換ルール

        e_tablestore_map(
            ["city","pop"],
            "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com",
            "LTA3****",
            "VIH9****",
            "d00s0dxa****",
            "table_name_test",
            output_table_name="table_name"
        )
                                            
      • 結果

        city:sh
        name:maki
        pop:200
        cid:3
        province:sh
        region:huadong
        table_name:table_name_test
    • 例4: cityフィールドとpopフィールドに基づいて、table_name_test、table_name_test1、table_name_test2データテーブルで行を検索し、その行のすべての列の値を返します。 返された結果では、最初に照合に使用されたtable_name_testデータテーブルのデータのみを表示できます。

      • 生ログ

        city:sh
        name:maki
        pop:200
      • 変換ルール

        e_tablestore_map(
            ["city","pop"],
            "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com",
            "LTA3****",
            "VIH9****",
            "d00s0dxa****",
            ["table_name_test","table_name_test1","table_name_test2"],
            output_table_name="table_name"
        )
      • 結果

        city:sh
        name:maki
        pop:200
        cid:3
        province:sh
        region:huadong
        table_name:table_name_test
    • 例5: index1セカンダリインデックスのpk1およびpk2プライマリキーに基づいてデータテーブル内の行を検索し、その行の定義済み列definedcol2の値を返します。 定義済みの列は、index1セカンダリインデックスに指定されます。

      • データテーブル (index1)

        pk1 (主キー)

        pk2 (主キー)

        definedcol2 (定義済みの列)

        definedcol3 (定義済みの列)

        pk1_1

        pk2_1

        definedcol2_1

        definedcol3_1

        pk1_2

        pk2_2

        definedcol2_2

        definedcol3_2

      • 生ログ

        pk1:pk1_1
        pk2:pk2_1
      • 変換ルール

        e_tablestore_map(
            ["pk1","pk2"],
            "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com",
            "LTA3****",
            "VIH9****",
            "d00s0dxa****",
            "index1",
            output_fields= ["definedcol2"],
            output_table_name="table_name",
        )
                                            
      • 結果

        pk1:pk1_1
        pk2:pk2_1
        definedcol2:definedcol2_1
        table_name:index1

e_redis_map

e_redis_map関数は、ApsaraDB for Redisのデータテーブルをディメンションテーブルとして使用して、生ログを強化します。

  • 構文

    e_redis_map(field, output_field, host, port=6379, db=0, username=None,
                password=None, encoding="utf-8", max_retries=5, mode="fill-auto")
  • パラメーター

    パラメーター

    タイプ

    必須

    説明

    フィールド

    String

    必須

    生ログとデータテーブルの間でデータをマップするために使用される生ログフィールド。 生ログにフィールドが含まれていない場合、ログに対する操作は実行されません。

    output_field

    String

    必須

    出力フィールド。

    ホスト

    String

    必須

    ApsaraDB for Redisデータベースのエンドポイント。

    ユーザー名

    String

    任意

    ApsaraDB for Redisデータベースへの接続に使用するアカウントのユーザー名。 このパラメーターはデフォルトでは空です。これは、認証が実行されないことを示します。

    パスワード

    String

    任意

    ApsaraDB for Redisデータベースへの接続に使用するアカウントのパスワード。 このパラメーターはデフォルトでは空です。これは、認証が実行されないことを示します。

    ポート

    Integer

    選択可能

    ApsaraDB for Redis データベースのポート デフォルト値は 6379 です。

    db

    Integer

    選択可能

    ApsaraDB for Redisデータベースの名前。 デフォルト値:0

    エンコード

    String

    任意

    ApsaraDB for Redisデータベース内のデータのエンコード方法。 デフォルト値: utf-8

    max_retries

    Integer

    選択可能

    ApsaraDB for Redisデータベースへの接続要求が失敗した場合に許可される再試行の最大数。 既定値:5

    最大数の再試行後に接続要求が失敗した場合、関数は変換プロセスの現在のログをスキップします。 その後の変換は影響を受けません。

    再試行間の各間隔は、前の間隔の2倍になる。 間隔の範囲は1秒から120秒です。

    モード

    String

    任意

    フィールドの上書きモード。 デフォルト値: fill-auto。 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。

  • レスポンス

    新しいフィールドを含むログが返されます。

  • 次の例は、ApsaraDB for Redisの次のデータテーブルに基づいています。

    重要

    string型の値のみがサポートされています。

    キー

    i1001

    {"name": "オレンジ", "price": 10}

    i1002

    {"name": "Apple", "price": 12}

    i1003

    {"name": "Mango", "price": 16}

    • 例1: itemフィールドに基づいてデータテーブルの値を検索し、値を返します。 ApsaraDB for Redisデータベースへの接続に使用されるアカウントのユーザー名とパスワードは、変換ルールで指定されていません。

      • 生ログ

        item: i1002
        count: 7
      • 変換ルール

        e_redis_map("item", "detail", host="r-bp1olrdor8353v4s.redis.rds.aliyuncs.com")
      • 結果

        item: i1002
        count: 7
        detail: {
           "name": "Apple",
           "price": 12
          }
    • 例2: itemフィールドに基づいてデータテーブルの値を検索し、値を返します。 変換ルールでは、ApsaraDB for Redisデータベースへの接続に使用されるアカウントのユーザー名とパスワードが指定されています。

      • 生ログ

        item: i1003
        count: 7
      • 変換ルール

        e_redis_map("item", "detail", host="r-bp1olrdor8353v4s****.redis.rds.aliyuncs.com", username="r-bp****", password="***")
      • 結果

        item: i1003
        count: 7
        detail:{
           "name": "Mango",
           "price": 16
          }