使用e_dict_map函数进行数据富化

本文介绍使用映射富化函数e_dict_map进行数据富化的实践案例。

背景信息

普通映射函数

普通映射函数使用文本完全匹配方式来映射,如果需要更丰富的字段匹配方式例如正则表达式匹配、完全匹配、模糊匹配,请使用搜索映射函数。普通映射函数包括e_dict_map函数和e_table_map函数,两者区别在于e_dict_map函数接收的是dict类型的数据,e_table_map函数接收的是通过资源函数获取的table类型的数据。

例如:在nginx日志中,将特定的状态码转换为文本格式,可以使用普通映射函数e_dict_map,

状态码

文本

200

成功

300

跳转

400

请求错误

500

服务器错误

使用e_dict_map函数进行数据富化

本案例介绍使用e_dict_map函数完成数据富化的方法。

  • 原始日志

    http_host:  example.com
    http_status:  300
    request_method:  GET
    
    http_host:  example.org
    http_status:  200
    request_method:  POST
    
    http_host:  example.net
    http_status:  400
    request_method:  GET
    
    http_host:  aliyundoc.com
    http_status:  500
    request_method:  GET
  • 加工需求

    http_status字段中的请求状态码转化为文本格式,并添加到status_desc字段中。

  • 加工规则

    e_dict_map({"400": "请求错误", "500": "服务器错误", "300": "跳转", "200": "成功"}, "http_status", "status_desc")
    说明

    在实际情况中,HTTP请求状态码不止以上4种,详情请参见HTTP请求状态码。当http_status字段的值为401404时,需要更新字典覆盖,否则无法匹配。

  • 加工结果

    http_host:  example.com
    http_status:  300
    request_method:  GET
    status_desc: 跳转
    
    http_host:  example.org
    http_status:  200
    request_method:  POST
    status_desc: 成功
    
    http_host:  example.net
    http_status:  400
    request_method:  GET
    status_desc: 请求错误
    
    http_host:  aliyundoc.com
    http_status:  500
    request_method:  GET
    status_desc: 服务器错误