操作符函数
本文介绍操作符函数的语法规则,包括参数解释、函数示例等。
函数列表
如果值为负数,请使用op_neg(positive value)函数,例如:您要表示-1,请使用op_neg(1)。
类型 |
函数 |
说明 |
---|---|---|
条件判断函数 |
根据判断条件返回不同表达式的值。 |
|
返回第一个值不为None的表达式的值。 |
||
返回第一个值不为None的表达式的值。 |
||
如果表达式1等于表达式2,返回None。否则返回表达式1的值。 |
||
使用逻辑运算and,对任意类型值进行真假判断,所有参数值为真时返回true。 |
||
使用逻辑运算not,对任意类型值进行真假判断,返回参数值的反义布尔值。 |
||
使用逻辑运算or,对任意类型值进行真假判断。当任意参数值为真时返回true,所有参数值为假时返回false。 |
||
比较 |
按照a==b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。 |
|
按照a>=b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。 |
||
按照a>b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。 |
||
按照a<=b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。 |
||
按照a<b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。 |
||
按照a!=b条件进行计算,返回true或false。a和b类型必须一致,例如都是字符串、数字或者列表。 |
||
容器判断 |
计算文本字符串中的字符数,可用于字符串和其他返回元组、列表、字典的表达式。 |
|
判断字符串、元组、列表或字典中是否包含特定元素,返回true或false。 |
||
判断字符串、元组、列表或字典中是否不包含特定元素,返回true或false。 |
||
对指定字符串、数组、元组进行截取。 |
||
根据字符串、数组、元组的下标返回其对应的元素。 |
||
一般性多值操作 |
计算多个值的和,可以是字符串或者数字等。 |
|
计算多个字段或表达式表示的数值的最大值。 |
||
计算多个字段或表达式表示的数值的最小值。 |
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
- 测试数据
- 示例1:如果content为true,则把表达式1的值赋给test_if。
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
- 测试数据
- 示例1:
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
- 测试数据
- 示例1:
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
- 测试数据
- 示例1:
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
- 测试数据
- 示例1:
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
- 测试数据
- 示例1:
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
- 测试数据
- 示例1:
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
- 测试数据
- 示例1:
op_ge
按照a>=b条件进行计算,返回true或false。
- 函数格式
op_ge(value1, value2)
- 参数说明
参数名称
参数类型
是否必填
说明
value1
任意
是
运算值1。
value2
必须与值1相同
是
运算值2。
- 返回结果
如果值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
- 测试数据
- 示例1:假如apple_price的值大于等于orange_price的值,则返回true。
op_gt
按照a>b条件进行计算,返回true或false。
- 函数格式
op_gt(value1, value2)
- 参数说明
参数名称
参数类型
是否必填
说明
value1
任意
是
运算值1。
value2
必须与值1相同
是
运算值2。
- 返回结果
如果值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
- 测试数据
- 示例1:判断old_number取值是否大于young_number取值,大于返回true否则返回false。
op_le
按照a<=b条件进行计算,返回true或false。
- 函数格式
op_le(value1, value2)
- 参数说明
参数名称
参数类型
是否必填
说明
value1
任意
是
运算值1。
value2
必须与值1相同
是
运算值2。
- 返回结果
如果值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 op_le: 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
- 测试数据
- 示例1:如果priority的值小于等于price的值,返回true否则返回false。
op_lt
按照a<b条件进行计算,返回true或false。
- 函数格式
op_lt(value1, value2)
- 参数说明
参数名称
参数类型
是否必填
说明
value1
任意
是
运算值1。
value2
必须与值1相同
是
运算值2。
- 返回结果
如果值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
- 测试数据
- 示例1: 如果priority的值小于price的值,返回true否则返回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
- 测试数据
- 示例1:
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:对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
- 测试数据
- 示例1:对word字段从起点开始进行截取,结尾为2。
op_index
根据字符串、数组、元组的下标返回其对应的元素。
- 函数格式
op_index(value, index)
- 参数说明
参数名称
参数类型
是否必填
说明
value
String
是
字符串、数组、元组等。
index
Num
否
需要传入的字符串、数组或元组的下标。
- 返回结果
返回下标对应的元素。
- 函数示例
- 示例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:返回word字段下标为3的元素。
- 测试数据
{ "word": "I,love,this,world" }
- 加工规则
e_set("op_index",op_index(v("word"),3))
- 加工结果
word: I,love,this,world op_index: o
- 测试数据
- 示例1:返回word字段下标为0的元素。
op_add
计算多个值的和,可以是字符串或者数字等。
- 函数格式
op_add(value1, value2, ...)
- 参数说明
参数名称
参数类型
是否必填
说明
value1
字符串、元组、列表或字典等
是
运算值1。
value2
必须与值1一样
是
运算值2。
- 返回结果
返回求和操作后的数值。
- 函数示例
- 示例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": "xx.com" }
- 加工规则
e_set("website", op_add("https://", v("host")))
- 加工结果
host: xx.com website: https://xx.com
- 测试数据
- 示例1:计算price_orange和price_apple总金额。
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
- 测试数据