You need to enable JavaScript to run this app.
导航
富化映射函数
最近更新时间:2024.08.02 11:18:45首次发布时间:2023.09.27 14:09:14

本文档介绍富化映射函数的语法与格式、相关的场景示例。

f_table_map 函数

f_table_map 函数用于映射表格数据,根据指定的字段名返回表格中对应的字段值。

函数语法/格式

f_table_map(value, field, output_fields, missing=None, mode="overwrite")

参数说明如下:

参数

参数类型

是否必选

默认值

说明

value

String

/

目标表格。
使用资源函数 res_rds_mysql 作为数据源时,为了提升处理性能,请尽量设置 primary_keys 参数。详细说明,请参考res_rds_mysql 函数

field

String

/

与表格数据映射的源日志字段。多个字段之间使用半角逗号(,)分隔,例如 "id,age"
如果日志中不存在对应字段,该函数不进行任何操作。

output_fields

String

/

映射后,待输出的字段。多个字段之间使用半角逗号(,)分隔,例如 "name,desc"

missing

String

/

缺省值。无匹配的字段值时,将 missing 参数的取值赋值给 output_fields。

mode

String

overwrite

字段的覆盖模式。包括:

  • overwrite:选择 overwrite 时,将覆盖字段值。
  • fill:目标字段不存在或者值为空时,可以选择 fill,用于新增字段。

函数示例

示例 1

  • 场景:与火山引擎 MySQL 数据库 test_sql 中的 table_tls 表进行映射,根据 idage 字段返回 namedesc 字段的值。

  • 加工规则:

    f_table_map(
        res_rds_mysql(
            address="192.168.**.**",
            username="test_username",
            password="****",
            database="test_sql",
            vpc="vpc-xxxxx",    
            table="table_tls",
            primary_keys="id",
            update_time_key="update_time",
            refresh_interval=10    
        ),
        "id,age",
        "name,desc"
    )
    
  • 数据库数据样例:

    id

    age

    name

    desc

    1

    10

    zhangsan

    Man out of law

    2

    18

    lisi

    Hey man, what can i say!

  • 日志样例:

    [
    {
        "id":1,
        "age":10
    },
    {
        "id":2,
        "age":18
    }
    ]
    
  • 加工结果:

    [
    {
        "id":1,
        "age":10,
        "name":"zhangsan",
        "desc":"Man out of law"    
    },
    {
        "id":2,
        "age":18
    }
    ]
    

示例 2

  • 场景:与火山引擎 MySQL 数据库 test_sql 中的 table_tls 表进行映射,根据 idage 字段返回 namedesc 字段的值,且设置 missing 参数为 unknown。

  • 加工规则:

    f_table_map(
        res_rds_mysql(
            address="192.168.**.**",
            username="test_username",
            password="****",
            database="test_sql",
            vpc="vpc-xxxxx",    
            table="table_tls",
            primary_keys="id",
            update_time_key="update_time",
            refresh_interval=10    
        ),
        "id,age",
        "name,desc",
        missing='unknown'
    )
    
  • 数据库数据样例:

    id

    age

    name

    desc

    1

    10

    zhangsan

    Man out of law

  • 日志样例:

    [
    {
        "id":1,
        "age":10
    },
    {
        "id":2,
        "age":18
    }
    ]
    
  • 加工结果:

    [
    {
        "id":1,
        "age":10,
        "name":"zhangsan",
        "desc":"Man out of law"    
    },
    {
        "id":2,
        "age":18,
        "name":"unknown",
        "desc":"unknown" 
    }
    ]
    

f_dict_map 函数

f_dict_map 函数用于与指定字典进行映射,根据映射关系将输入的字段映射为一个新字段。

函数语法/格式

f_dict_map(value=映射的字典,fields=映射字段,output_field=输出字段,missing=缺省填充字段,mode="fill")

参数说明如下:

参数

参数类型

是否必选

默认值

取值范围

说明

value

Dict

/

/

用于映射的字符串字典。其中 key 和 value 必须为字符串格式。

fields

String

/

/

字段名或字段名列表,多个字段名之间通过英文逗号分隔。指定为多个字段名时:

  • 日志服务会依次对匹配到的值进行映射。
  • 如果匹配命中多条日志,且 mode 的取值为 overwrite 时,则最后一个会覆盖前面的结果。
  • 若没有匹配到任何字段,则使用 missing 参数的值作为匹配值。

output_field

String

/

/

输出字段名称。

missing

String

/

/

如果没有匹配到默认字段,则将该参数的值赋予输出字段 output_field。默认为 None 表示不做映射赋值操作。

mode

String

overwrite

  • overwrite
  • fill

指定值对输出字段的覆盖模式。

  • overwrite: 在任何情况下均默认覆盖写入。
  • fill: 当目标字段不存在时,设置目标字段。

函数示例

  • 场景:用 dict 中的映射把日志内容 status 字段,映射到 status_msg 字段。

  • 加工规则:

    f_dict_map(dict_make("200","成功","400","参数异常"),"status","status_msg","未知状态")
    
  • 日志样例:

    {
        "status": "200"
    }
    
  • 加工结果:

    {
        "status": "200",
        "status_msg": "成功"
    }