云日志服务 LTS-映射富化函数:e_search_table_map

时间:2024-09-12 17:22:59

e_search_table_map

对某列(查询字符串)以及其匹配的值的表格数据进行映射。

  • 函数格式
    e_search_table_map(data, inpt, output_fields, multi_match=false, multi_join=" ", missing=None, mode="fill-auto")
  • 参数说明

    参数名称

    数据类型

    是否必填

    说明

    data

    Table

    映射关系的表格,表格某一列必须是查询字符串。

    inpt

    String

    表格中用于匹配搜索的字段名。

    output_fields

    String,String List或Tuple List

    表格中映射出的字段,可以是字符串、列表或者其名称映射元组的列表。

    multi_match

    Boolean

    是否允许匹配多个字段。默认为false表示不匹配多个字段,会返回匹配到的第一个字段值。支持使用multi_join来拼接多个匹配的值。

    multi_join

    String

    匹配多个字段时,多值的连接字符串,默认为空格。当multi_match值为true时生效。

    missing

    String

    无匹配字段时,将该参数的取值赋给输出字段output_fields。默认为None表示不做映射赋值操作。

    说明:

    如果表格中包含默认匹配*,由于*的优先级高于missing,此时missing将不起作用。

    mode

    String

    字段的覆盖模式。默认为fill-auto。

  • 返回结果

    返回查询匹配中后的映射结果。

  • 函数示例
    1. 示例1:根据映射关系的表格,将日志中city字段映射出pop和province字段。
      • 测试数据
        {
         "data": 123,
         "city": "sh"
        }

        例如,以下映射关系的表格,其中search列是查询字符串。

        search

        pop

        province

        city==nj

        800

        js

        city==sh

        2000

        sh

      • 加工规则
        e_search_table_map(
            tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"),
            "search",
            ["pop", "province"],
        )
      • 加工结果
        data: 123
        city: sh 
        province: sh 
        pop: 2000
    2. 示例2:overwrite模式。
      • 测试数据
        {
         "data": 123,
         "city": "nj",
         "province":""
        }
      • 加工规则
        e_search_table_map( 
           tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"),
            "search",
            "province",
            mode="overwrite",
        )
      • 加工结果
        pop: 800
        data: 123
        city: nj 
        province: js
    3. 示例3:无匹配时目标字段的值由missing指定。
      • 测试数据
        {
         "data": 123,
         "city": "wh",
         "province":""
        }
      • 加工规则
        e_search_table_map(
            tab_parse_csv("search,pop,province\ncity==nj,800,\ncity==sh,2000,sh"),
            "search",
            "province",
            missing="Unknown",
        )
      • 加工结果
        data: 123
        city: wh 
        province: Unknown
    4. 示例4:允许匹配多个字段(multi_match模式)。
      • 测试数据
        {
         "data": 123,
         "city": "nj,sh",
         "province":""
        }
      • 加工规则
        e_search_table_map(
            tab_parse_csv("search,pop,province\ncity:nj,800,js\ncity:sh,2000,sh"),
            "search",
            "province",
            multi_match=true,
            multi_join=",",
        )
      • 加工结果
        data: 123
        city: nj,sh
        province: js,sh
support.huaweicloud.com/usermanual-lts/lts_07_0161.html