本文档主要介绍操作符函数的语法规则,包括参数解释、函数示例等。

函数列表

类型 函数 说明
条件判断函数 op_if 根据判断条件返回不同表达式。
op_ifnullop_coalesce 返回第一个值不为None的表达式的值。
op_nullif 如果表达式1等于表达式2,返回None。否则返回表达式1。
op_and 逻辑and运算。
op_not 逻辑nor运算。
op_or 逻辑or运算。
比较 op_eq 计算a==b。a和b的类型必须一致,例如都是字符串、数字或者列表。
op_ge 计算a>=b。a和b的类型必须一致,例如都是字符串、数字或者列表。
op_gt 计算a>b。a和b的类型必须一致,例如都是字符串、数字或者列表。
op_le 计算a<=b。a和b的类型必须一致,例如都是字符串、数字或者列表。
op_lt 计算a<b。a和b的类型必须一致,例如都是字符串、数字或者列表。
op_ne 计算a!=b。a和b的类型必须一致,例如都是字符串、数字或者列表。
容器判断 op_len 计算文本字符串中的字符数,可用于字符串和其他返回元祖、列表、字典的表达式。
op_in 判断字符串、元祖、列表或字典中是否包含特定元素。
op_not_in 判断字符串、元祖、列表或字典中是否不包含特定元素。
op_slice 对指定字符串进行截取。
一般性多值操作 op_add 计算多个值的和,可以是字符串或者数字等。
op_max 计算多个字段或表达式表示的数值的最大值。
op_min 计算多个字段或表达式表示的数值的的最小值。

op_if

  • 函数格式
    op_if(条件,值1,值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    条件 任意 判断条件。对非布尔值,采用真假判断。
    值1 任意 条件为True时返回的函数表达式1。
    值2 任意 条件为False时返回的函数表达式2。
  • 返回结果

    返回相应的表达式。

  • 函数示例
    • 示例1:如果contentTrue,则把表达式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

  • 函数格式
    op_ifnull(值1,值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 待返回的函数表达式。
    值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

op_ifnull函数类似,请参见op_ifnull的参数说明和示例。

op_nullif

  • 函数格式
    op_nullif(值1,值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数要判断的值。
    值2 任意 函数要判断的值。
  • 返回结果

    如果值1和值2相等返回None,否则返回值1。

  • 函数示例
    • 示例1:
      原始日志:
      content: hello
      escape_name: Etl
      加工规则:
      e_set("test_ifnull", op_nullif(v("content"),v("escape_name")))
      加工结果:
      content: hello
      escape_name: Etl
      test_nullif:  hello
    • 示例2:
      原始日志:
      content: hello
      escape_name: hello
      加工规则:
      e_set("test_ifnull", op_nullif(v("content"),v("escape_name")))
      加工结果:
      content: hello
      escape_name: hello
      #因为content与escape_name内容一样,所以返回None,即没有任何内容返回给test_isnull字段。

op_and

  • 函数格式
    op_and(值1, 值2, ...)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数逻辑and的运算值。
    值2 任意 函数逻辑and的运算值。
  • 返回结果
    • 所有参数值为真时返回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: True
    • 示例3:
      原始日志:
      ctx1: False
      ctx2: 234
      加工规则:
      e_set("op_and", op_and(v("ctx1"),v("ctx2")))
      加工结果:
      ctx1: False
      ctx2: 234
      op_and: False
    • 示例4:
      原始日志:
      ctx1: True
      ctx2: 234
      加工规则:
      
      e_set("op_and", op_and(v("ctx1"),v("ctx2")))
      加工结果:
      ctx1: True
      ctx2: 234
      op_and: True

op_not

  • 函数格式
    
    op_not(值1)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数逻辑not的运算值。
  • 返回结果
    • 返回参数值的真假反义布尔值。
    • 对任意类型值进行真假判断
  • 函数示例
    • 示例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(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:  True

op_or

  • 函数格式
    op_or(值1, 值2, ...变参...)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数逻辑or的运算值。
    值2 任意 函数逻辑or的运算值。
  • 返回结果
    • 任意参数值为真时返回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: ALIYUN
      加工规则:
      e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      加工结果:
      ctx1: ETL
      ctx2: ALIYUN
      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(v("ctx1"),v("ctx2")))
      加工结果:
      ctx1: 0
      ctx2: False
      op_or:  False
    • 示例6:
      原始日志:
      ctx1: 124
      ctx2: True
      加工规则:
      e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      加工结果:
      ctx1: 124
      ctx2: True
      op_or:  True

op_eq

  • 函数格式
    op_eq(值1,值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数待比较的值。
    值2 必须与值1相同 函数待比较的值。
  • 返回结果

    如果值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_ge

  • 函数格式
    op_ge(值1, 值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数待比较的值。
    值2 必须与值1相同 函数待比较的值。
  • 返回结果

    如果值1大于等于值2返回True,否则返回False

  • 函数示例
    • 示例1:假如apple_price的值大于等于orange_price的值,则返回True。
      原始日志:
      apple_price: 16
      orange_price: 14
      加工规则:
      e_set("test_ge", op_ge(ct_int(v("apple_price")),ct_int(v("orange_price"))))
      加工结果:
      apple_price: 16
      orange_price: 14
      test_ge: true
    • 示例2:假如apple_price的值小于orange_price的值,则返回False。
      原始日志:
      apple_price: 12
      orange_price: 14
      加工规则:
      e_set("test_ge", op_ge(ct_int(v("apple_price")),ct_int(v("orange_price"))))
      加工结果:
      apple_price: 12
      orange_price: 14
      test_ge: false

op_gt

  • 函数格式
    op_gt(值1, 值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数待比较的值。
    值2 必须与值1相同 函数待比较的值。
  • 返回结果

    如果值1大于值2返回True,否则返回False。

  • 函数示例
    • 示例1:判断old_number取值是否大于young_number取值,大于返回True否则返回False。
      原始日志:
      old_number: 16
      young_number: 14
      加工规则:
      e_set("op_gt",op_gt(ct_int(v("old_number")),ct_int(v("young_number"))))
      加工结果:
      old_number: 16
      young_number: 14
      test_ge: True
    • 示例2:判断priority取值是否大于price取值,大于返回True否则返回False。
      原始日志:
      priority: 14
      price: 16
      加工规则:
      e_set("op_gt",op_gt(ct_int(v("priority")),ct_int(v("price"))))
      加工结果:
      priority: 14
      price: 16
      test_ge: False

op_le

  • 函数格式
    op_le(值1, 值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数待比较的值。
    值2 必须与值1相同 函数待比较的值。
  • 返回结果

    如果值1小于等于值2返回True,否则返回False。

  • 函数示例
    • 示例1:如果priority的值小于等于price的值,返回true否则返回False。
      原始日志:
      priority: 16
      price: 14
      加工规则:
      e_set("op_le",op_le(ct_int(v("priority")),ct_int(v("price"))))
      加工结果:
      priority: 16
      price: 14
      test_ge: False
    • 示例2:如果priority的值小于等于price的值,返回True否则返回False。
      原始日志:
      priority: 14
      price: 16
      加工规则:
      e_set("op_le",op_le(ct_int(v("priority")),ct_int(v("price"))))
      加工结果:
      priority: 14
      price: 16
      test_ge: True

op_lt

  • 函数格式
    op_lt(值1, 值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数待比较的值。
    值2 必须与值1相同 函数待比较的值。
  • 返回结果

    如果值1小于值2返回True,否则返回False。

  • 函数示例
    • 示例1: 如果priority的值小于等于price的值,返回True否则返回False。
      原始日志:
      priority: 16
      price: 14
      加工规则:
      e_set("op_lt",op_lt(ct_int(v("priority")),ct_int(v("price"))))
      加工结果:
      priority: 16
      price: 14
      op_lt: False
    • 示例2:如果priority的值小于等于price的值,返回True否则返回False。
      原始日志:
      priority: 14
      price: 15
      加工规则:
      e_set("op_lt",op_lt(ct_int(v("priority")),ct_int(v("price"))))
      加工结果:
      priority: 14
      price: 15
      op_lt: True

op_ne

  • 函数格式
    op_ne(值1, 值2)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数待比较的值。
    值2 必须与值1相同 函数待比较的值。
  • 返回结果

    如果值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_len

  • 函数格式
    op_len(值)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    字符串、元组、列表或字典等 函数要计算长度的值。
  • 返回结果

    返回字段的长度。

  • 函数示例
    原始日志:
    content: I,love,this,world
    加工规则:
    e_set("op_len",op_len(v("content")))
    加工结果:
    content: I,love,this,world
    op_len: 17

op_in

  • 函数格式
    op_in(a, b)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    a 字符串、元祖、列表或字典等 函数要判断的容器。
    b 任意 函数要判断的元素。
    说明 函数中容器参数在前,元素在后。
  • 返回结果

    如果容器a中包含元素b返回true,否则返回False。

  • 函数示例
    原始日志:
    list:  [1, 3, 2, 7, 4, 6]
    num2:  2
    加工规则:
    e_set("op_in",op_in(v("list"),v("num2")))
    加工结果:
    list:  [1, 3, 2, 7, 4, 6]
    num2:  2
    op_in: True

op_not_in

  • 函数格式
    op_not_in(容器, 元素)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    容器 字符串、元祖、列表或字典等 函数要判断的字符串,元祖,列表或者字典等。
    元素 任意 函数要判断的元素。
    说明 函数中容器参数在前,元素在后。
  • 返回结果

    如果容器中不包含元素返回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_in: True

op_slice

  • 函数格式
    op_slice(值, start=None, end=None, step)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    String 函数要切片的值。
    start Num 截取的起始位置,默认为位置0。
    end Num 截取的结束位置,不包含该位置,默认为字符串结尾位置。
    step Num 每次截取的长度。
  • 返回结果

    返回提取后的字符串。

  • 函数示例
    • 示例1:对word字段从开头到结尾开始进行机截取,步长为2。
      原始日志:
      word:  I,love,this,world
      加工规则:
      e_set("op_slice",op_slice(v("word"),2))
      加工结果:
      word:  I,love,this,world
      op_slice: I,
    • 示例2:对word字段从位置2到位置9进行截取,步长为1。
      原始日志:
      word:  I,love,this,world
      加工规则:
      e_set("op_slice",op_slice(v("word"),2,9,1))
      加工结果:
      word:  I,love,this,world
      op_slice: love,th

op_add

  • 函数格式
    op_add(值1,值2, ...)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 字符串、元祖、列表或字典等 函数要进行+操作的值。
    值2 必须与值1一样 函数要进行+操作的值。
  • 返回结果

    返回数值+操作后的数值。

  • 函数示例
    • 示例1:计算price_orange和price_apple总金额。
      原始日志:
      price_orange: 2
      price_apple: 13
      加工规则:
      e_set("account",op_add(ct_int(v("price_orange")),ct_int(v("price_apple"))))
      加工结果:
      price_orange: 2
      price_apple: 13
      account:  15
    • 示例2:统计bytes_in和bytes_out的和。
      原始日志:
      bytes_in: 214
      bytes_out: 123
      加工规则:
      e_set("total_bytes", op_add(ct_int(v("bytes_in"), ct_int(v("bytes_out")))))
      加工结果:
      bytes_in: 214
      bytes_out: 123
      total_bytes:  337
    • 示例3:给网址添加https头。
      原始日志:
      host: aliyun.com
      加工规则:
      e_set("website", op_add("https://", v("host")))
      加工结果:
      host: aliyun.com
      website: https://aliyun.com

op_max

  • 函数格式
    op_max(值1, 值2, ...)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数要进行比较的值。
    值2 必须与值1一样 函数要进行比较的值。
  • 返回结果

    返回多个数值中的最大值。

  • 函数示例
    原始日志:
    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_min

  • 函数格式
    op_min(值1, 值2, ...)
  • 参数说明
    参数名称 参数类型 是否必填 说明
    值1 任意 函数要进行比较的值。
    值2 必须与值1一样 函数要进行比较的值。
  • 返回结果

    返回多个数值中的最小值。

  • 函数示例
    原始日志:
    price_orange:  2
    price_apple:  13
    加工规则:
    e_set("op_min", op_min(ct_int(v("price_orange")),ct_int(v("price_apple"))))
    加工结果:
    price_orange:  2
    price_apple:  13
    op_min:  2