云服务器内容精选

  • 示例及说明 GREATEST([expr1, ...])/ LEAST([expr1, ...])函数 GREATEST函数,计算零个或多个表达式,并根据上述比较返回最大值。 LEAST函数,计算零个或多个表达式,并根据上述比较返回最小值。 字段样例 Num: 11785730 查询和分析语句 select Num,GREATEST( "Num"/10,(select count(1)) ),LEAST("Num"/10,(select count(1))) 查询和分析结果 表1 归约函数查询和分析结果 Num EXPR$1 EXPR$2 11785730 1178573 1
  • 功能描述 归约函数对零个或多个表达式进行操作,并返回单个表达式。如果没有表达式作为参数传递,则结果为 NULL。表达式必须全部转换为公共数据类型,即结果的类型有: 如果所有的参数都是 NULL,结果是 NULL,否则,NULL 参数被忽略。 如果所有的参数包含了数字和字符串的混合,参数都被解释为字符串。 如果所有的参数是整型数字,参数都被解释为长整型。 如果所有的参数是数值且至少一个参数是double,则参数都被解释为double。
  • SPLIT函数语句 语句 说明 示例 参数 split split函数用于通过指定的分隔符拆分字符串,并返回拆分后的子串集合。 split(x, delimiter,[limit]) x:参数值为varchar类型。 delimiter:分隔符。 limit:限制字符串拆分的个数,大于0的整数。 split_part split_part函数通过指定的分隔符拆分字符串,并返回指定索引的内容。 split_part(x, delimiter, part) x:参数值为varchar类型。 delimiter:分隔符。 part:指定要返回字段的索引值。 split_to_map split_to_map函数用于使用指定的第一个分隔符拆分字符串,然后再使用指定的第二个分隔符进行第二次拆分。 split_to_map(x, delimiter01, delimiter02) x:参数值为varchar类型。 delimiter01:分隔符1。 delimiter02:分隔符2。
  • 示例及说明 split函数 将目标字符串按指定字符串分割,limit用于限制分割后的最大单词数,若不填写,则默认全部分割。 字段样例 Id:dc1dab7e-b045-4e77-bda4-914d083d1bf7 查询和分析语句 SELECT split(Id,'-'), split(Id,'-',2) 查询和分析结果 表1 split函数查询和分析结果 EXPR$0 EXPR$1 ["dc1dab7e","b045","4e77","bda4","914d083d1bf7"] ["dc1dab7e","b045-4e77-bda4-914d083d1bf7"] split_part函数 通过指定的分隔符拆分字符串,并返回指定索引的内容字段样例,索引下标从0开始。若索引下标超过分割数量或者为负数,则返回空字符串。 字段样例 Id: dc1dab7e-b045-4e77-bda4-914d083d1bf7 查询和分析语句 SELECT split_part(Id,'-',1) 查询和分析结果 表2 split_part函数查询和分析结果 EXPR$0 b045 split_to_map函数 用于使用指定的第一个分隔符拆分字符串,然后再使用指定的第二个分隔符进行第二次拆分,展示形式为{“KEY1”:”VALUE1”,”KEY2”:”VALUE2”}。无法被二次分割的value值为空。 字段样例 Request:request_id:"e3ac4b70c7d244f080d434e300d8065a”;request_time: "1674965051000” 查询和分析语句 SELECT split_to_map(Request,';',':') 查询和分析结果 表3 split_to_map函数查询和分析结果 EXPR$0 {"request_id ":"e3ac4b70c7d244f080d434e300d8065a ","request_time":"1674965051000"}
  • 示例 有两个表,access表示主机的接入指标包含路径,时延,状态码,host为主机指标包含cpu和内存。通过JOIN可以关联接入和主机指标,查看相同主机的不同维度的指标情况。 LEFT JOIN 查询语句 SELECT "access".__time, "access".host_ip, "access".cost, "host".cpu, "host".memory FROM log "access" LEFT JOIN (select memory,cpu,host_ip from log) host ON "access".host_ip = "host".host_ip 返回结果,总共60条数据。 RIGHT JOIN 查询语句 SELECT "access".__time, "host".host_ip, "access".cost, "host".cpu, "host".memory FROM log "access" RIGHT JOIN (select memory,cpu,host_ip from log) host ON "access".host_ip = "host".host_ip 返回结果,总共60条数据。 INNER JOIN 查询语句 SELECT "access".__time, "host".host_ip, "access".cost, "host".cpu, "host".memory FROM log "access" INNER JOIN (select memory,cpu,host_ip from log) host ON "access".host_ip = "host".host_ip 返回结果,总共45条数据。
  • 语法 select key from t1 LEFT|RIGHT|INNER JOIN t2 on t1.key=t2.key 当前日志服务支持LEFT JOIN、RIGHT JOIN和INNER JOIN三种JOIN子句方式。具体功能如下: 表1 JOIN方式 说明 LEFT JOIN 以左表(t1)的结果为基础,关联右表(t2)数据。 当表名为纯数字时,需要给表名加上双引号转换成字符串。例如:表名是123,JOIN语句中该表应写成“123”。 RIGHT JOIN 以右表(t2)的结果为基础,关联左表(t1)数据。 INNER JOIN 两个表的结果(elb1,elb2)交集数据
  • compare函数 compare函数用于对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。 语法格式 对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。 compare(x,n) 对比当前时间周期内的计算结果与n1、n2、n3秒之前时间周期内的计算结果。 compare(x, n1, n2, n3...) 参数说明 表1 同比函数参数说明 参数 说明 x 目标列的列名,参数值为double类型或long类型。 n 时间窗口,单位为秒。例如3600(1小时)、86400(1天)、604800(1周)、31622400(1年)。 返回类型 JSON数组。格式为[当前计算结果,n秒前的计算结果,当前计算结果与n秒前计算结果的比值]。 示例说明 计算当前1小时和昨天同时段的访问量比值。 选择查询和分析的时间范围为1小时(整点时间),并执行如下查询和分析语句。其中86400表示当前时间减去86400秒(1天)。 SELECT compare(PV, 86400) FROM (SELECT count(*) AS PV ) 查询和分析结果。 5994.0表示当前1小时(例如2021-01-02 00:00:00~2021-01-02 01:00:00)的网站访问量。 6000.0表示昨天同时段(例如2021-01-01 00:00:00~2021-01-01 01:00:00)的网站访问量。 0.999表示当前1小时与昨天同时段的网站访问量比值。 图1 查询和分析结果 分列显示查询和分析结果 SELECT diff[1] as "today", diff[2] as "yesterday", diff[3] as "ratio" FROM(SELECT compare(pv, 86400) AS diff FROM (SELECT count(*) AS pv )) 图2 查询和分析结果
  • ts_compare函数 ts_compare函数用于对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。 ts_compare函数必须按照时间列进行分组(GROUP BY)。 语法格式 对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。 ts_compare(x, n) 对比当前时间周期内的计算结果与n1、n2、n3秒之前时间周期内的计算结果。 ts_compare(x, n1, n2, n3...) 参数说明 表2 环比函数参数说明 参数 说明 x 参数值为double类型或long类型。 n 时间窗口,单位为秒。例如3600(1小时)、86400(1天)、604800(1周)、31622400(1年)。 返回类型 JSON数组。格式为[当前计算结果, n秒前的计算结果, 当前计算结果与n秒前计算结果的比值, n秒前的UNIX时间戳]。 示例说明 环比今天3小时与昨天3小时的网站访问量。 选择查询和分析的时间范围为今天某3小时,并执行如下查询和分析语句。其中86400表示当前时间减去86400秒(1天),date_trunc('hour',__time)表示使用date_trunc函数将时间对齐到小时。 查询和分析语句 SELECT t_time, ts_compare(PV, 86400) AS data FROM( SELECT date_trunc('hour', __time) AS t_time, count(*) AS PV GROUP BY t_time ORDER BY t_time ) GROUP BY t_time 查询和分析结果 t_time data 2021-10-26T06:00:00.000Z [159.0,224.0,0.7098214285714286,1.6351416E9] 2021-10-26T07:00:00.000Z [100.0,148.0,0.6756756756756757,1.6351452E9] 2021-10-26T08:00:00.000Z [100.0,100.0,1.0, 1.6016544E9, 1.6351488E9]
  • 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
  • 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 年
  • 示例及说明 ip_to_province函数 统计请求总数Top3的省份。 查询和分析语句 SELECT count(*) AS PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 3 查询和分析结果 表2 查询和分析结果 PV province 101 广东 83 上海 78 山东 ip_to_country函数 统计请求总数的Top3的国家或地区。 查询和分析语句 SELECT count(*) AS PV, ip_to_country(client_ip) AS country GROUP BY country ORDER BY PV desc LIMIT 3 查询和分析结果 表3 查询和分析结果 PV country 100 中国 76 美国 55 加拿大 ip_to_city函数 统计请求总数的Top3的城市。 查询和分析语句 SELECT count(*) AS PV, ip_to_city(client_ip) AS city GROUP BY city ORDER BY PV desc LIMIT 3 查询和分析结果 表4 查询和分析结果 PV city 109 广州 89 上海 23 西安 ip_to_provider函数 统计请求总数的Top3的运营商。 查询和分析语句 SELECT count(*) AS PV, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY PV desc LIMIT 3 查询和分析结果 表5 查询和分析结果 PV provider 115 电信 65 att.com 44 联通 ip_to_geo函数 根据传入的ip返回经纬度。 查询和分析语句 SELECT count(*) AS PV, ip_to_geo (client_ip) AS geo GROUP BY geo ORDER BY PV desc LIMIT 3 查询和分析结果 表6 查询和分析结果 PV geo 101 *, * 83 47.369013, -68.326674 78 32.715891, -117.161588
  • IP函数语句 表1 IP函数语句 语句 说明 示例 ip_to_province 分析目标IP地址所属省份。 ip_to_province(x) ip_to_country 分析目标IP地址所属国家或地区。 ip_to_country(x) ip_to_city 分析目标IP地址所属城市。 ip_to_city(x) ip_to_provider 分析目标IP地址所对应的网络运营商。 ip_to_provider(x) ip_to_geo 根据传入的ip返回ip所在的经纬度。 ip_to_geo(x)