华为云用户手册

  • ip_to_format 将输入的CIDR地址块按照Prefixlen或者Netmask格式输出。 函数格式 ip_to_format(cidr_subnet, want_prefix_len=0, default="") 参数说明 参数名称 参数类型 是否必填 说明 cidr_subnet String 是 输入CIDR地址块,例如:192.168.10.0/24 want_prefix_len Int 否 设置返回格式,默认为0。 0:无格式返回。 1:prefix格式返回。 2:netmask格式返回。 3:IP网段格式返回。 default String 否 无法将输入的CIDR地址块按照格式输出时,返回该值。 返回结果 特定格式的IP地址。 函数示例 按照IP地址网段格式输出。 测试数据 { "ip": "192.168.11.0/24" } 加工规则 e_set("result",ip_to_format(v("ip"),3)) 加工结果 ip: 192.168.11.0/24 result: 192.168.11.0-192.168.11.255 按照netmask格式输出。 测试数据 { "ip": "192.168.11.0/24" } 加工规则 e_set("result",ip_to_format(v("ip"),2)) 加工结果 ip: 192.168.11.0/24 result: 192.168.11.0/255.255.255.0 按照prefix格式输出。 测试数据 { "ip": "192.168.11.0/24" } 加工规则 e_set("result",ip_to_format(v("ip"),1)) 加工结果 ip: 192.168.11.0/24 result: 192.168.11.0/24
  • ip_overlaps 两个网段是否存在重叠。 函数格式 ip_overlaps(cidr_subnet, cidr_subnet2, default="") 参数说明 参数名称 参数类型 是否必填 说明 cidr_subnet String 是 输入CIDR地址块1。 cidr_subnet2 String 是 输入CIDR地址块2。 default String 否 无法判断两个CIDR地址块是否重叠时,返回该值。 返回结果 0: 两个CIDR地址块不重叠 1: 两个CIDR地址块重叠在结束位置 -1: 两个CIDR地址块重叠在开始位置 函数示例 示例1:两个CIDR地址块不重叠。 测试数据 { "a": "192.168.0.0/24", "b": "192.168.1.0/24" } 加工规则 e_set("result",ip_overlaps(v("a"),v("b"))) 加工结果 a: 192.168.0.0/24 b: 192.168.1.0/24 result: 0 示例2:两个CIDR地址在开始位置重叠。 测试数据 { "a": "192.168.1.0/24", "b": "192.168.0.0/23" } 加工规则 e_set("result",ip_overlaps(v("a"),v("b"))) 加工结果 a: 192.168.1.0/24 b: 192.168.0.0/23 result: 1 示例3:两个CIDR地址在结尾位置重叠。 测试数据 { "a": "192.168.0.0/23", "b": "192.168.1.0/24" } 加工规则 e_set("result",ip_overlaps(v("a"),v("b"))) 加工结果 a: 192.168.0.0/23 b: 192.168.1.0/24 result: 1
  • geo_parse 根据IP地址解析出所属国家、省份和城市等信息。 函数格式 geo_parse(ip, keep_fields=None, ip_sep=None) 参数说明 参数名称 参数类型 是否必填 说明 ip String 是 IP地址,表示解析该IP地址所属国家、省分和市信息。如果包含多个IP地址,可通过ip_sep参数指定分割符。 keep_fields Tuple 否 返回结果中包含的key信息。支持的key如下列表: city:城市名称。 province:省份名称。 country:国家名称。 isp:所属网络运营商名称。 lat:IP地址所在位置的纬度。 lon:IP地址所在位置的经度。 例如keep_fields=("city","country")表示仅输出city和country字段信息。 此外keep_fields也支持重命名。例如(("city","cty"),("country","state"))表示以cty和state形式输出。 注意:keep_fields参数为tuple类型,如果只有一个参数,需要添加逗号,例如("city",)或者(("city","cty"),) ip_sep String 否 IP地址分隔符,用于将包含多个IP地址的字符串分割为多个IP地址,解析结果通过JSON格式返回。默认值为None,表示不进行分隔。 返回结果 返回字典形式数据。 函数示例 单个IP查询。 测试数据 { "ip": "192.168.0.1" } 加工规则 e_set("geo_parse", geo_parse("192.168.0.1")) 加工结果(私网地址结果为空,使用公网地址可解析出内容) ip: 192.168.0.1 geo_parse: {"city": "", "province": "", "country": "", "isp": "", "lat": "", "lon": ""} 多个IP查询。 测试数据 { "ip": "192.168.0.1" } 加工规则 e_set("geo_parse", geo_parse("192.168.0.1,192.168.0.2", ip_sep=",")) 加工结果(私网地址结果为空,使用公网地址可解析出内容) geo_parse: {"192.168.0.1": {"province": "", "country": "", "lat": "", "lon": ""}, "192.168.0.2": {"city": "", "province": "", "country": "", "isp": "", "lat": "", "lon": ""}} ip: 192.168.0.1
  • ip_cidrmatch IP地址是否属于CIDR地址块。 函数格式 ip_cidrmatch(cidr_subnet, ip, default="") 参数说明 参数名称 参数类型 是否必填 说明 cidr_subnet String 是 CIDR地址块 ip String 是 IP地址。 default String 否 如果IP地址与CIDR地址块无法匹配时,返回该值。 返回结果 当IP地址属于CIDR地址块时,返回true,否则返回false。 函数示例 ipv4地址与CIDR地址块匹配。 测试数据 { "subnet": "192.168.1.0/24" } 加工规则 e_set("result",ip_cidrmatch(v("subnet"),"192.168.1.11")) 加工结果 subnet: 192.168.1.0/24 result: true ip地址与CIDR地址块无法匹配。 测试数据 { "subnet": "192.168.1.0/24" } 加工规则 e_set("result",ip_cidrmatch(v("subnet"),“192.168.100.10”, default="error")) 加工结果 subnet: 192.168.1.0/24 result: error
  • ip_version 判断IP地址为IPv4还是IPv6。 函数格式 ip_version(ip, default="") 参数说明 参数名称 参数类型 是否必填 说明 ip String 是 输入IP地址。 default String 否 无法判断IP地址版本时,返回该值。 返回结果 IPv4或IPv6。 函数示例 Ipv4地址。 测试数据 { "ip": "10.21.115.10" } 加工规则 e_set("version",ip_version(v("ip"))) 加工结果 ip: 10.21.115.10 version: IPv4 Ipv6地址。 测试数据 { "ip": "2001:0db8:85a3:0000:0000:8a2e:0370:7334" } 加工规则 e_set("version",ip_version(v("ip"))) 加工结果 ip: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 version: IPv6
  • e_pack_fields 用e_pack_fields函数将日志字段进行打包,并输出到新的字段中。 函数格式 e_pack_fields(output_fields,include=".*",exclude=None,drop_packed=true) 参数说明 参数 类型 是否必填 说明 output_field String 是 指定打包后输出的字段名称。其值为JSON格式。 include String 否 白名单配置,符合正则表达式的字段会被打包。默认为".*" ,表示全部匹配。 exclude String 否 黑名单配置,符合正则表达式的字段不会被打包。默认为None,表示不进行匹配判断。 drop_packed Boolean 否 打包数据后是否删除被打包的原数据,默认为true。 true(默认值):输出结果中删除被打包的原数据。 false:输出结果中不删除被打包的原数据。 返回结果 返回被打包后的日志数据。 函数示例 示例1:将日志所有字段打包到test字段,默认删除被打包的原始字段。 测试数据 { "test1":123, "test2":456, "test3":789 } 加工规则 e_pack_fields("test") 加工结果 test:{"test1": "123", "test2": "456", "test3": "789"} 示例2:将日志所有字段打包到test字段,不删除被打包的原始字段。 测试数据 { "test1":123, "test2":456, "test3":789 } 加工规则 e_pack_fields("test",drop_packed=false) 加工结果 test:{"test1": "123", "test2": "456", "test3": "789"} test1:123 test2:456 test3:789 示例3:打包test和abcd字段到content字段,不删除被打包的原始字段。 测试数据 { "abcd@#%":123, "test":456, "abcd":789 } 加工规则 e_pack_fields("content", include="\w+", drop_packed=false) 加工结果 abcd:789 abcd@#%:123 content:{"test": "456", "abcd": "789"} test:456 示例4:不打包test和abcd字段,其余字段打包到content字段,删除被打包的原始字段。 测试数据 { "abcd@#%":123, "test":456, "abcd":789 } 加工规则 e_pack_fields("content", exclude="\w+", drop_packed=true) 加工结果 abcd:789 content:{"abcd@#%": "123"} test:456
  • e_rename 调用e_rename函数重命名符合条件的日志字段名称。 函数格式 e_rename("key1", "new key1", "key2", "new key2", ..., regex=false) 函数中key和new key必须成对出现。 参数说明 参数 参数类型 是否必填 说明 key String 是 日志字段名,可以为正则表达式。当字段名完全满足条件时,重命名该字段。至少需要配置一个字段。 new key String 是 重命名后的字段名。 regex Boolean 否 如果设置为false,表示不使用正则表达式进行匹配。当不配置该参数时,系统默认取值为true。 返回结果 返回重命名后的字段。 函数示例 示例1:将字段host重命名为client_hos。 测试数据 { "host": 1006 } 加工规则 e_rename("host","client_host") 加工结果 client_host: 1006 示例2:不存在字段时,不进行重命名。 测试数据 { "host": 1006 } 加工规则 e_rename("url","rename_url") 加工结果 host: 1006 更多参考 支持和其他函数组合使用。
  • e_drop_fields 调用e_drop_fields函数删除符合条件的日志字段。 函数格式 e_drop_fields(key1, key2, ....,regex=false) 参数说明 参数 参数类型 是否必填 说明 key String 是 日志字段名,可以为正则表达式。当字段名完全满足条件时删除该字段,保留不满足条件的字段。关于正则表达式的更多信息,请参见正则表达式。至少需要配置一个日志字段。 regex Boolean 否 如果设置为false,表示不使用正则表达式进行匹配。当不配置该参数时,系统默认取值为true。 返回结果 返回删除后的日志。 函数示例 如果content字段的值为123,则删除content字段和age字段。 测试数据 { "age": 18, "content": 123, "name": "twiss" } 加工规则 e_if(e_search("content==123"), e_drop_fields("content", "age",regex=true)) 加工结果 name: twiss 更多参考 支持其他它函数组合使用。
  • V 调用v函数获得日志特定字段的值。当同时传入多个字段名时,返回日志中第一个存在的字段的值。 函数格式 v(key, ..., default=None) 参数说明 参数 参数类型 是否必填 说明 key String 是 指定字段名。 default 任意 否 指定的字段名不存在时,返回default的值。默认值为None。 返回结果 返回日志中第一个存在的字段值。不存在时返回default参数的值。 函数示例 将content字段的值赋给test_content字段。 测试数据 { "content": "hello" } 加工规则 e_set("test_content", v("content")) 加工结果 content: hello test_content: hello 更多参考 支持和其他函数组合使用。
  • e_set 调用e_set函数添加新字段或为现有字段设置新的字段值。 函数格式 e_set(key1, value1, key2, value2, mode="overwrite") 函数中key1和value1必须成对出现。 通过e_set函数设置时间字段F_TIME或__time__时,必须设置为数字、字符串。 e_set(F_TIME, "abc") # 错误 e_set(F_TIME, "12345678") # 正确 参数说明 参数 参数类型 是否必填 说明 key String 是 目标字段名,也可以通过字符串表达式获得该字段名。 value 任意 是 新的字段值。非字符串都转化成字符串放入日志中,其中元组、列表、字典会转换成JSON对象的字符串。 说明 如果传递的值是None,则不会进行更新操作。 mode String 否 字段的覆盖模式。默认为overwrite。 返回结果 返回更新后的日志。 函数示例 示例1:为字段设置固定值。 添加一个新字段city,字段值为上海。 e_set("city", "上海") 示例2:复制字段值。 调用单个表达式函数,将现有字段ret的值,赋给新字段result。 原始数据 {"ret": "value"} 加工规则 e_set("result", v("ret")) 加工结果 ret:value result:value 示例3:动态设置值。 调用组合表达式函数,获取第一个存在的字段值,返回其小写格式并赋值给字段result。 e_set("result", str_lower(v("ret", "return"))) 示例4:多次设置字段值。 原始数据 { "ret" : "fail" } 加工规则 e_set("event_type", "login event", "event_info", "login host") 加工结果 ret: fail event_type: login event event_info: login host 更多参考 支持和其他函数组合使用。
  • e_keep_fields 调用e_keep_fields函数保留符合条件的日志字段。 日志服务中包含内置的元字段,例如__time__、__topic__等。如果在调用e_keep_fields函数时没有保留__time__字段,则日志时间将被重置为系统当前时间。如果您不希望重置元字段的值,需要将元字段放入列表中,常见格式为F_TIME, F_META, F_TAGS, "f1", "f2"。 函数格式 e_keep_fields(key1, key2, ....,regex=false) 参数说明 参数 参数类型 是否必填 说明 key String 是 日志字段名,可以为正则表达式。当字段名完全满足条件时保留该字段,删除不满足条件的字段。至少需要配置一个字段。 regex Boolean 否 如果设置为false,表示不使用正则表达式进行匹配。当不配置该参数时,系统默认取值为true。 返回结果 返回保留的日志。 函数示例 如果content字段的值是123,则保留content和age字段。 测试数据 { "age": 18, "content": 123, "name": "twiss" } 加工规则 e_if(e_search("content==123"), e_keep_fields("content", "age")) 加工结果 age: 18 content: 123
  • 函数列表 函数 说明 V 获得日志特定字段的值。当同时传入多个字段名时,返回日志中第一个存在的字段的值。支持和其他函数组合使用。 e_set 添加新字段或为现有字段设置新的字段值。支持和其他函数组合使用。 e_drop_fields 删除符合条件的日志字段。支持和其他函数组合使用。 e_keep_fields 保留符合条件的日志字段。 e_pack_fields 打包日志字段,并输出到新的字段中。 e_rename 重命名符合条件的日志字段名称。支持和其他函数组合使用。
  • res_obs_file 使用res_obs_file函数从OBS Bucket中获取文件内容,并支持定期刷新。支持和其他函数组合使用。 建议日志服务Project和OBS Bucket处于同一地域,使用华为云内网获取数据。 函数格式 res_obs_file(endpoint,bucket,file) 参数说明 参数名称 数据类型 是否必填 说明 endpoint String 是 OBS中保存的文件地址。如obs.cn-north-4.huawei.com bucket String 是 OBS中使用的桶名,如lts-dsl。 file String 是 目标OBS文件的路径。例如test/data.txt,不能以正斜线(/)开头。 返回结果 返回字节流形式或文本形式的文件数据。 函数示例 示例1:从OBS中拉取JSON格式的数据。 JSON内容 { "users": [ { "name": "user1", "login_historys": [ { "date": "2019-10-10 0:0:0", "login_ip": "203.0.113.10" }, { "date": "2019-10-10 1:0:0", "login_ip": "203.0.113.10" } ] }, { "name": "user2", "login_historys": [ { "date": "2019-10-11 0:0:0", "login_ip": "203.0.113.20" }, { "date": "2019-10-11 1:0:0", "login_ip": "203.0.113.30" }, { "date": "2019-10-11 1:1:0", "login_ip": "203.0.113.50" } ] } ] } 测试数据 { "content":"123" } 加工规则 e_set( "json_parse", json_parse( res_obs_file( "https://obs.cn-north-7.ulanqab.huawei.com", "lts-dsl", "als_dsl.json" ) ), ) 加工结果 content: 123 json_parse: '{ "users": [ { "name": "user1", "login_historys": [ { "date": "2019-10-10 0:0:0", "login_ip": "203.0.113.10" }, { "date": "2019-10-10 1:0:0", "login_ip": "203.0.113.10" } ] }, { "name": "user2", "login_historys": [ { "date": "2019-10-11 0:0:0", "login_ip": "203.0.113.20" }, { "date": "2019-10-11 1:0:0", "login_ip": "203.0.113.30" }, { "date": "2019-10-11 1:1:0", "login_ip": "203.0.113.50" } ] } ] }' 示例2:从OBS中拉取文本内容。 文本内容 Test bytes 测试数据 { "content": "123" } 加工规则 e_set( "test_txt", res_obs_file( "https://obs.cn-north-7.ulanqab.huawei.com", "lts-dsl", "als_dsl.json" ) ) 加工结果 content: 123 test_txt: Test bytes
  • res_local 使用res_local函数从当前数据加工任务中拉取高级参数配置信息。支持和其他函数组合使用。 函数格式 res_local(param, default=None, type="auto") 参数说明 参数名称 数据类型 是否必填 说明 param String 是 对应高级参数配置中的Key。 default String 否 当param参数的值不存在时,返回该参数的值,默认值为None。 type String 否 数据输出时的数据格式。 auto(默认值):将原始值转化为JSON格式。如果转换失败则返回原始值。 JSON:将原始值转化为JSON格式。如果转换失败则返回default参数的值。 raw:返回原始值。 返回结果 根据参数配置,返回JSON格式数据或者原始值。 表1 成功示例 原始值 返回值 返回值类型 1 1 整数 1.2 1.2 浮点 true true 布尔 false false 布尔 "123" 123 字符串 null None None ["v1", "v2", "v3"] ["v1", "v2", "v3"] 列表 ["v1", 3, 4.0] ["v1", 3, 4.0] 列表 {"v1": 100, "v2": "good"} {"v1": 100, "v2": "good"} 字典 {"v1": {"v11": 100, "v2": 200}, "v3": "good"} {"v1": {"v11": 100, "v2": 200}, "v3": "good"} 字典 表2 失败示例 原始值 返回值 说明 (1,2,3) "(1,2,3)" 不支持元组,需使用列表形式。 true "true" 只支持true、false(小写)这两种布尔类型。 {1: 2, 3: 4} "{1: 2, 3: 4}" 字典的关键字只能是字符串。 函数示例 从高级参数配置中获取信息并赋值给local。高级参数配置中的Key为endpoint,Value为hangzhou。 测试数据 { "content": "1" } 加工规则 e_set("local", res_local('endpoint')) 加工结果 content: 1 local: hangzhou
  • 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
  • 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
  • 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_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_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
  • 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_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_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
  • 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_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_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
  • 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_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
共100000条