华为云用户手册

  • 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_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
  • 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 获得日志特定字段的值。当同时传入多个字段名时,返回日志中第一个存在的字段的值。支持和其他函数组合使用。 e_set 添加新字段或为现有字段设置新的字段值。支持和其他函数组合使用。 e_drop_fields 删除符合条件的日志字段。支持和其他函数组合使用。 e_keep_fields 保留符合条件的日志字段。 e_pack_fields 打包日志字段,并输出到新的字段中。 e_rename 重命名符合条件的日志字段名称。支持和其他函数组合使用。
  • 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 更多参考 支持和其他函数组合使用。
  • MILLIS_TO_TIMESTAMP(millis_expr)/TIMESTAMP_TO_MILLIS(timestamp_expr)函数 MILLIS_TO_TIMESTAMP函数将毫秒值转化为ISO8601格式的时间戳,转化后的参数可进行时间戳之间的运算。TIMESTAMP_TO_MILLIS将时间戳转化为毫秒值。 字段样例 __time: 2023-02-16T07:54:15.106Z,start_time: 1676534055106 查询和分析语句 SELECT __time,MILLIS_TO_TIMESTAMP(start_time),TIMESTAMP_TO_MILLIS(__time) 查询和分析结果 表5 查询和分析结果 __time EXPR$1 EXPR$2 2023-02-16T07:54:15.106Z 2023-02-16T07:54:05.000Z 1676534055106
  • CURRENT_DATE/ CURRENT_TIMESTAMP函数 CURRENT_DATE返回查询当天的凌晨零点的ISO8601时间,返回的为UTC时间,该函数可直接参与时间戳之间的运算。 CURRENT_TIMESTAMP返回查询当前的ISO8601时间,返回的为UTC时间,该函数可直接参与时间戳之间的运算。 字段样例 __time: 2023-02-14T02:35:56.706Z 查询和分析语句 select __time,CURRENT_DATE, CURRENT_TIMESTAMP,CURRENT_TIMESTAMP 查询和分析结果 表2 查询和分析结果 __time CURRENT_DATE CURRENT_TIMESTAMP 2023-02-14T02:35:56.706Z 2023-02-14T00:00:00.000Z 2023-02-14T14:35:57.000Z
  • 参考信息 unit说明 unit 说明 second 秒 minute 分 hour 时 day 日 week 周 month 月 quarter 季 year 年 extract_unit说明 extract_unit 说明 SECOND 秒 MINUTE 分 HOUR 时 DAY 每月的第几天 DOW 每周的第几天 DOY 每年的第几天 WEEK 每年的第几周 MONTH 月 QUARTER 季 YEAR 年
  • e_output、e_coutput 输出日志到指定的r日志流中,并可配置输出时tag信息。 函数格式 e_output(logsteam, tags=None) e_coutput(logstream, tags=None) 预览时不会输出日志到目标日志流中,而是输出到页面,供您调试。 参数说明 参数名称 参数类型 是否必填 说明 logstream String 否 需要输出日志流的代称,日志流代称在创建加工任务时配置目标日志流时指定。 tags Dict 否 为日志设置新的标签,以字典格式传入。 加工结果 e_output:输出日志到指定的日志流中,且对应的日志不再执行后面的加工规则。 e_coutput:输出日志到指定的日志流中,且对应的日志继续执行后面的加工规则。 函数示例 示例1:将k2满足正则表达式,输出到target2中。 测试数据 { "k1": "v1", "k2":"v2", "x1":"v3" , "x5": "v4" } 加工规则 此处e_drop()函数的作用是把e_if()函数过滤掉的数据做删除处理。如果不添加该函数,则被过滤的数据被投递到默认的存储目标中。创建任务时配置的第一条目标日志流为默认目标。 e_if(e_match("k2", r"\w+"), e_output("target2")) e_drop() 加工结果 { "k1": "v1", "k2": "v2", "x1": "v3", "x5": "v4" } 在结果预览处可以看到目标日志流代称变成了target2。 示例2:将k2满足正则表达式,输出到target2中,并设置tag。 测试数据 { "k1": "v1", "k2":"v2", "x1":"v3" , "x5": "v4" } 加工规则 e_if(e_match("k2", r"\w+"), e_output("target2", tags={"topic": "topic1"})) e_drop() 加工结果 { "k1": "v1", "__tag__": { "topic": "topic1" }, "k2": "v2", "x1": "v3", "x5": "v4" } 在结果预览处可以看到目标日志流代称变成了target2。 更多参考 支持和其他函数组合使用。
  • e_split 基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。 函数格式 e_split(字段名, sep=',', quote='"', lstrip=true, jmes=None, output=None) 分裂规则: 如果配置了jmes参数,则将日志字段的值转化为JSON列表,并使用JMES提取值作为下一步的值。如果没有配置jmes参数,则将字段的值直接作为下一步的值。 如果上一步的值是一个列表或JSON列表格式的字符串,则按照此列表分裂并结束处理。否则使用sep、quote或lstrip将上一步的值进行 CS V解析,根据解析后的多个值进行分裂并结束处理。 参数说明 参数名称 参数类型 是否必填 说明 字段名 String 是 需要分裂的字段名。 sep String 否 用于分隔多个值的分隔符。 quote String 否 用于引用多个值的配对类字符的引用符。 lstrip String 否 是否将值左边的空格去掉,默认为true。 jmes String 否 将字段值转化为JSON对象,并使用JMES提取特定值,再进行分裂操作。 output String 否 设置一个新的字段名,默认覆盖旧字段名。 返回结果 返回日志列表,列表中字段的值都是源列表中的值。 函数示例 测试数据 { "__topic__": "", "age": 18, "content": 123, "name": "maki" } 加工规则 e_set("__topic__", "V_SENT,V_RECV,A_SENT,A_RECV") e_split("__topic__") 加工结果 [ { "__topic__": "V_SENT", "name": "maki", "age": 18, "content": 123 }, { "__topic__": "V_RECV", "name": "maki", "age": 18, "content": 123 }, { "__topic__": "A_SENT", "name": "maki", "age": 18, "content": 123 }, { "__topic__": "A_RECV", "name": "maki", "age": 18, "content": 123 } ] 更多参考 支持和其他函数组合使用。
  • e_drop 根据条件判断是否丢弃日志。 函数格式 e_drop(condition=true) 支持固定标识DROP,等价于e_drop()。 参数说明 参数名称 参数类型 是否必填 说明 condition Bool 否 默认为true,一般传递一个条件判断函数的结果。 返回结果 满足条件则丢弃日志并返回None,否则返回原日志。 函数示例 示例1:当__programe__字段的值为access时丢弃日志,否则保留该日志。 测试数据 [ { "__programe__": "access", "age": 18, "content": 123, "name": "maki" }, { "__programe__": "error", "age": 18, "content": 123, "name": "maki" } ] 加工规则 e_if(e_search("__programe__==access"), DROP) 加工结果 丢弃__programe__字段值为access的日志,保留__programe__字段的值为error的日志。 __programe__: error age: 18 content: 123 name: maki 示例2:条件判断结果为true,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_drop(e_search("k1==v1")) 加工结果 因为k1==v1条件为true,因此丢弃该日志。 示例3:条件判断结果为false,保留日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_drop(e_search("not k1==v1")) 加工结果 k1: v1 k2: v2 k3: k1 示例4:不设置判断条件时,使用默认值true,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_drop() 加工结果 丢弃日志。 更多参考 支持和其他函数组合使用。
  • 函数列表 类型 函数 说明 事件操作 e_drop 根据条件判断是否丢弃日志。支持和其他函数组合使用。 e_keep 根据条件判断是否保留日志。 e_keep函数和e_drop函数都会丢弃日志。e_keep函数在不满足条件时丢弃,而e_drop函数则是在满足条件时丢弃。 # 以下4个加工规则等价 e_if_else(e_search("f1==v1"), e_keep(), e_drop()) e_if_else(e_search("not f1==v1"), e_drop()) e_keep(e_search("f1==v1")) e_drop(e_search("not f1==v1")) # 以下加工规则无意义 e_if(e_search("..."), e_keep()) e_keep() 支持和其他函数组合使用。 事件分裂 e_split 基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。支持和其他函数组合使用。 输出事件 e_output、e_coutput 输出日志到指定的日志流代称中(日志流代称在创建加工任务时配置目标日志流时指定),并可配置输出时的tag信息。 e_output:执行到e_output函数时,输出日志到指定的日志流中,且对应的日志不再执行后面的加工规则。 e_coutput:执行到e_coutput函数时,输出日志到指定的日志流中,且对应的日志继续执行后面的加工规则。 支持和其他函数组合使用。
  • e_keep 据条件判断是否保留日志。 函数格式 e_keep(condition=true) 支持固定标识KEEP,等价于e_keep()。 参数说明 参数名称 参数类型 是否必填 说明 condition Bool 否 默认为true,一般传递一个条件判断函数的结果。 返回结果 满足条件则返回原日志,不满足时丢弃日志。 函数示例 示例1:当__programe__字段的值是access的时候保留日志,否则丢弃日志。 测试数据 [ { "__programe__": "access" , "age": 18, "content": 123, "name": "maki" }, { "__programe__": "error" , "age": 18, "content": 123, "name": "maki" } ] 加工规则 e_keep(e_search("__programe__==access")) #等价于 e_if(e_search("not __programe__==access"), e_drop()) #等价于 e_if_else(e_search("__programe__==access"), e_keep(), e_drop()) 加工结果 保留__programe__字段值为access的日志。 __programe__: access age: 18 content: 123 name: maki 示例2:条件判断结果为true,保留日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(e_search("k1==v1")) 加工结果 k1: v1 k2: v2 k3: k1 示例3:条件判断结果为false,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(e_search("not k1==v1")) 加工结果:丢弃日志。 示例4:判断条件为false。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(false) 加工结果:丢弃日志。 更多参考 支持和其他函数组合使用。
  • IP函数语句 语句 说明 示例 IPV4_MATCH(address,subnet) 如果subnet属于address的子网地址则返回true,否则返回false。如果 address不是有效的IPv4地址,则返回false。如果 address是整数而不是字符串,则此函数更效率。 SELECT IPV4_MATCH (address,subnet) IPV4_PARSE(address) 将address解析为整数的IPv4地址。如果address是有效的IPv4地址,则它可以被解析。如果address不是有效的IPv4地址,则返回null。 SELECT IPV4_PARSE(address) IPV4_STRINGIFY(address) 将整数address转换为以点分隔的IPv4地址字符串。如果address是有效的IPv4地址的整数,则它可以被解析。如果address不能表示为IPv4地址,则返回null。 SELECT IPV4_STRINGIFY(address)
  • 示例及说明 IPV4_MATCH(address, subnet)函数 IPV4_MATCH函数,如果address属于subnet的子网ip,则返回true,否则返回false。如果address不是有效的IPv4地址,则返回false。如果address 是整数而不是字符串,则此函数具有更高的执行效率。 字段样例 Ipv4: 192.168.1.18 查询和分析语句 select IPV4,IPV4_MATCH(Ipv4, '192.168.0.0/16') 查询和分析结果 表1 查询和分析结果 IPV4 EXPR$1 192.168.1.18 true IPV4_PARSE(address)/ IPV4_STRINGIFY(address)函数 将address解析为整数的IPv4地址。如果address是有效的IPv4地址,则它可以被解析。如果address不是有效的IPv4地址,则返回null。 字段样例 Ipv4: 192.168.0.1 Num: 3232235521 查询和分析语句 select IPV4_PARSE(Ipv4), IPV4_STRINGIFY(Num) 查询和分析结果 表2 查询和分析结果 EXPR$0 EXPR$1 -1062731775 192.168.0.1
  • 解析方式介绍 云日志 服务支持两种日志结构化解析方式:云端结构化解析和ICAgent结构化解析,且一个日志流只能配置一种结构化方式,例如选择云端结构化解析后,不能再选择ICAgent结构化解析,需要删除后,才能重新选择。更多信息请参考图1。 若用户在日志接入的时候没有配置结构化解析,可以单独给目标日志流配置ICAgent结构化解析或云端结构化解析。 ICAgent结构化解析是在采集侧做结构化,利用的是客户节点上的资源,将结构化完成的数据上报到LTS。推荐用户使用ICAgent结构化解析的方式,更多内容请参考ICAgent结构化解析规则说明。 云端结构化解析是通过不同的日志提取方式将日志流中的日志进行结构化,云端结构化解析会消耗LTS服务端算力,未来会按照日志大小收取日志加工流量费用。 图1 不同解析方式
  • mv_ordinal函数 返回所提供的基于1的索引处的数组元素,或对于超出范围的索引返回null。 语法:mv_ordinal(arr, index) 表26 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 index 指定索引位置 Integer 是 返回值类型:String/Integer/Long/Boolean/Double类型 示例:SELECT MV_ORDINAL(ARRAY['1','2','3','4','5'], 2) 表27 查询分析结果 类型 场景 查询语句 MV_ORDINAL (ARRAY['1','2','3','4','5'], 2) 返回结果 2
  • mv_offset_of函数 返回数组中第一次出现expr的基于0的索引,如果未出现,则返回-1。 语法:mv_offset_of(arr, expr) 表28 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 expr 指定元素 String/Number,必须与数组中元素类型相同。 是 返回值类型:Integer类型 示例:SELECT MV_OFFSET_OF(ARRAY['1','2','3','4','5'], '2') 表29 查询分析结果 类型 场景 查询语句 MV_OFFSET_OF(ARRAY['1','2','3','4','5'], '2') 返回结果 1
  • string_to_mv函数 使用指定的分隔符str2将str1拆分为数组。 语法:string_to_mv(str1, str2) 表22 参数说明 参数名称 描述 类型 是否必选 str1 原始字符串 String 是 str2 指定字符 String 是 返回值类型:Array类型 示例:SELECT STRING_TO_MV('1-2-3-4-5','-') 表23 查询分析结果 类型 场景 查询语句 STRING_TO_MV('1-2-3-4-5','-') 返回结果 ["1","2","3","4","5"]
  • mv_offset函数 返回所提供的基于0的索引处的数组元素,或对于超出范围的索引返回null。 语法:mv_offset(arr, index) 表24 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 index 指定索引位置 Integer 是 返回值类型:String/Integer/Long/Boolean/Double类型 示例:SELECT MV_OFFSET(ARRAY['1','2','3','4','5'], 2) 表25 查询分析结果 类型 场景 查询语句 MV_OFFSET(ARRAY['1','2','3','4','5'], 2) 返回结果 3
  • mv_ordinal_of函数 返回数组中第一次出现expr的基于1的索引,如果未出现,则返回-1。 语法:mv_ordinal_of(arr, expr) 表30 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 expr 指定元素 String/Number,必须与数组中元素类型相同。 是 返回值类型:Integer类型 示例:SELECT MV_ORDINAL_OF(ARRAY['1','2','3','4','5'], '2') 表31 查询分析结果 类型 场景 查询语句 MV_ORDINAL_OF(ARRAY['1','2','3','4','5'], '2') 返回结果 2
  • mv_append函数 将指定的元素添加到数组的末尾。 语法:mv_append(arr, expr) 表16 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 expr 指定的元素 String/Number,必须与数组中元素类型相同。 是 返回值类型:Array类型 示例:SELECT MV_APPEND(ARRAY['1','2'],'1') 表17 查询分析结果 类型 场景 查询语句 MV_APPEND(ARRAY['1','2'], '1') 返回结果 ["1","2","1"]
  • mv_slice函数 返回从start到end索引的数组。 语法:mv_slice(arr, start, end) 表18 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 start 起始位置 Integer 是 end 结束位置 Integer 是 返回值类型:Array类型 示例:SELECT MV_SLICE(ARRAY['1','2','3','4','5'], 2, 4) 表19 查询分析结果 类型 场景 查询语句 MV_SLICE(ARRAY['1','2','3','4','5'], 2, 4) 返回结果 ["3","4"]
  • mv_to_string函数 使用指定的分隔符str连接arr所有元素。 语法:mv_to_string(arr, str) 表20 参数说明 参数名称 描述 类型 是否必选 arr 原始数组 Array(String/Number) 是 str 指定字符 String 是 返回值类型:String类型 示例:SELECT MV_TO_STRING(ARRAY['1','2','3','4','5'],'-') 表21 查询分析结果 类型 场景 查询语句 MV_TO_STRING(ARRAY['1','2','3','4','5'],'-') 返回结果 1-2-3-4-5
  • mv_contains函数 判断数组中是否包含指定元素。如果包含,则返回true,同contains。 语法:mv_contains(expr, ele) 表12 参数说明 参数名称 描述 类型 是否必选 expr 原始数组 Array(String/Number) 是 ele 指定的元素 String/Number,必须与数组中元素类型相同。 是 返回值类型:Boolean类型 示例:SELECT MV_CONTAINS(ARRAY['1','2'],'1') 表13 查询分析结果 类型 场景 查询语句 MV_CONTAINS(ARRAY['1','2'],'1') 返回结果 true
  • mv_prepend函数 将指定的元素添加到数组的开始位置。 语法:mv_prepend(expr, arr) 表14 参数说明 参数名称 描述 类型 是否必选 expr 指定的元素 String/Number,必须与数组中元素类型相同。 是 arr 原始数组 Array(String/Number) 是 返回值类型:Array类型 示例:SELECT MV_PREPEND('1', ARRAY ['1','2']) 表15 查询分析结果 类型 场景 查询语句 MV_PREPEND ('1', ARRAY['1','2']) 返回结果 ["1","1","2"]
  • cardinality函数 计算数组中元素的个数,参数类型必须相同。 语法:cardinality(expr) 表6 参数说明 参数名称 描述 类型 是否必选 expr 原始数组 Array(String/Number) 是 返回值类型:Integer类型 示例:SELECT CARDINALITY(ARRAY['1','2','3']) 表7 查询分析结果 类型 场景 查询语句 CARDINALITY(ARRAY['1','2','3']) 返回结果 3
  • array_position函数 获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。 语法:array_position(expr, ele) 表4 参数说明 参数名称 描述 类型 是否必选 expr 原始数组 数组类型。 是 ele 指定的元素 数组中的一个元素,必须与数组中元素类型相同。 是 返回值类型:Integer类型 示例:SELECT ARRAY_POSITION(ARRAY['1','2','3'],'2') 表5 查询分析结果 类型 场景 查询语句 ARRAY_POSITION(ARRAY['1','2','3'],'2') 返回结果 2
共100000条