日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

映射富化函數

本文介紹映射富化函數的語法規則,包括參數解釋、函數示例等。

函數列表

類型

函數

說明

字段映射

e_dict_map

與目標數據字典進行映射,根據輸入的字段映射一個新字段。

支持和其他函數組合使用。相關示例,請參見使用e_dict_map函數進行數據富化

e_table_map

與目標表格進行映射,根據輸入的字段名稱返回字段值。

支持和其他函數組合使用。相關示例,請參見使用e_table_map函數對HTTP請求返回碼進行富化

e_tablestore_map

以阿里云表格存儲(Tablestore)作為維表數據對原始日志進行富化。

e_redis_map

以阿里云Redis作為維表數據對原始日志進行富化。

e_dict_map

與目標數據字典進行映射,根據輸入的字段映射一個新字段。

  • 函數格式

    e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite")
  • 參數說明

    參數名稱

    數據類型

    是否必填

    說明

    data

    Dict

    目標數據字典。必須為標準的{key01:value01,key01:value02,...}格式,且必須是字符串。例如{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}

    field

    String或者String List

    一個字段名或者多個字段名的列表。多個字段時:

    • 依次對匹配到的值進行映射。

    • 如果匹配命中多條日志,且mode的取值為overwrite時,則最后一個會覆蓋前面的結果。

    • 當沒有匹配到任何字段,則使用missing參數的值作為匹配值。

    output_field

    String

    輸出字段的名稱。

    case_insensitive

    Boolean

    匹配時大小寫是否不敏感。

    • True(默認值):不敏感。

    • False:敏感

    說明

    如果字典中存在同一個關鍵字的不同大小寫,且case_insensitiveTrue時,會優先選擇大小寫完全匹配的值。如果沒有,則隨機選擇一個。

    missing

    String

    無匹配字段時,將該參數的取值賦給輸出字段output_field。默認為None表示不做映射賦值操作。

    說明

    如果字典中包含匹配星號(*),由于星號(*)的優先級高于missing,此時missing參數不生效。

    mode

    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": "錯誤", "200": "正常", "*": "其他"}, "status", "message")
      • 加工結果

        status:  500
        message:  其他
        status:  400
        message:  錯誤
        status:  200
        message:  正常
  • 更多參考

    支持和其他函數組合使用。相關示例,請參見使用e_dict_map函數進行數據富化

e_table_map

與目標表格進行映射,根據輸入的字段名稱返回字段值。

  • 函數格式

    e_table_map(data, field, output_fields, missing=None, mode="fill-auto")
  • 參數說明

    參數名稱

    數據類型

    是否必填

    說明

    data

    Table

    目標表格。

    說明

    如果采用資源函數res_rds_mysqlres_log_logstore_pull作為數據源,請設置primary_keys參數,否則會嚴重影響性能并可能導致任務延遲。如何設置,請參見資源函數

    field

    String、String List或Tuple List

    日志中映射到表格的源字段。如果日志中不存在對應字段,則不進行任何操作。

    output_fields

    String、String List或Tuple List

    映射后的字段。例如["province", "pop"]

    missing

    String

    無匹配字段時,將該參數的取值賦給輸出字段output_fields。默認為None表示不做映射賦值操作。如果目標字段是多列,則missing可以是一個長度與目標字段數一致的默認值列表。

    說明

    如果表格中包含匹配星號(*),由于星號(*)的優先級高于missing,此時missing參數將不起作用。

    mode

    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:日志匹配字段與映射表格中字段不一樣。在映射表格中查找對應行,根據ctycity字段返回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

以阿里云表格存儲(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",
    )
  • 參數說明

    參數名稱

    數據類型

    是否必填

    說明

    fields

    String、Number、 List或Tuple List

    原始日志中與表格存儲數據表進行映射的字段。日志字段與數據表中的所有主鍵字段一一映射。例如:

    • 數據表的主鍵為字段a,日志字段也是a,則可以設置為fields="a"

    • 數據表的主鍵為字段abc,日志字段也為abc,則可以設置為fields=["a", "b", "c"]

    • 數據表的主鍵為字段abc,日志字段為a1b1c1,則可以設置為fields=[("a1", "a"), ("b1", "b"), ("c1", "c")]

    endpoint

    String

    表格存儲服務實例的域名地址。更多信息,請參見服務地址

    說明

    支持同地域VPC地址和全地域公網地址。

    ak_id

    String

    具備表格存儲實例訪問權限的AccessKey ID。如何獲取,請參見創建AccessKey

    如果是RAM用戶,需具備表格存儲訪問權限(例如AliyunOTSReadOnlyAccess權限)。具體操作,請參見為RAM用戶授權

    ak_secret

    String

    具備表格存儲實例訪問權限的AccessKey Secret。如何獲取,請參見創建AccessKey

    instance_name

    String

    表格存儲實例名稱。

    table_names

    String、String List或Tuple List

    數據表名稱。如果數據表使用的是二級索引,則設置該參數為索引名。關于二級索引的更多信息,請參見全局二級索引

    例如已創建數據表的二級索引為index1,則設置為table_names="index1"

    output_fields

    List

    映射后的列集合,列名可以為主鍵列或屬性列。例如["province", "pop"]。如果不設置返回的列名,則返回匹配到的數據條目的所有列。

    說明

    如果目標表格存儲實例包含多個數據表,則返回的是第一個查詢到的數據條目所在數據表的數據。

    output_table_name

    String

    查詢到的數據條目所在的數據表名稱。默認為None,表示映射出的列集合不包含數據表名。如果設置為字符串,表示映射出的列集合包含數據表名。

    例如:數據表名為test,且設置加工規則為output_fields=["province", "pop"],output_table_name="table_name",如果數據表test中匹配到數據列["province", "pop"],則輸出字段為province: xxx, pop:xxx,table_name:test

    encoding

    String

    HTTPS請求參數的編碼方式,默認值為utf-8。

    mode

    String

    字段的覆蓋模式。默認為fill-auto。更多信息,請參見字段提取檢查與覆蓋模式

  • 返回結果

    返回附帶新字段值的日志。

  • 函數示例

    下述示例基于如下數據表table_name_test。

    city(主鍵)

    pop(主鍵)

    cid

    province

    region

    bj

    300

    1

    bj

    huabei

    nj

    800

    2

    js

    huadong

    sh

    200

    3

    sh

    huadong

    • 示例1:根據citypop字段在數據表中查找對應行,返回該行中provincecid列的值。

      • 原始日志

        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:將日志中的city1pop1字段與數據表中的主鍵(citypop)進行映射,返回目標行中所有列的值。

      • 原始日志

        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:根據citypop字段在數據表中查找對應行,返回該行中所有列的值。其中設置output_table_nameoutput_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:根據citypop字段在多個數據表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:根據二級索引主鍵(pk1pk2)字段在數據表中查找對應行,查詢索引index1中definedcol2字段(預定義列)的值并返回。

      • 數據表tablestore中的數據(索引名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

以阿里云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")
  • 參數說明

    參數名稱

    數據類型

    是否必填

    說明

    field

    String

    原始日志中與Redis數據表進行映射的字段。如果日志中不存在對應字段,則不進行任何操作。

    output_field

    String

    與Redis數據表進行映射后,輸出的字段名。

    host

    String

    Redis數據庫連接地址。

    username

    String

    Redis數據庫用戶名。默認值為空,表示不進行權限驗證。

    password

    String

    Redis數據庫密碼。默認值為空,表示不進行權限驗證。

    port

    Integer

    Redis數據庫連接端口,默認值為6379。

    db

    Integer

    Redis數據庫名稱。默認值為0。

    encoding

    String

    Redis數據的編碼方式。默認值為utf-8。

    max_retries

    Integer

    連接Redis數據庫失敗時,最大重試次數。默認值為5次。

    如果重試次數超過閾值后,仍連接失敗,則跳過該日志的加工(不影響后續加工邏輯)。

    每次重試的間隔從1s開始翻倍增加,最大間隔為120s。

    mode

    String

    字段的覆蓋模式。默認為fill-auto。更多信息,請參見字段提取檢查與覆蓋模式

  • 返回結果

    返回附帶了新字段值的日志。

  • 函數示例

    下述示例基于如下Redis數據表。

    重要

    目前僅支持字符串類型的Redis數據值(VALUE)。

    KEY

    VALUE

    i1001

    { "name": "橘子", "price": 10 }

    i1002

    { "name": "蘋果", "price": 12 }

    i1003

    { "name": "芒果", "price": 16 }

    • 示例1:根據item字段值在Redis數據表中查找對應的值并返回,其中加工規則中未設置Redis數據庫用戶名和密碼。

      • 原始日志

        item: i1002
        count: 7
      • 加工規則

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

        item: i1002
        count: 7
        detail: {
           "name": "蘋果",
           "price": 12
          }
    • 示例2:根據item字段值在Redis數據表中查找對應的值并返回,其中加工規則中設置了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": "芒果",
           "price": 16
          }