华为云用户手册

  • op_max 计算多个字段或表达式表示的数值的最大值。 函数格式 op_max(value1, value2, ...) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1一样 是 运算值2。 返回结果 返回多个数值中的最大值。 函数示例 测试数据 { "price_orange": 2, "priority_apple": 13 } 加工规则 e_set("max_price", op_max(ct_int(v("price_orange")),ct_int(v("priority_apple")))) 加工结果 price_orange: 2 priority_apple: 13 max_price: 13
  • op_not_in 判断字符串、元组、列表或字典中是否不包含特定元素,返回true或false。 函数格式 op_not_in(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 字符串、元组、列表或字典等 是 字符串、元组、列表或者字典等。 value2 任意 是 判断的元素。 说明 函数中字符串、元组、列表或字典参数在前,元素在后。 返回结果 如果字符串、元组、列表或字典中不包含元素返回true,否则返回false。 函数示例 测试数据 { "list": [1, 3, 2, 7, 4, 6], "num2": 12 } 加工规则 e_set("op_not_in",op_not_in(v("list"),v("num2"))) 加工结果 list: [1, 3, 2, 7, 4, 6] num2: 12 op_not_in: true
  • op_eq 按照a==b条件进行计算,返回true或false。 函数格式 op_eq(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1相同 是 运算值2。 返回结果 如果值1与值2相等返回true,否则返回false。 函数示例 示例1: 测试数据 { "content": "hello", "ctx": "hello" } 加工规则 e_set("test_eq", op_eq(v("content"),v("ctx"))) 加工结果 content: hello ctx: hello test_eq: true 示例2: 测试数据 { "content": "hello", "ctx": "ctx" } 加工规则 e_set("test_eq", op_eq(v("content"),v("ctx"))) 加工结果 content: hello ctx: ctx test_eq: false
  • op_ne 按照a!=b条件进行计算,返回true或false。 函数格式 op_ne(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1相同 是 运算值2。 返回结果 如果值1不等于值2返回true,否则返回false。 函数示例 示例1: 测试数据 { "priority": 16, "price": 14 } 加工规则 e_set("op_ne",op_ne(ct_int(v("priority")),ct_int(v("price")))) 加工结果 priority: 16 price: 14 op_ne: true 示例2: 测试数据 { "priority": 14, "price": 14 } 加工规则 e_set("op_ne",op_ne(ct_int(v("priority")),ct_int(v("price")))) 加工结果 priority: 14 price: 14 op_ne: false
  • op_not 使用逻辑运算not,对任意类型值进行真假判断,返回表达式值的反义布尔值。 函数格式 op_not(expression) 参数说明 参数名称 参数类型 是否必填 说明 expression 任意 是 表达式。 返回结果 返回表达式值的反义布尔值。 对任意类型值进行真假判断。 函数示例 示例1: 测试数据 { "ctx1": "true" } 加工规则 e_set("op_not", op_not(v("ctx1"))) 加工结果 ctx1: true op_not: false 示例2: 测试数据 { "ctx1": 345 } 加工规则 e_set("op_not", op_not(v("ctx1"))) 加工结果 ctx1: 345 op_not: false 示例3: 测试数据 { "ctx1": 0 } 加工规则 e_set("op_not", op_not(ct_int(v("ctx1")))) 加工结果 ctx1: 0 op_not: true 示例4: 测试数据 { "ctx1": "ETL" } 加工规则 e_set("op_not", op_not(v("ctx1"))) 加工结果 ctx1: ETL op_not: false 示例5: 测试数据 { "ctx1": "None" } 加工规则 e_set("op_not", op_not(v("ctx1"))) 加工结果 ctx1: None op_not: false
  • op_or 使用逻辑运算or,对任意类型值进行真假判断。当任意表达式的值为真时返回true,所有表达式值为假时返回false。 函数格式 op_or(expression1, expression2, ...) 参数说明 参数名称 参数类型 是否必填 说明 expression1 任意 是 表达式1。 expression2 任意 是 表达式2。 返回结果 任意表达式的值为真时返回true,所有表达式的值为假时返回false。 对任意类型值进行真假判断。 函数示例 示例1: 测试数据 { "ctx1": 123, "ctx2": 234 } 加工规则 e_set("op_or", op_or(v("ctx1"),v("ctx2"))) 加工结果 ctx1: 123 ctx2: 234 op_or: true 示例2: 测试数据 { "ctx1": 0, "ctx2": 234 } 加工规则 e_set("op_or", op_or(v("ctx1"),v("ctx2"))) 加工结果 ctx1: 0 ctx2: 234 op_or: true 示例3: 测试数据 { "ctx1": "ETL", "ctx2": "aa" } 加工规则 e_set("op_or", op_or(v("ctx1"),v("ctx2"))) 加工结果 ctx1: ETL ctx2: aa op_or: true 示例4: 测试数据 { "ctx1": "true", "ctx2":"false" } 加工规则 e_set("op_or", op_or(v("ctx1"),v("ctx2"))) 加工结果 ctx1: true ctx2: false op_or: true 示例5: 测试数据 { "ctx1": 0, "ctx2":"false" } 加工规则 e_set("op_or", op_or(ct_int(v("ctx1")),v("ctx2"))) 加工结果 ctx1: 0 ctx2: false op_or: true 示例6: 测试数据 { "ctx1": 124, "ctx2": "true" } 加工规则 e_set("op_or", op_or(v("ctx1"),v("ctx2"))) 加工结果 ctx1: 124 ctx2: true op_or: true
  • op_len 计算文本字符串中的字符数,可用于字符串和其他返回元组、列表、字典的表达式。 函数格式 op_len(value) 参数说明 参数名称 参数类型 是否必填 说明 value 字符串、元组、列表或字典等 是 运算值。 返回结果 返回字段的长度。 函数示例 测试数据 { "content": "I,love,this,world" } 加工规则 e_set("op_len",op_len(v("content"))) 加工结果 content: I,love,this,world op_len: 17
  • op_if 根据判断条件返回不同表达式的值。 函数格式 op_if(condition, expression1, expression2) 参数说明 参数名称 参数类型 是否必填 说明 condition 任意 是 判断条件。如果该条件为非布尔值,系统将对其采用真假判断。 expression1 任意 是 判断结果为true时,返回该表达式的值。 expression2 任意 是 判断结果为false时,返回该表达式的值。 返回结果 返回相应的表达式的值。 函数示例 示例1:如果content为true,则把表达式1的值赋给test_if。 测试数据 { "content": "hello" } 加工规则 e_set("test_if", op_if(v("content"),"still origion content","replace this")) 加工结果 content: hello test_if: still origion content 示例2:如果content为false,则把表达式2的值赋给test_if。 测试数据 { "content": 0 } 加工规则 e_set("test_if", op_if(ct_int(v("content", default=0)),"still origion content","replace this")) 加工结果 content: 0 test_if: replace this
  • op_ifnull 返回第一个值不为None的表达式的值。 函数格式 op_ifnull(expression1, expression2, ....) 参数说明 参数名称 参数类型 是否必填 说明 expression1 任意 是 表达式1。 expression2 任意 是 表达式2。 返回结果 返回第一个值不为None的表达式的值。 函数示例 示例1: 测试数据 { "test_if": "hello", "escape_name": "Etl" } 加工规则 e_set("test_ifnull", op_ifnull(v("escape_name"),v("test_if"))) 加工结果 test_if: hello escape_name: Etl test_ifnull: Etl 示例2: 测试数据 { "test_if": "hello", "escape_name": "Etl" } 加工规则 e_set("test_ifnull", op_ifnull(v("test_if"),v("escape_name"))) 加工结果 test_if: hello escape_name: Etl test_ifnull: hello
  • op_coalesce 返回第一个值不为None的表达式的值。 函数格式 op_coalesce(expression1, expression2, ...) 参数说明 参数名称 参数类型 是否必填 说明 expression1 任意 是 表达式1。 expression2 任意 是 表达式2。 返回结果 返回第一个值不为None的表达式的值。 函数示例 示例1: 测试数据 { "test_if": "hello", "escape_name": "Etl" } 加工规则 e_set("test_coalesce", op_coalesce(v("escape_name"),v("test_if"))) 加工结果 test_if: hello escape_name: Etl test_coalesce: Etl 示例2: 测试数据 { "test_if": "hello", "escape_name": "Etl" } 加工规则 e_set("test_coalesce", op_coalesce(v("test_if"),v("escape_name"))) 加工结果 test_if: hello escape_name: Etl test_coalesce: hello
  • op_nullif 如果表达式1等于表达式2,返回None。否则返回表达式1的值。 函数格式 op_nullif(expression1, expression2) 参数说明 参数名称 参数类型 是否必填 说明 expression1 任意 是 表达式1。 expression2 任意 是 表达式2。 返回结果 如果表达式1和表达式2相等返回None,否则返回表达式1的值。 函数示例 示例1: 测试数据 { "test_if": "hello", "escape_name": "Etl" } 加工规则 e_set("test_ifnull", op_nullif(v("test_if"),v("escape_name"))) 加工结果 test_if: hello escape_name: Etl test_ifnull: hello 示例2: 测试数据 { "test_if": "hello", "escape_name": "hello" } 加工规则 e_set("test_ifnull", op_nullif(v("content"),v("escape_name"))) 加工结果 #因为content与escape_name内容一样,所以没有任何内容返回给test_isnull字段。 test_if: hello escape_name: hello
  • op_and 使用逻辑运算and,对任意类型值进行真假判断,所有参数值为真时返回true。 函数格式 op_and(value1, value2, ...) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 任意 是 运算值2。 返回结果 所有参数值为真时返回true。 对任意类型值进行真假判断。 函数示例 示例1: 测试数据 { "number1": 123, "number2": 234 } 加工规则 e_set("op_and", op_and(v("number1"),v("number2"))) 加工结果 number1: 123 number2: 234 op_and: true 示例2: 测试数据 { "number1": 0, "number2": 234 } 加工规则 e_set("op_and", op_and(v("number1"),v("number2"))) 加工结果 number1: 0 number2: 234 op_and: false 示例3: 测试数据 { "ctx1": "false", "ctx2": 234 } 加工规则 e_set("op_and", op_and(v("ctx1"),v("ctx2"))) 加工结果 ctx1: false ctx2: 234 op_and: true 示例4: 测试数据 { "ctx1": "true", "ctx2": 234 } 加工规则 e_set("op_and", op_and(v("ctx1"),v("ctx2"))) 加工结果 ctx1: true ctx2: 234 op_and: true
  • json_parse 将值解析为JSON对象。 函数格式 json_parse(value, default=None, restrict=false) 参数说明 参数 类型 是否必填 说明 value String 是 传入需要被解析的字段。 default String 否 如果解析字段不存在,则返回此处设置的值。默认为None,表示不返回字段。 restrict Bool 否 解析字段的值不是合法的JSON格式时,是否严格限制加工。 默认值false。 false:忽略报错,数据加工继续处理,返回default定义的值。 true:直接报错,数据加工不再继续处理,直接丢弃该条日志。 返回结果 返回转换后的JSON对象。 函数示例 示例1:提取content字段的JSON值。 测试数据 { "content": {\"abc\": 123, \"xyz\": \"test\" } } 加工规则 e_set("json", json_parse(v("content"))) 加工结果 content: {"abc": 123, "xyz": "test" } json: {"abc": 123, "xyz": "test"} 示例2:提取content字段的值,如果不是JSON格式,则返回default的值。 测试数据 { "content": "this is not json" } 加工规则 e_set("json", json_parse(v("content"), default="FFF", restrict=false)) 加工结果 content: this is not json json: FFF
  • json_select 根据JMES语法提取或计算JSON表达式中特定的值。 函数格式 json_select(value, jmes, default=None, restrict=false) 参数说明 参数 类型 是否必填 说明 value String、JSON 是 传入待提取字段的JSON表达式或字段。 jmes String 是 JMES表达式,表示提取的字段。 default String 否 如果提取字段不存在,则返回此处设置的值。默认为None,表示不返回字段。 restrict Bool 否 提取字段的值不是合法的JSON格式时,是否严格限制加工。 默认值false。 false:忽略报错,数据加工继续处理,返回default定义的值。 true:直接报错,数据加工不再继续处理,直接丢弃该条日志。 返回结果 返回提取到的值。 函数示例 示例1:从content字段提取元素name的值。 测试数据 { "content": {\"name\": \"xiaoming\", \"age\": 10} } 加工规则 e_set("json_filter",json_select(v("content"), "name")) 加工结果 content: {"name": "xiaoming", "age": 10} json_filter: xiaoming 示例2:从content字段提取元素name包含的所有值。 测试数据 { "content": {\"name\": [\"xiaoming\", \"xiaowang\", \"xiaoli\"], \"age\": 10} } 加工规则 e_set("json_filter", json_select(v("content"), "name[*]")) 加工结果 content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10} json_filter: ["xiaoming", "xiaowang", "xiaoli"] 示例3:从content字段提取元素name3的值,若字段不存在,则返回default的值。 测试数据 { "content": {\"name\": \"xiaoming\", \"age\": 10} } 加工规则 e_set("json_filter", json_select(v("content"), "name3", default="None")) 加工结果 content: {"name": "xiaoming", "age": 10} json_filter: None 示例4:从content字段提取携带短划线(-)的元素name-test的值。 测试数据 { "content": {\"name\": {\"name-test\":\"xiaoming\"}, \"age\": 10} } 加工规则 e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None)) 加工结果 content: {"name": {"name-test":"xiaoming"}, "age": 10} json_filter: xiaoming 示例5:从content字段提取携带短划线(-)的元素name-test的值,若元素不存在,则不返回字段。 测试数据 { "content": {\"name\": {\"name.test\":\"xiaoming\"}, \"age\": 10} } 加工规则 e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None)) 加工结果 content: {"name": {"name-test":"xiaoming"}, "age": 10}
  • e_match 判断当前日志字段的值是否满足正则表达式。 函数格式 e_match(key, regular_expression, full=true) e_match函数通常与op_not、op_and或者op_or结合使用。 参数说明 参数名称 参数类型 是否必填 说明 key String 是 字段名。当字段不存在时,视为当前子条件不匹配。例如:字段f1不存在,那么e_match("f1", ...)结果为false。 regular_expression String 是 正则表达式。如果需要使用纯粹字符串匹配时(非正则表达式),可以使用函数str_regex_escape修饰正则表达式。 full Bool 否 是否完全匹配,默认为true表示完全匹配。 返回结果 返回字段匹配的判断结果true或false。 函数示例 判断字段k1的值是否为数字。 测试数据 { "k1": 123 } 加工规则 e_set("e_match", e_match("k1",r'\d+')) 加工结果 k1: 123 match: true 更多参考 支持和其他函数组合使用。
  • e_has 判断字段是否存在。 函数格式 e_has("key") 参数说明 参数名称 参数类型 是否必填 说明 key String 是 日志的字段名。 返回结果 字段存在返回true,不存在返回false。 函数示例 判断日志是否存在content字段,存在则保留,不存在则丢弃。 测试数据 { "content": 123 } 加工规则 e_keep(e_has("content")) 加工结果 content: 123
  • e_match_all 判断当前日志字段的值是否满足正则表达式,所有字段匹配返回true,否则返回false。 函数格式 e_match_all(key1, regular_expression1, key2, regular_expression2, ..., full=true) 函数中key和regular_expression必须成对出现。 e_match_all函数通常与op_not、op_and或者op_or结合使用。 参数说明 参数名称 参数类型 是否必填 说明 字段名 String 是 字段名。当字段不存在时,视为当前子条件不匹配。例如:字段f1不存在,那么e_match_all("f1", ...)结果为false。 正则 String 是 正则模式。如果需要使用纯粹字符串匹配时(非正则),可以使用函数str_regex_escape修饰正则。 full Bool 否 是否完全匹配,默认为true表示完全匹配。 返回结果 返回字段匹配的判断结果true或false。 函数示例 测试数据 { "k1": 123, "k2": "abc", "k3": "abc123" } 加工规则 e_set("match", e_match_all("k1", r"\d+", "k2", r"\d+")) 加工结果 k1:123 k2:abc k3:abc123 match:false 更多参考 支持和其他函数组合使用。
  • e_not_has 判断字段是否不存在。 函数格式 e_not_has("key") 参数说明 参数名称 参数类型 是否必填 说明 key String 是 字段名称。 返回结果 字段不存在返回true,存在返回false。 函数示例 判断日志是否存在content字段,不存在则保留该日志,否则丢弃该日志。 测试数据 { "content": 123 } 加工规则 e_if_else(e_not_has("content"),e_keep(),e_drop()) 加工结果 日志被丢弃。 更多参考 支持和其他函数组合使用。
  • e_match_any 判断当前日志字段的值是否满足正则表达式,任意字段匹配返回true,否则返回false。 函数格式 e_match_any(key1, regular_expression1, key2, regular_expression2, ..., full=true) 函数中key和regular_expression必须成对出现。 e_match_any函数通常与op_not、op_and或者op_or结合使用。 参数说明 参数名称 参数类型 是否必填 说明 key String 是 字段名。当字段不存在时,视为当前子条件不匹配。例如:字段f1不存在,那么e_match_any("f1", ...)结果为false。 regular_expression String 是 正则模式。如果需要使用纯粹字符串匹配时(非正则),可以使用函数str_regex_escape修饰正则。 full Bool 否 是否完全匹配,默认为true表示完全匹配。 返回结果 返回字段匹配的判断结果true或false。 函数示例 e_match_any匹配,任意字段匹配则返回true。 测试数据 { "k1": 123, "k2": "abc", "k3": "abc123" } 加工规则 e_set("match",e_match_any('k1', r'\d+', 'k2', '.+')) 加工结果 k1:123 k2:abc k3:abc123 match:true 更多参考 支持和其他函数组合使用。
  • 函数列表 类型 函数 说明 基本方法 e_has 判断日志字段是否存在。 e_not_has 判断日志字段是否不存在。支持和其他函数组合使用。 表达式函数 e_search 提供一种简化,类似Lucene语法的事件搜索方式。支持和其他函数组合使用。 e_match 判断当前日志字段的值是否满足正则表达式。支持和其他函数组合使用。 e_match_any 判断当前日志字段的值是否满足正则表达式,任意字段匹配返回true,否则返回false。 e_match_all 判断当前日志字段的值是否满足正则表达式,所有字段匹配返回true,否则返回false。 同时,事件检查函数可以与如下表达式函数配合使用: 类型 函数 说明 基本判断 op_and 逻辑and运算。 op_or 逻辑or运算。 op_not 逻辑not运算。 op_nullif 判断两个表达式的取值。 op_ifnull 返回第一个值不为None的表达式的值。 op_coalesce 返回第一个值不为None的表达式的值。
  • str_sort 函数格式 str_sort(value, reverse=false) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被排序的原字符串。 reverse Boolean 否 默认为false,表示升序排列。 返回结果 排序后的字符串。 函数示例 测试数据 { "key1": "value" } 加工规则 e_set("str_sort", str_sort(v("key1"))) 加工结果 key1: value str_sort: aeluv
  • str_zip 函数格式 str_zip(value1,value2,combine_sep=None,sep=None,quote=None,lparse=None,rparse=None) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意(自动转为String) 是 需要被合并的值。 value2 任意(自动转为String) 是 需要被合并的值。 combine_sep 任意(自动转为String) 否 合并时元素之间的合并标识,默认为# sep 任意(自动转为String) 否 合并后元素之间的分隔符,仅支持单个字符,默认为, quote 任意(自动转为String) 否 将合并后的元素括起来的字符,当值包含分隔符时需要使用,默认为" lparse 任意(自动转为String) 否 指定value1中元素之间的分隔符和引用符,默认分隔符为,,默认引用符为"。格式为lparse=(',', '"')。 说明 引用符优先级高于分隔符。 rparse 任意(自动转为String) 否 指定value2中元素之间的分隔符和引用符,默认分隔符为,,默认引用符为"。格式为rparse=(',', '"')。 说明 引用符优先级高于分隔符。 返回结果 合并后的字符串。 函数示例 示例1:sep的使用。 测试数据 { "key1": "value1,value11", "key2": "value2,value21" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"), sep="|")) 加工结果 key1: value1,value11 key2: value2,value21 combine: value1#value2|value11#value21 示例2:quote的使用。 测试数据 { "key1": "\"value1, value2\", value3, \"value4,value5\"", "key2": "value11,\"value12,value13\",value14" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"), quote='|')) 加工结果 key1: "value1, value2", value3, "value4,value5" key2: value11,"value12,value13",value14 combine: |value1,value2#value11|,|value3#value12,value13|,|value4,value5#value14| 示例3:不同长度的值。 测试数据 { "key1": "value1,value2", "key2": "value11,value12,value13" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"))) 加工结果 key1: value1,value2 key2: value11,value12,value13 combine: value1#value11,value2#value12 示例4:lparse和rparse的使用。 测试数据 { "key1": "|value1, value1|, value2, |value3,value3|", "key2": "value11, #value12,value12#, value13" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"), lparse=(",", '|'), rparse=(",", '#'))) 加工结果 key1: |value1, value1|, value2, |value3,value3| key2: value11, #value12,value12#, value13 combine: "value1,value1#value11","value2#value12,value12","value3,value3#value13"
  • str_reverse 函数格式 str_reverse(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被反转的值 返回结果 反转后的字符串。 函数示例 测试数据 { "data": "switch" } 加工规则 e_set("reverse_data", str_reverse(v("data"))) 加工结果 data: switch reverse_data: hctiws
  • str_replace 函数格式 str_replace(value, old, new, count) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被替换的值。 old 任意(自动转为String) 是 需要被替换的字符串。 new 任意(自动转为String) 是 替换后新的字符串。 count Number 否 替换次数,可选项。如果不设置count,则表示替换所有。 返回结果 替换后的新字符串。 函数示例 测试数据:无 加工规则 e_set("str_replace", str_replace("this is string example", "is", "was")) 加工结果 str_replace: thwas was string example
  • str_translate 函数格式 str_translate(value, replace_string, mapping_string) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被替换的原字符串。 replace_string 任意(自动转为String) 是 需要替换的字符集合。 mapping_string 任意(自动转为String) 是 替换后的字符集合。 返回结果 处理后的字符串。 函数示例 测试数据:无 加工规则 e_set("str_translate", str_translate("lts", "ts", "34")) 加工结果 str_translate: l34
  • str_format 函数格式 str_format(format, str1, str2, ...) 参数说明 参数名称 参数类型 是否必填 说明 format string 是 转换后的格式 str1 任意 是 待格式化的值1 str2 任意 是 待格式化的值2 返回结果 格式化后的字符串。 函数示例 测试数据:无 加工规则 e_set("result", str_format("{}={}", "lts", 8)) 加工结果 result: lts=8
  • str_join 函数格式 str_join(connector, str1, str2, ...) 参数说明 参数名称 参数类型 是否必填 说明 connector 任意(自动转为string) 是 连接符,比如#,$,%等 str1 任意(自动转为string) 是 待连接的值1 str2 任意(自动转为string) 是 待连接的值2 返回结果 连接后的字符串。 函数示例 测试数据:无 加工规则 e_set("email", str_join("@", "lts", "aa", "com")) 加工结果 email: lts@aa@com
  • e_split 基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。 函数格式 e_split(字段名, sep=',', quote='"', lstrip=true, jmes=None, output=None) 分裂规则: 如果配置了jmes参数,则将日志字段的值转化为JSON列表,并使用JMES提取值作为下一步的值。如果没有配置jmes参数,则将字段的值直接作为下一步的值。 如果上一步的值是一个列表或JSON列表格式的字符串,则按照此列表分裂并结束处理。否则使用sep、quote或lstrip将上一步的值进行CSV解析,根据解析后的多个值进行分裂并结束处理。 参数说明 参数名称 参数类型 是否必填 说明 字段名 String 是 需要分裂的字段名。 sep String 否 用于分隔多个值的分隔符。 quote String 否 用于引用多个值的配对类字符的引用符。 lstrip String 否 是否将值左边的空格去掉,默认为true。 jmes String 否 将字段值转化为JSON对象,并使用JMES提取特定值,再进行分裂操作。 output String 否 设置一个新的字段名,默认覆盖旧字段名。 返回结果 返回日志列表,列表中字段的值都是源列表中的值。 函数示例 测试数据 { "__topic__":, "age": 18, "content": 123, "name": "maki" , "__topic__":, "age": 18, "content": 123, "name": "maki" } 加工规则 e_set("__topic__", "V_SENT,V_RECV,A_SENT,A_RECV") e_split("__topic__") 加工结果 __topic__: V_SENT name: maki age: 18 content: 123 __topic__: V_RECV name: maki age: 18 content: 123 __topic__: A_SENT name: maki age: 18 content: 123 __topic__: A_RECV name: maki age: 18 content: 123 更多参考 支持和其他函数组合使用。
  • e_output、e_coutput 输出日志到指定的Logstream中,并可配置输出时的topic、source、tag等信息。 函数格式 e_output(logsteam, tags=None) e_coutput(logstream, tags=None) 预览时不会输出日志到目标Logstream中,而是输出到页面,供您调试。 参数说明 参数名称 参数类型 是否必填 说明 Logstream String 否 输出日志到已存在的Logstream。 tags Dict 否 为日志设置新的标签,以字典格式传入。 加工结果 e_output:输出日志到指定的Logstream中,且对应的日志不再执行后面的加工规则。 e_coutput:输出日志到指定的Logstream中,且对应的日志继续执行后面的加工规则。 函数示例 说明:因为函数将结果输出到指定日志流,因此无法在执行预览中测试,需要到实际的加工任务中测试。 示例1:将k2满足正则表达式,输出到target2中。 测试数据 { "__topic__":, "k1": "v1", , "k2":"v2", "x1":"v3" , "x5": "v4" } 加工规则 此处e_drop()函数的作用是把e_if()函数过滤掉的数据做删除处理。如果不添加该函数,则被过滤的数据被投递到默认的存储目标中。 e_if(e_match("k2", r"\w+"), e_output("target2")) e_drop() 加工结果 需要将日志输出到指定日志流,不支持预览 示例2:将k2满足正则表达式,输出到target2中,并topic设置为topic1。 测试数据 { "__topic__":, "k1": "v1", , "k2":"v2", "x1":"v3" , "x5": "v4" } 加工规则 e_if(e_match("k2", r"\w+"), e_output("target2", tags={"topic": "topic1"})) e_drop() 加工结果 需要将日志输出到指定日志流,不支持预览 更多参考 支持和其他函数组合使用。
  • e_keep 据条件判断是否保留日志。 函数格式 e_keep(condition=true) 支持固定标识KEEP,等价于e_keep()。 参数说明 参数名称 参数类型 是否必填 说明 condition Bool 否 默认为true,一般传递一个条件判断函数的结果。 返回结果 满足条件则返回原日志,不满足时丢弃日志。 函数示例 示例1:当__programe__字段的值是access的时候保留日志,否则丢弃日志。 测试数据 [ { "__programe__": "access" , "age": 18, "content": 123, "name": "maki" }, { "__programe__": "error" , "age": 18, "content": 123, "name": "maki" } ] 加工规则 e_keep(e_search("__programe__==access")) #等价于 e_if(e_search("not __programe__==access"), e_drop()) #等价于 e_if_else(e_search("__programe__==access"), e_keep(), e_drop()) 加工结果 保留__programe__字段值为access的日志。 __programe__: access age: 18 content: 123 name: maki 示例2:条件判断结果为true,保留日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(e_search("k1==v1")) 加工结果 k1: v1 k2: v2 k3: k1 示例3:条件判断结果为false,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(e_search("not k1==v1")) 加工结果:丢弃日志。 示例4:判断条件为false。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(false) 加工结果:丢弃日志。 更多参考 支持和其他函数组合使用。
共100000条