本文档主要介绍操作符函数的语法规则,包括参数解释、函数示例等。
说明 如果值为负数,请使用op_neg(正数)函数,例如:您要表示
-1
,请使用op_neg(1)。
函数列表
类型 | 函数 | 说明 |
---|---|---|
条件判断函数 | op_if | 根据判断条件返回不同表达式。 |
op_ifnull,op_coalesce | 返回第一个值不为None的表达式的值。 | |
op_nullif | 如果表达式1等于表达式2,返回None。否则返回表达式1。 | |
op_and | 使用逻辑运算and,对任意类型值进行真假判断。 | |
op_not | 使用逻辑运算not,对任意类型值进行真假判断。 | |
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_index | 根据字符串、数组、元组的下标返回其对应的元素。 | |
一般性多值操作 | op_add | 计算多个值的和,可以是字符串或者数字等。 |
op_max | 计算多个字段或表达式表示的数值的最大值。 | |
op_min | 计算多个字段或表达式表示的数值的最小值。 |
op_if
- 函数格式
op_if(条件,值1,值2)
- 参数说明
参数名称 参数类型 是否必填 说明 条件 任意 是 判断条件。如果该条件为非布尔值,系统将对其采用真假判断,详情请参见真假判断。 值1 任意 是 条件为True时返回的函数表达式1。 值2 任意 是 条件为False时返回的函数表达式2。 - 返回结果
返回相应的表达式。
- 函数示例
- 示例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:如果
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
- 示例1:
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字段。
- 示例1:
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
- 示例1:
op_not
- 函数格式
op_not(值)
- 参数说明
参数名称 参数类型 是否必填 说明 值 任意 是 函数逻辑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
- 示例1:
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
- 示例1:
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
- 示例1:
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
- 示例1:假如apple_price的值大于等于orange_price的值,则返回True。
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
- 示例1:判断old_number取值是否大于young_number取值,大于返回True否则返回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
- 示例1:如果priority的值小于等于price的值,返回true否则返回False。
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
- 示例1: 如果priority的值小于等于price的值,返回True否则返回False。
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
- 示例1:
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
- 示例1:对word字段从开头到结尾开始进行截取,步长为2。
op_index
- 函数格式
op_index(值, index)
- 参数说明
参数名称 参数类型 是否必填 说明 值 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_slice: 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(值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
- 示例1:计算price_orange和price_apple总金额。
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