更新时间:2024-11-01 GMT+08:00
分享

操作符函数

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

函数列表

如果值为负数,请使用op_neg(positive value)函数,例如:您要表示-1,请使用op_neg(1)。

表1 操作符函数列表

类型

函数

说明

条件判断函数

op_if

根据判断条件返回不同表达式的值。

op_ifnull

返回第一个值不为None的表达式的值。

op_coalesce

返回第一个值不为None的表达式的值。

op_nullif

如果表达式1等于表达式2,返回None。否则返回表达式1的值。

op_and

使用逻辑运算and,对任意类型值进行真假判断,所有参数值为真时返回true。

op_not

使用逻辑运算not,对任意类型值进行真假判断,返回参数值的反义布尔值。

op_or

使用逻辑运算or,对任意类型值进行真假判断。当任意参数值为真时返回true,所有参数值为假时返回false。

比较

op_eq

按照a==b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。

op_ge

按照a>=b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。

op_gt

按照a>b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。

op_le

按照a<=b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。

op_lt

按照a<b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。

op_ne

按照a!=b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。

容器判断

op_len

计算文本字符串中的字符数,可用于字符串和其他返回元组、列表、字典的表达式。

op_in

判断字符串、元组、列表或字典中是否包含特定元素,返回true或false。

op_not_in

判断字符串、元组、列表或字典中是否不包含特定元素,返回true或false。

op_slice

对指定字符串、数组、元组进行截取。

op_index

根据字符串、数组、元组的下标返回其对应的元素。

一般性多值操作

op_add

计算多个值的和,可以是字符串或者数字等。

op_max

计算多个字段或表达式表示的数值的最大值。

op_min

计算多个字段或表达式表示的数值的最小值。

op_if

根据判断条件返回不同表达式的值。

  • 函数格式
    op_if(condition, expression1, expression2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    condition

    任意

    判断条件。如果该条件为非布尔值,系统将对其采用真假判断。

    expression1

    任意

    判断结果为true时,返回该表达式的值。

    expression2

    任意

    判断结果为false时,返回该表达式的值。

  • 返回结果

    返回相应的表达式的值。

  • 函数示例
    1. 示例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. 示例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. 示例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. 示例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. 示例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. 示例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. 示例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. 示例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. 示例1:
      • 测试数据
        {
         "number1": 123,
         "number2": 234
        }
      • 加工规则
        e_set("op_and", op_and(v("number1"),v("number2")))
      • 加工结果
        number1: 123
        number2: 234
        op_and:  true
    2. 示例2:
      • 测试数据
        {
         "number1": 0,
         "number2": 234
        }
      • 加工规则
        e_set("op_and", op_and(v("number1"),v("number2")))
      • 加工结果
        number1: 0
        number2: 234
        op_and: false
    3. 示例3:
      • 测试数据
        {
         "ctx1": "false",
         "ctx2": 234
        }
      • 加工规则
        e_set("op_and", op_and(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: false
        ctx2: 234
        op_and: true
    4. 示例4:
      • 测试数据
        {
         "ctx1": "true",
         "ctx2": 234
        }
      • 加工规则
        e_set("op_and", op_and(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: true
        ctx2: 234
        op_and: true

op_not

使用逻辑运算not,对任意类型值进行真假判断,返回表达式值的反义布尔值。

  • 函数格式
    op_not(expression)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    expression

    任意

    表达式。

  • 返回结果
    • 返回表达式值的反义布尔值。
    • 对任意类型值进行真假判断。
  • 函数示例
    1. 示例1:
      • 测试数据
        {
         "ctx1": "true"
        }
      • 加工规则
        e_set("op_not", op_not(v("ctx1")))
      • 加工结果
        ctx1: true
        op_not:  false
    2. 示例2:
      • 测试数据
        {
         "ctx1": 345
        }
      • 加工规则
        e_set("op_not", op_not(v("ctx1")))
      • 加工结果
        ctx1: 345
        op_not:  false
    3. 示例3:
      • 测试数据
        {
         "ctx1": 0
        }
      • 加工规则
        e_set("op_not", op_not(ct_int(v("ctx1"))))
      • 加工结果
        ctx1: 0
        op_not:  true
    4. 示例4:
      • 测试数据
        {
         "ctx1": "ETL"
        }
      • 加工规则
        e_set("op_not", op_not(v("ctx1")))
      • 加工结果
        ctx1: ETL
        op_not:  false
    5. 示例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. 示例1:
      • 测试数据
        {
         "ctx1": 123,
         "ctx2": 234
        }
      • 加工规则
        e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: 123
        ctx2: 234
        op_or:  true
    2. 示例2:
      • 测试数据
        {
         "ctx1": 0,
         "ctx2": 234
        }
      • 加工规则
        e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: 0
        ctx2: 234
        op_or:  true
    3. 示例3:
      • 测试数据
        {
         "ctx1": "ETL",
         "ctx2": "aa"
        }
      • 加工规则
        e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: ETL
        ctx2: aa 
        op_or:  true
    4. 示例4:
      • 测试数据
        {
         "ctx1": "true",
         "ctx2":"false"
        }
      • 加工规则
        e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: true
        ctx2: false
        op_or:  true
    5. 示例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. 示例6:
      • 测试数据
        {
         "ctx1": 124,
         "ctx2": "true"
        }
      • 加工规则
        e_set("op_or", op_or(v("ctx1"),v("ctx2")))
      • 加工结果
        ctx1: 124
        ctx2: true
        op_or:  true

op_eq

按照a==b条件进行计算,返回true或false。

  • 函数格式
    op_eq(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1相同

    运算值2。

  • 返回结果

    如果值1与值2相等返回true,否则返回false。

  • 函数示例
    1. 示例1:
      • 测试数据
        {
         "content": "hello",
         "ctx": "hello"
        }
      • 加工规则
        e_set("test_eq", op_eq(v("content"),v("ctx")))
      • 加工结果
        content: hello
        ctx: hello 
        test_eq: true
    2. 示例2:
      • 测试数据
        {
         "content": "hello",
         "ctx": "ctx"
        }
      • 加工规则
        e_set("test_eq", op_eq(v("content"),v("ctx")))
      • 加工结果
        content: hello
        ctx: ctx 
        test_eq: false

op_ge

按照a>=b条件进行计算,返回true或false。

  • 函数格式
    op_ge(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1相同

    运算值2。

  • 返回结果

    如果值1大于等于值2返回true,否则返回false。

  • 函数示例
    1. 示例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. 示例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

按照a>b条件进行计算,返回true或false。

  • 函数格式
    op_gt(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1相同

    运算值2。

  • 返回结果

    如果值1大于值2返回true,否则返回false。

  • 函数示例
    1. 示例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. 示例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

按照a<=b条件进行计算,返回true或false。

  • 函数格式
    op_le(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1相同

    运算值2。

  • 返回结果

    如果值1小于等于值2返回true,否则返回false。

  • 函数示例
    1. 示例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
        op_le: false
    2. 示例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

按照a<b条件进行计算,返回true或false。

  • 函数格式
    op_lt(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1相同

    运算值2。

  • 返回结果

    如果值1小于值2返回true,否则返回false。

  • 函数示例
    1. 示例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. 示例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

按照a!=b条件进行计算,返回true或false。

  • 函数格式
    op_ne(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1相同

    运算值2。

  • 返回结果

    如果值1不等于值2返回true,否则返回false。

  • 函数示例
    1. 示例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. 示例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(value)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value

    字符串、元组、列表或字典等

    运算值。

  • 返回结果

    返回字段的长度。

  • 函数示例
    • 测试数据
      {
       "content": "I,love,this,world"
      }
    • 加工规则
      e_set("op_len",op_len(v("content")))
    • 加工结果
      content: I,love,this,world
      op_len: 17

op_in

判断字符串、元组、列表或字典中是否包含特定元素,返回true或false。

  • 函数格式
    op_in(value1, value2)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    字符串、元组、列表或字典等

    字符串、元组、列表或者字典等。

    value2

    任意

    判断的元素。

    说明 函数中字符串、元组、列表或字典参数在前,元素在后。

  • 返回结果

    如果字符串、元组、列表或字典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

判断字符串、元组、列表或字典中是否不包含特定元素,返回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_slice

对指定字符串、数组、元组进行截取。

  • 函数格式
    op_slice(value, start=0, end=None, step=None)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value

    String

    函数要切片的值。

    start

    Num

    截取的起始位置,默认为位置0。

    end

    Num

    截取的结束位置,不包含该位置,默认为字符串结尾位置。

    step

    Num

    每次截取的长度。

  • 返回结果

    返回提取后的字符串。

  • 函数示例
    1. 示例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. 示例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_index

根据字符串、数组、元组的下标返回其对应的元素。

  • 函数格式
    op_index(value, index)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value

    String

    字符串、数组、元组等。

    index

    Num

    需要传入的字符串、数组或元组的下标。

  • 返回结果

    返回下标对应的元素。

  • 函数示例
    1. 示例1:返回word字段下标为0的元素。
      • 测试数据
        {
         "word":  "I,love,this,world"
        }
      • 加工规则
        e_set("op_index",op_index(v("word"),0))
      • 加工结果
        word:  I,love,this,world
        op_index: I
    2. 示例2:返回word字段下标为3的元素。
      • 测试数据
        {
         "word":  "I,love,this,world"
        }
      • 加工规则
        e_set("op_index",op_index(v("word"),3))
      • 加工结果
        word:  I,love,this,world
        op_index: o

op_add

计算多个值的和,可以是字符串或者数字等。

  • 函数格式
    op_add(value1, value2, ...)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    字符串、元组、列表或字典等

    运算值1。

    value2

    必须与值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. 示例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. 示例3:给网址添加HTTPS头。
      • 测试数据
        {
         "host": "xx.com"
        }
      • 加工规则
        e_set("website", op_add("https://", v("host")))
      • 加工结果
        host: xx.com
        website: https://xx.com

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_min

计算多个字段或表达式表示的数值的最小值。

  • 函数格式
    op_min(value1, value2, ...)
  • 参数说明

    参数名称

    参数类型

    是否必填

    说明

    value1

    任意

    运算值1。

    value2

    必须与值1一样

    运算值2。

  • 返回结果

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

  • 函数示例
    • 测试数据
      {
       "price_orange":  2,
       "priority_apple":  13
      }
    • 加工规则
      e_set("op_min", op_min(ct_int(v("price_orange")),ct_int(v("priority_apple"))))
    • 加工结果
      price_orange:  2
      priority_apple:  13
      op_min:  2

相关文档