云日志服务 LTS-字段值提取函数:e_csv、e_psv、e_tsv

时间:2024-09-11 10:44:56

e_csv、e_psv、e_tsv

使用自定义的分隔符与预定义的字段名,从特定字段中提取多个字段。

  • e_csv:默认分隔符为半角逗号(,)。
  • e_psv:默认分隔符为竖线(|)。
  • e_tsv:默认分隔符为\t。
  • 函数格式
    e_csv(源字段名, 目标字段列表, sep=",", quote='"', restrict=true, mode="fill-auto")
    e_psv(源字段名, 目标字段列表, sep="|", quote='"', restrict=true, mode="fill-auto")
    e_tsv(源字段名, 目标字段列表, sep="\t", quote='"', restrict=true, mode="fill-auto")
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    源字段名

    任意

    源字段名。如果字段不存在,则不进行任何操作。

    目标字段列表

    任意

    字段值经过分隔符分隔后的每个值对应的字段名。可以是字符串的列表,例如:["error", "message", "result"]。

    当字段名中不包含逗号时,也可以直接用逗号作为分隔字符,例如:"error, message, result"。

    sep

    String

    分隔符,只能是单个字符。

    quote

    String

    引用符,用于包裹值的字符。当值包含分隔符时需要使用。

    restrict

    Boolean

    是否采用严格模式,默认为false表示非严格模式。当分隔值的个数与目标字段列表数不一致时:

    • 严格模式下不进行任何操作。
    • 非严格模式下对前几个可以配对的字段进行赋值。

    mode

    String

    字段的覆盖模式。默认为fill-auto。

  • 返回结果

    返回附带新字段值的日志。

  • 函数示例

    以e_csv为例,e_psv和e_tsv功能类似。

    • 测试数据
      {
       "content": "192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aadoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aadoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-"
      }
    • 加工规则
      e_csv("content", "remote_addr, time_local,host,request,status,request_time,body_bytes_sent,upstream_addr,upstream_status, upstream_response_time,http_referer,http_x_forwarded_for,http_user_agent,session_id,guid")
    • 加工结果
      content:  192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aadoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aadoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36,-,-
        body_bytes_sent:  6404
      guid:  -
      host:  example.aadoc.com
      http_referer:  https://image.developer.aadoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei
      http_user_agent:  Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 
      http_x_forwarded_for:  -
      remote_addr:  192.168.0.100 
      request:  GET /zf/11874.html HTTP/1.1 
      request_time:  0.077
      session_id:  -
      status:  200
      time_local:  10/Jun/2019:11:32:16 +0800 
      topic:  syslog-forwarder 
      upstream_addr:  192.168.0.100:800
      1upstream_response_time:  0.060
      upstream_status:  200
  • 更多参考

    支持和其他函数组合使用。

support.huaweicloud.com/usermanual-lts/lts_07_0162.html