天天看点

日志服务数据加工最佳实践: 构建字典与表格做数据富化字典构建表格构建进一步参考

日志服务数据加工最佳实践: 构建字典与表格做数据富化字典构建表格构建进一步参考

字典和表格是数据富化(映射)过程中主要使用的两种数据结构,本文主要介绍这两种数据结构的常见构建方式,并对比不同构建方式的优缺点。

字典构建

直接构建

e_dict_map({"400": "错误", "200": "正常", "*": "其他"}, "status", "message")           

优点: 直观、简单、方便.

从任务配置资源构建

e_dict_map(res_local("http_code_map"), "status", "message")           

其中http_code_map是

任务高级配置项

, 值为:

{"400": "错误", "200": "正常", "*": "其他"}           

优点: 如果内容较多, 且经常修改的话, 更易于维护.

从表格构建

使用

tab_to_dict

从表格构建, 而表格的构建参考本文后续的表格构建.

e_dict_map(tab_to_dict(tab_parse_csv("status_code,status_info\n400,错误\n200,正常\n*,其他"), "status_code", "status_info"), "status", "message")           

优点: 高级场景下使用. 维护机制更灵活.

从字典函数构建

e_dict_map(dct_make("400", "错误", "200",  "正常", "*",  "其他"), "status", "message")           

优点: 高级场景下可以实现特定效果, 因为

dct_make

还可以接受其他函数的返回值. 具体参考

字典函数

从其他表达式构建

e_dict_map(json_parse(v("http_code_map")), "status", "message")           

这里从源日志的字段

http_code_map

中获取映射关系.

优点:可以从日志事件的字段中动态提取映射关系,并构建字典。

不同字典构建方式对比

构建方式 优点 缺点
直观、简单、方便

1.如果内容较多, 规则会相对冗长.

2. 静态不灵活.

如果内容较多, 且经常修改的话, 较为易于维护.

1. 不易于扩展和跨任务复用.

2.不支持自动刷新.

1. 高级场景下使用, 支持的场景更丰富.

2. 维护机制更灵活.

需要构建和维护对应的表格,过程相对繁琐.
可以基于逻辑动态构建字典, 特定场景下适用. 1.较为高级, 不易于维护. .
可以从日志事件的字段中动态提取映射关系, 特定场景下适用.。 1.较为高级, 不易于维护.

表格构建

从文本构建

e_table_map(tab_parse_csv("city,name,age\nshanghai,aliyun,10\ncity:nanjing,Maki,18"), "name",["city", "age"])           

e_search_table_map(tab_parse_csv(res_local("table_info")), "name",["city", "age"])           

其中table_info是加工规则的任务配置项, 值为:

content,name,age
shanghai,aliyun,10
nanjing,Maki,18           

优点: 如果内容较多, 且经常修改的话, 较为易于维护.

从RDS资源中构建

e_table_map(tab_parse_csv(res_rds_mysql(...database="db", table="city")), "name",["city", "age"])           

RDS表格

city

的内容为:

content,name,age
shanghai,aliyun,10
nanjing,Maki,18           

优点: 如果内容较多, 且经常修改的话, 易于维护, 且会自动刷新.

从其他Logstore资源构建

e_table_map(res_log_logstore_pull(..., project="project_name", logstore="logstore_name", fields=["city","name","age"]),, "name",["city", "age"])           

对应logstore中日志事件为:

"日志1"
{
  "city": "shanghai",
  "name": "aliyun",
  "age": "10"
}
"日志2"
{
  "city": "city:nanjing and data > 100",
  "name": "Maki",
  "age": "18"
}           

优点: 支持实时读取, 维护机制更灵活. 高级场景下使用.

不同表格构建方式对比

1.如果内容较多, 规则会相对冗长。

2. 不易于维护、扩展和复用.

从RDS资源构建

1. 如果内容较多, 且经常修改的话, 易于维护.

2. 支持自动刷新.

3.支持跨任务复用

需要连接外部RDS资源,配置过程相对比较繁琐.
支持实时读取, 维护机制更灵活. 高级场景下使用. 需要连接其他Logstore,配置过程相对比较繁琐.

进一步参考

欢迎扫码加入官方钉钉群获得实时更新与阿里云工程师的及时直接的支持:

日志服务数据加工最佳实践: 构建字典与表格做数据富化字典构建表格构建进一步参考

继续阅读