华为云用户手册

  • lst_reverse 反向排序列表。 函数格式 lst_reverse(list_string) 参数说明 参数名称 数据类型 是否必填 说明 list_string List 是 传入一个列表。 返回结果 返回反转后的列表。 函数示例 测试数据 { "ctx":["v1","v2"]} 加工规则 e_set("hello", lst_reverse(v("ctx"))) 加工结果 ctx: ["v1","v2"]hello: ["v2","v1"]
  • lst_get 获取列表、元组中的一个元素。 函数格式 lst_get(list_string, location) 参数说明 参数名称 数据类型 是否必填 说明 ist_string List 是 传入一个列表。 location Int 是 从0开始计数,传入数字。例如数据为["a","b","c"],对应获取的元素位置分别为0,1,2。 返回结果 返回列表的其中一个元素。 函数示例 测试数据 { "ctx":["v1","v2"]} 加工规则 e_set("hello", lst_get(v("ctx"),1)) 加工结果 ctx: ["v1","v2"]hello: "v2"
  • lst_insert 在列表特定位置插入元素。 函数格式 lst_insert(list_string, location, value1, value2, ...) 参数说明 参数名称 数据类型 是否必填 说明 list_string List 是 传入一个列表。 location Number 是 要插入的位置。 value1 String 是 要插入的元素。 value2 String 否 要插入的元素。 返回结果 返回插入元素后的列表。 函数示例 测试数据 { "ctx": ["k1","k2"]} 加工规则 e_set("hello", lst_insert(v("ctx"), 0, "k0")) 加工结果 ctx: ["k1","k2"]hello: ["k0", "k1", "k2"]
  • lst_append 在列表结尾追加元素。 函数格式 lst_append(list_string, value1, value2, ...) 参数说明 参数名称 数据类型 是否必填 说明 list_string List 是 传入一个列表。 value1 String 是 要添加的元素。 value2 String 否 要添加的元素。 返回结果 返回添加元素后的列表。 函数示例 测试数据 { "ctx": [ "k1", "k2" ]} 加工规则 e_set("hello", lst_append(v("ctx"), "k3")) 加工结果 ctx: ["k1","k2"]hello: ["k1", "k2", "k3"]
  • lst_make 构建一个列表。 函数格式 lst_make(value1, value2, ...) 参数说明 参数名称 数据类型 是否必填 说明 value1 String 是 列表的元素。 value2 String 是 列表的元素。 返回结果 返回构建后的列表。 函数示例 测试数据 { "content":"test"} 加工规则 e_set("hello", lst_make("k1","k2")) 加工结果 content:test hello:["k1", "k2"]
  • normalize函数 格式化字符串str。 使用NFC格式格式化字符串str。 语法:normalize(str) 使用给定格式格式化字符串str,支持的格式有NFC, NFD, NFKC, NFKD. 语法:normalize(str, form) 表46 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 form 格式化类型。 String 否 返回值类型:String类型 示例:SELECT NORMALIZE('schön'), NORMALIZE('Henry \u2163', 'nfd') 表47 查询分析结果 类型 场景1 场景2 查询语句 NORMALIZE('schön') NORMALIZE('Henry \u2163', 'nfd') 返回结果 schön Henry Ⅳ
  • char_length函数 与length函数功能一致,如果字符串表达式是字符数据类型,则返回输入的字符长度;否则,返回字符串表达式的字节长度(不小于位数除以8的最小整数)。 语法:char_length(str) 表38 参数说明 参数名称 描述 类型 是否必选 str 原始字符串 String 是 返回值类型:Integer类型 示例:SELECT CHAR_LENGTH('HELLO WORLD') 表39 查询分析结果 类型 场景 查询语句 CHAR_LENGTH('HELLO WORLD') 返回结果 11
  • levenshtein_distance函数 计算两个字符串str1和str2之间的最小编辑距离。 语法:levenshtein_distance(str1, str2) 表44 参数说明 参数名称 描述 类型 是否必选 str1 原始字符串1。 String 是 str2 原始字符串2。 String 是 返回值类型:Integer类型 示例:SELECT LEVENSHTEIN_DISTANCE('horse', 'ros') 表45 查询分析结果 类型 场景 查询语句 LEVENSHTEIN_DISTANCE('horse', 'ros') 返回结果 3
  • strpos函数 查询目标子串初次出现在字符串中的位置,如果目标子串未出现在字符串中,则返回0。 语法:strpos(str, subStr) 表30 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 subStr 填充字符。 String 是 返回值类型:Integer类型 示例:SELECT STRPOS('hello world', 'llo'), STRPOS('llo', 'hello world') 表31 查询分析结果 类型 场景1 场景2 查询语句 STRPOS('hello world', 'llo') STRPOS('llo', 'hello world') 返回结果 3 0
  • substring函数 使用起始位置和长度返回子字符串。如果没有长度参数,则返回从起始位置开始的整个字符串。 语法:substring(str, start, length) 表34 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 start 开始提取子串的位置,从1开始。 Integer 是 length 子串的长度。 Integer 否 返回值类型:String类型 示例:SELECT SUBSTRING('helloworld', 5), SUBSTRING('helloworld', 5, 3) 表35 查询分析结果 类型 场景1 场景2 查询语句 SUBSTRING('helloworld', 5) SUBSTRING('helloworld', 5, 3) 返回结果 oworld owo
  • character_length函数 与length函数功能一致。 语法:character_length(str) 表40 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 返回值类型:Integer类型 示例:SELECT CHARACTER_LENGTH('HELLO WORLD') 表41 查询分析结果 类型 场景 查询语句 CHARACTER_LENGTH('HELLO WORLD') 返回结果 11
  • string_format函数 返回以Java的String.format方式格式化的字符串。 语法:string_format(str, Object... args) 表28 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 args 参数。 String/Integer/Long/Boolean/Double 是 返回值类型:String类型 示例:SELECT STRING_FORMAT('My name is %s and I am %d years old.', 'name', age) 表29 查询分析结果 类型 场景 查询语句 STRING_FORMAT('My name is %s and I am %d years old.', 'Tom', 25) 返回结果 My name is Tom and I am 25 years old. %d:Output integer. %f:Output floating point number. %s:Output character string. %n:Output newline character. %c:Output Characters %b:Output bool type %e:Output Exponential Type %tc:Output Date and time information %tF:Output format is YYY-MM-DD. %tr:Output in HH:MM:SS PM format 可以参考Java的String.format获取更多的细节。
  • substr函数 使用起始位置和长度返回子字符串。如果没有长度参数,则返回从起始位置开始的整个字符串,同substring。 语法:substr(str, start, length) 表32 参数说明 参数名称 描述 类型 是否必选 str 原始字符串 String 是 start 开始提取子串的位置,从1开始 Integer 是 length 子串的长度 Integer 否 返回值类型:String类型 示例:SELECT SUBSTR('helloworld', 5), SUBSTR('helloworld', 5, 3) 表33 查询分析结果 类型 场景1 场景2 查询语句 SUBSTR ('helloworld', 5) SUBSTR ('helloworld', 5, 3) 返回结果 oworld owo
  • length函数 如果字符串表达式是字符数据类型,则返回输入的字符长度;否则,返回字符串表达式的字节长度(不小于位数除以8的最小整数)。 语法:length(str) 表36 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 返回值类型:Integer类型 示例:SELECT LENGTH('HELLO WORLD') 表37 查询分析结果 类型 场景1 查询语句 LENGTH('HELLO WORLD') 返回结果 11
  • repeat函数 将字符串重复指定次数。 语法:repeat(str, num) 表10 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 num 重复次数 Integer 是 返回值类型:String类型 示例:SELECT REPEAT('hello world', 2), REPEAT('hello world', 0) 表11 查询分析结果 类型 场景1 场景2 查询语句 REPEAT('hello world', 2) REPEAT('hello world', 0) 返回结果 hello worldhello world
  • contains_string函数 判断字符串是否包含指定字符串。 语法:contains_string(str, containsStr) 表12 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 containsStr 指定字符串。 String 是 返回值类型:Boolean类型 示例:SELECT CONTAINS_STRING('hello world', 'llo') 表13 查询分析结果 类型 场景 查询语句 CONTAINS_STRING('hello world', 'llo') 返回结果 true
  • parse_long函数 将字符串转换成基于指定基数的Long型,如果未指定基数,则基于十进制对原始字符串进行转换。 语法:parse_long(str, radix) 表20 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 radix 基数。 Integer 否 返回值类型:Long类型 示例:SELECT PARSE_LONG('-1234', 8), PARSE_LONG('1234') 表21 查询分析结果 类型 场景1 场景2 查询语句 PARSE_LONG('-1234', 8) PARSE_LONG('1234') 返回结果 -668 1234
  • split_part函数 使用指定的分隔符拆分字符串,并返回指定位置的字符串。如果拆分后指定的位置超过数组的长度,则返回“”。 语法:split_part(str, splitStr, position) 表24 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 splitStr 分隔符。 String 是 position 需要返回的字符串的位置。 Integer 是 返回值类型:STRING类型 示例:SELECT SPLIT_PART('helloworld', 'o', 2), SPLIT_PART('helloworld', 'o', 4) 表25 查询分析结果 类型 场景1 场景2 查询语句 SPLIT_PART('helloworld','o', 2) SPLIT_PART('helloworld', 'o', 4) 返回结果 w
  • split_to_map函数 使用指定的第一个分隔符拆分字符串,然后使用指定的第二个分隔符第二次拆分字符串。返回第二次拆分后的结果。 语法:split_to_map(str, splitStr1, splitStr2) 表26 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 splitStr1 分隔符1。 String 是 splitStr2 分隔符2。 String 是 返回值类型:ARRAY类型 示例:SELECT SPLIT_TO_MAP('upstream_response_time:123, request_time:456', ',', ':') 表27 查询分析结果 类型 场景 查询语句 SPLIT_TO_MAP('upstream_response_time:123, request_time:456', ',', ':') 返回结果 {" request_time":"456","upstream_response_time":"123"}
  • icontains_string函数 判断字符串是否不包含指定字符串。 语法:icontains_string(str, containsStr) 表14 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 containsStr 指定字符串。 String 是 返回值类型:Boolean类型 示例:SELECT ICONTAINS_STRING('hello world', 'llo') 表15 查询分析结果 类型 场景 查询语句 ICONTAINS_STRING('hello world', 'llo') 返回结果 false
  • textcat函数 将两个字符串拼接起来,返回拼接后的结果。 语法:textcat(str1, str2) 表16 参数说明 参数名称 描述 类型 是否必选 str1 待拼接字符串1。 String 是 str2 待拼接字符串2。 String 是 返回值类型:String类型 示例:SELECT TEXTCAT('hello ', 'world') 表17 查询分析结果 类型 场景 查询语句 TEXTCAT('hello ', 'world') 返回结果 hello world
  • lpad函数 在字符串的开头填充指定字符,直到指定长度后返回结果字符串。如果未指定填充字符,则使用“ ”进行填充。 语法:lpad(str, len, lpadStr) 表2 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 len 结果字符串的长度。 如果原始字符串的长度小于len,那么在字符串的开头填充指定的字符。 如果原始字符串的长度大于len,那么只返回字符串的len个字符。 int 是 lpadStr 填充字符。 String 否 返回值类型:String类型 示例:SELECT LPAD('hello world', 10), LPAD('hello', 10, 'e') 表3 查询分析结果 类型 场景1 场景2 查询语句 LPAD('hello world', 10) LPAD('hello', 10, 'e') 返回结果 hello worl eeeeehello
  • 函数列表 表1 字符串函数 函数 描述 lpad函数 在字符串的开头填充指定字符,直到指定长度后返回结果字符串。如果未指定填充字符,则使用“ ”进行填充。 rpad函数 在字符串的结尾填充指定字符,直到指定长度后返回结果字符串。如果未指定填充字符,则使用“ ”进行填充。 replace函数 将字符串中的匹配字符串替换成指定的字符串,如果未指定替换字符串,则将匹配的字符串从原来的字符串中删除。 reverse函数 将字符串转换成反向顺序的字符串。 repeat函数 将字符串重复指定次数。 contains_string函数 判断字符串是否包含指定字符串。 icontains_string函数 判断字符串是否不包含指定字符串。 textcat函数 将两个字符串拼接起来,返回拼接后的结果。 btrim函数 删除字符串左右两侧的空格。 parse_long函数 将字符串转换成基于指定基数的Long型,如果未指定基数,则基于十进制对原始字符串进行转换。 split函数 使用指定的分隔符拆分字符串,并返回子字符串的集合。如果设置了limit,则使用limit限制拆分字符串的数量。 split_part函数 使用指定的分隔符拆分字符串,并返回指定位置的字符串。如果拆分后指定的位置超过数组的长度,则返回“”。 split_to_map函数 使用指定的第一个分隔符拆分字符串,然后使用指定的第二个分隔符第二次拆分字符串,返回第二次拆分后的结果。 string_format函数 返回以Java的String.format方式格式化的字符串。 strpos函数 查询目标子串初次出现在字符串中的位置,如果目标子串未出现在字符串中,则返回0。 substr函数 使用起始位置和长度返回子字符串。如果没有长度参数,则返回从起始位置开始的整个字符串,同substring。 substring函数 使用起始位置和长度返回子字符串。如果没有长度参数,则返回从起始位置开始的整个字符串。 length函数 如果字符串表达式是字符数据类型,则返回输入的字符长度;否则,返回字符串表达式的字节长度(不小于位数除以8的最小整数)。 char_length函数 与length函数功能一致,如果字符串表达式是字符数据类型,则返回输入的字符长度;否则,返回字符串表达式的字节长度(不小于位数除以8的最小整数)。 character_length函数 与length函数功能一致。 strlen函数 与length函数功能一致。 levenshtein_distance函数 计算两个字符串str1和str2之间的最小编辑距离。 normalize函数 格式化字符串。 to_utf8函数 将字符串转换为UTF-8编码格式。 chr函数 将ascii值转换成字符。 concat函数 用于将多个参数拼接成一个字符串。
  • replace函数 将字符串中的匹配字符串替换成指定的字符串,如果未指定替换字符串,则将匹配的字符串从原来的字符串中删除。 语法:replace(str, subStr, replaceStr) 表6 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 subStr 目标子串。 String 是 replaceStr 用于替换的字符串。 String 否 返回值类型:String类型 示例:SELECT REPLACE('hello world', 'o'), REPLACE('hello world', 'w', 'new w') 表7 查询分析结果 类型 场景1 场景2 查询语句 REPLACE('hello world', 'o') REPLACE('hello world', 'w', 'new w') 返回结果 hell wrld hello new world
  • rpad函数 在字符串的结尾填充指定字符,直到指定长度后返回结果字符串。如果未指定填充字符,则使用“ ”进行填充。 语法:rpad(str, len, rpadStr) 表4 参数说明 参数名称 描述 类型 是否必选 str 原始字符串。 String 是 len 结果字符串的长度。 如果原始字符串的长度小于len,那么在字符串的结尾填充指定的字符。 如果原始字符串的长度大于len,那么只返回字符串的len个字符。 Integer 是 rpadStr 填充字符。 String 否 返回值类型:String类型 示例:SELECT RPAD('hello world', 10), RPAD('hello', 10, 'e') 表5 查询分析结果 类型 场景1 场景2 查询语句 RPAD('hello world', 10) RPAD('hello', 10, 'e') 返回结果 hello worl helloeeeee
  • 日志位置 错误日志(Error Log):常见的位置是/var/log/mysql/error.log。可以通过查看MySQL的配置文件(通常是/etc/my.cnf、/etc/mysql/my.cnf或~/.my.cnf)中的log-error参数来确定错误日志的确切位置。 查询日志(General Query Log):如果已启用,其位置由general_log_file参数在配置文件中指定,默认为/var/log/mysql/general.log。 慢查询日志(Slow Query Log):如果已启用,其位置由slow_query_log_file参数在配置文件中指定,默认为/var/log/mysql/mysql-slow.log。 二进制日志(Binary Log):如果已启用,其位置由log-bin参数在配置文件中指定,位于/var/lib/mysql/。
  • Mysql日志示例以及字段含义 介绍错误日志、查询日志、慢查询日志的示例和字段说明。 错误日志(Error Log) 2023-03-29T14:30:15.123456Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11 表1 错误日志字段说明 字段 说明 2023-03-29T14:30:15.123456Z 日志条目的时间戳,采用ISO 8601格式,包含时区信息(Z表示UTC时间)。 0 线程ID,对于错误日志,这通常是0,表示这是一个全局消息,而不是与特定客户端连接相关。 [ERROR] 日志级别,这里表示这是一个错误消息。 InnoDB: Unable to lock ./ibdata1, error: 11 具体的错误消息,指示InnoDB存储引擎无法锁定ibdata1文件,并给出了错误代码11(通常表示“资源暂时不可用”)。 查询日志(General Query Log) 190109 14:23:00 3 Connect root@localhost on testdb 3 Query SELECT * FROM users WHERE id = 1 表2 查询日志字段说明 字段 说明 190109 14:23:00 日志条目的时间戳,采用YYMMDD HH:MM:SS格式。 3 线程ID,表示这个操作是由线程ID为3的客户端连接执行的。 Connect 操作类型,这里表示一个客户端连接。 root@localhost 连接的用户名和主机名。 on testdb 连接使用的数据库名。 Query 操作类型,这里表示执行了一个SQL查询。 SELECT * FROM users WHERE id = 1 执行的SQL语句。 慢查询日志(Slow Query Log) 190109 14:23:00 3 Connect root@localhost on testdb 3 Query SELECT * FROM users WHERE id = 1 表3 慢查询字段说明 字段 说明 示例 Time 日志条目的时间戳。 2023-03-29T15:00:01.234567Z User@Host 执行查询的用户和主机信息。 root[root] @ localhost [127.0.0.1] Id 线程ID。 3 Query_time 查询执行的时间长度(秒)。 5.000234 Lock_time 查询等待表锁的时间长度(秒)。 0.000123 Rows_sent 查询返回的行数。 1000 Rows_examined 查询检查的行数(即扫描的行数,可能包括未返回的行)。 100000 SET timestamp= 设置当前会话的时间戳(这通常是为了复制日志的一致性)。 1617012001 SELECT ... 执行的SQL查询。 SELECT * FROM big_table WHERE some_column = 'value'
  • 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 更多参考 支持其他它函数组合使用。
  • 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@#%:123content:{"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
共99354条