富化函数

最近更新时间:2025-10-23 18:13:42

我的收藏

t_table_map 函数

函数定义

与目标表格进行映射,根据输入的字段名称返回字段值,可简单理解为日志和维度表关联。

语法描述

t_table_map(data, field, output_fields, missing=None, mode="fill-auto")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
目标表格(维度表)
table
-
-
field
日志中映射到表格的源字段。如果日志中不存在对应字段,则不进行任何操作。支持 String 和 String List
any
-
-
output_fields
映射后的字段。例如["province", "pop"]。支持 String 和 String List
any
-
-
missing
无匹配字段时,将该参数的取值赋给输出字段 output_fields
String
-
-
mode
字段的覆盖模式。默认为 fill-auto
String
fill-auto

示例

示例1:从 MySQL 中富化多个新的字段

MySQL 中新建一个表 test,添加如下数据:

原始日志:
[
{
"user_id": 1
},
{
"user_id": 3
}
]
加工规则:
res_rds_mysql 用于从 MySQL 中获取维度表数据。
//在控制台将外部数据 MySQL 的别名配置为 hm,mysql 的 db 为 test222,表名为 test
//从 MySQL 拉取全部数据,使用 t_table_map 函数完成维度表关联

t_table_map(
res_rds_mysql(alias="hm",database="test222",sql="select * from test"),
"user_id",
["gameid", "game"]
)
加工结果:
[
{
"user_id":"1"
},
{
"game":"wangzhe",
"gameid":"123",
"user_id":"3"
}
]

示例2:关联的字段名称不同,重命名富化的字段

日志字段 Pid 和 MySQL 中的 id 字段关联,名称不同。从 MySQL 中富化的 game_details 字段,在日志中重命名为 game_info。
MySQL 中新建一个表 test,添加如下数据:

原始日志:
[
{
"Pid": 1
},
{
"Pid": 2
},
{
"Pid": 3
}
]
加工规则:
//在控制台将外部数据 MySQL 的别名配置为 hm,mysql 的 db 为 test222,表名为 test
//从 MySQL 拉取部分数据,使用 t_table_map 函数完成维度表关联
//日志字段Pid和MySQL中的id字段关联, 名称不同
//从 MySQL 中富化的 game_details 字段,在日志中重命名为 game_info
t_table_map(
res_rds_mysql(alias="hm",database="test222",sql="select * from test where region='CN'"),
[["Pid", "id"]],
["game_name",["game_details","game_info"]]
)
加工结果:
[
{
"Pid":"1"
"game_info":"MOBA手游"
"game_name":"王者荣耀"
},
{
"Pid":"2"
},
{
"Pid":"3"
"game_info":"开放世界RPG游戏"
"game_name":"原神"
}
]

enrich_table 函数

函数定义

使用 CSV 结构数据对日志中的字段进行匹配,当值相同时,可以将 CSV 中的其他字段和值添加到源日志中。

语法描述

enrich_table(“csv 源数据”, “csv 富化字段”, output=“目标字段1,目标字段2,目标字段...., mode="overwrite")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
输入的 CSV 数据,第一行为列名,其余行对应值。例如:region,count\\nbj, 200\\ngz, 300
String
-
-
fields
待匹配列名称。CSV 中的字段名称,与实际日志中同名的字段进行匹配。单个字段名或以英文半角逗号拼接的多个新字段名
String
-
-
output
输出字段列表,单个字段名或以英文半角逗号拼接的多个新字段名
String
-
-
mode
新字段的写入模式。默认强制覆盖
String
overwrite
-

示例

原始日志:
{"region": "gz"}
加工规则:
enrich_table("region,count\\nbj,200\\ngz,300", "region", output="count")
加工结果:
{"count":"300","region":"gz"}

enrich_dict 函数

函数定义

使用 Dict 结构对日志中的字段值进行匹配,当指定的字段的值和 Dict 中的 Key 相同时,将此 Key 对应的 Value 赋值给日志中的另一字段。

语法描述

enrich_dict(“JSON 字典”, "源字段名", output=目标字段, mode="overwrite")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
输入的 dict 数据,这里必须是 JSON 对象的转义字符串,例如:{\\"200\\":\\"SUCCESS\\",\\"500\\":\\"FAILED\\"}
String
-
-
fields
待匹配字段名称。当 dict 中的 key 和指定字段对应的值相同时,匹配成功。单个字段名或以英文半角逗号拼接的多个新字段名
String
-
-
output
目标字段列表。匹配成功后,将 dict 中对应的 value 写入到目标字段列表。单个字段名或以英文半角逗号拼接的多个新字段名
String
-
-
mode
新字段的写入模式。默认强制覆盖
String
overwrite

示例

原始日志:
{"status": "500"}
加工规则:
enrich_dict("{\\"200\\":\\"SUCCESS\\",\\"500\\":\\"FAILED\\"}", "status", output="message")
加工结果:
{"message":"FAILED","status":"500"}