本文介紹使用映射富化函數e_dict_map進行資料富化的實踐案例。
背景資訊
普通映射函數
普通映射函數使用文本完全符合方式來映射,如果需要更豐富的欄位匹配方式例如Regex匹配、完全符合、模糊比對,請使用搜尋映射函數。普通映射函數包括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欄位的值為401、404時,需要更新字典覆蓋,否則無法匹配。
加工結果
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: 伺服器錯誤