本文介绍颜色函数的基本语法及示例。
日志服务支持如下颜色函数。
-
在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。
-
在日志服务控制台上使用颜色函数时,查询和分析结果的可视化效果并不理想,推荐您在终端服务器上展示查询和分析结果。
-
控制台展示效果。例如,颜色函数的返回结果中 ANSI 转义码以原始字符形式呈现(如
\e[38;5;1m),未被解析为对应的颜色效果。 -
终端展示效果
mysql> select pv,bar(pv/10.0,10 , color(0,50,100, rgb(255,0,0), rgb(0,255,0)), rgb(0,255,0)) from(select * from (VALUES (0),(1), (2), (3), (4), (5), (6), (7),(8),(9)) AS X(pv)); +------+----------------------------------------------------------------------+ | pv | _col1 | +------+----------------------------------------------------------------------+ | 0 | | | 1 | █ | | 2 | ██ | | 3 | ███ | | 4 | ████ | | 5 | █████ | | 6 | ██████ | | 7 | ███████ | | 8 | ████████ | | 9 | █████████ | +------+----------------------------------------------------------------------+ 10 rows in set (0.21 sec)
-
|
函数名称 |
语法 |
说明 |
支持SQL |
支持SPL |
|
bar(x, width) |
通过width指定整条ANSI条形图的宽度,其中该ANSI条形图的起始颜色为红色(low_color),结束颜色为绿色(high_color)。然后通过x截取其中一段ANSI条形图并返回。 |
√ |
× |
|
|
bar(x, width, low_color, high_color) |
通过width指定整条ANSI条形图的宽度,其中该ANSI条形图的起始颜色和结束颜色为自定义颜色。然后通过x截取其中一段ANSI条形图并返回。 |
√ |
× |
|
|
color(string) |
将颜色字符串转换为color类型。 |
√ |
× |
|
|
color(x, low, high, low_color, high_color) |
通过判断x在low和high之间的占比指定low_color和high_color的份量,然后返回处于low_color和high_color之间的一个颜色。 |
√ |
× |
|
|
color(y, low_color, high_color) |
通过y指定low_color和high_color的份量,然后返回处于low_color和high_color之间的一个颜色。 |
√ |
× |
|
|
render(boolean expression) |
通过颜色渲染返回结果。布尔表达式为真时,返回绿色勾;否则返回红色叉。 |
√ |
× |
|
|
render(x, color) |
通过自定义的颜色渲染返回结果。 |
√ |
× |
|
|
rgb(red, green, blue) |
通过RGB值返回一个颜色值。 |
√ |
× |
bar函数
bar函数用于绘制一条ANSI条形图。
语法
-
通过width指定整条ANSI条形图的宽度,其中该ANSI条形图的起始颜色为红色(low_color),结束颜色为绿色(high_color)。然后通过x截取其中一段ANSI条形图并返回。
bar(x, width) -
通过width指定整条ANSI条形图的宽度,其中该ANSI条形图的起始颜色和结束颜色为自定义颜色。然后通过x截取其中一段ANSI条形图并返回。
bar(x, width, low_color, high_color)
参数说明
|
参数 |
说明 |
|
x |
用于指定返回的条形图占整条ANSI条形图的比例。参数值为double类型,取值范围为[0,1]。 |
|
width |
整条ANSI条形图的宽度。 |
|
low_color |
颜色梯度中起始颜色的RGB值。 |
|
high_color |
颜色梯度中结束颜色的RGB值。 |
返回值类型
varchar类型。
示例
-
示例1:计算1小时PV占总PV的比值,然后通过ANSI条形图表示计算结果。
-
查询和分析语句
* | SELECT Method, bar(pv/m,100) FROM( SELECT *, max(pv) over() AS m FROM( SELECT Method, count(1) AS pv FROM internal-operation_log WHERE __date__ > '2021-09-10 00:00:00' AND __date__ < '2021-09-10 01:00:00' GROUP BY Method ) ) -
查询和分析结果(控制台)中,Method 列分别为
GetProjectLogs和GetLogStoreLogs,_col1 列展示bar函数生成的 ANSI 彩色条形图。 -
查询和分析结果(终端)
+-----------------+----------------------------------------------+ | GetProjectLogs | ████████ | | GetLogStoreLogs | ████████████████████████████████████████████ | +-----------------+----------------------------------------------+ 2 rows in set (8.99 sec)
-
-
示例2:使用白色和红色绘制一条ANSI条形图,宽度为50。
-
查询和分析语句
* | SELECT bar(1,50,rgb(255,255,255),rgb(255,0,0)) -
查询和分析结果(控制台):执行该语句后,查询结果
_col0列返回由 ANSI 转义色彩序列构成的渐变色条,颜色从白色平滑过渡至红色。 -
查询和分析结果(终端)
+------+------+ | _col0 | _col0 | +------+------+ | [白色到红色渐变色带] | | +------+------+ 1 row in set (0.20 sec)
-
color函数
color函数用于获取目标值对应的颜色。
语法
-
将颜色字符串转换为color类型。
color(string) -
通过判断x在low和high之间的占比指定low_color和high_color的份量,然后返回处于low_color和high_color之间的一个颜色。
color(x, low, high, low_color, high_color) -
通过y指定low_color和high_color的份量,然后返回处于low_color和high_color之间的一个颜色。
color(y, low_color, high_color)
参数说明
|
参数 |
说明 |
|
x |
参数值为double类型。 |
|
y |
参数值为double类型,取值范围为[0,1]。 |
|
low |
最小值,参数值为double类型。 |
|
high |
最大值,参数值为double类型。 |
|
low_color |
颜色梯度中起始颜色的RGB值。 |
|
high_color |
颜色梯度中结束颜色的RGB值。 |
|
string |
字符串,可选值为black、red、green、yellow、blue、magenta、cyan、white或CSS样式的RGB值(例如#000)。 |
返回值类型
color类型。
示例
-
示例1:将颜色字符串转换为color类型。
-
查询和分析语句
* | SELECT color('#000') -
查询和分析结果(控制台)查询和分析结果为
#000000。 -
查询和分析结果(终端)
mysql> SELECT color('#000'); +---------+ | _col0 | +---------+ | #000000 | +---------+ 1 row in set (0.21 sec)
-
-
示例2:对request_length字段值进行取余计算并将计算结果传递给color函数,color函数根据该计算结果返回一个颜色,然后将该颜色传递给bar函数,最后通过bar函数绘制出相应的ANSI条形图。
-
查询和分析语句
*|SELECT x,bar(10,10, color(x, 0,10, rgb(255,0,0), rgb(0,255,0)), rgb(0,255,0)) FROM(SELECT *FROM (SELECT request_length%10 x FROM log)) -
查询和分析结果(控制台)查询和分析结果包含两列:
x列为数值(如 1、6、4、7、7、0),_col1列为通过 ANSI 256 色转义序列渲染的彩色条形图,颜色根据 x 值在红色与绿色之间渐变。结果共 100 条记录,分 5 页显示。 -
查询和分析结果(终端)
| x | _col1 | |------|--------------------------------| | 1 | [colored gradient bar] | | 6 | [colored gradient bar] | | 4 | [colored gradient bar] | | 7 | [colored gradient bar] | | 7 | [colored gradient bar] | | 0 | [colored gradient bar] | 6 rows in set (0.21 sec)
-
-
示例3:通过color函数返回一种颜色,然后传递给bar函数,绘制出相应的ANSI条形图。
-
查询和分析语句
*|SELECT bar(10,10, color(0.3, rgb(255,255,255), rgb(255,0,0)), rgb(0,255,0)) -
查询和分析结果(控制台)查询和分析结果在控制台中显示为一行 ANSI 256 色转义序列,渲染后呈现从浅粉色、米色经黄色过渡到亮绿色的彩色条形渐变效果。
-
查询和分析结果(终端)
mysql> select bar(10,10 , color(0.3, rgb(255,255,255), rgb(255,0,0)), rgb(0,255,0)); +----------------------------------------------------------------------+ | _col0 | +----------------------------------------------------------------------+ | ██████████ | +----------------------------------------------------------------------+ 1 row in set (0.21 sec)
-
render函数
render函数通过颜色渲染返回结果。
语法
-
通过颜色渲染返回结果。布尔表达式为真时,返回绿色勾;否则返回红色叉。
render(boolean expression) -
通过自定义的颜色渲染返回结果。
render(x, color)
参数说明
|
参数 |
说明 |
|
boolean expression |
布尔表达式。 |
|
x |
X坐标,参数值为integer类型。 |
|
color |
颜色,参数值为color类型。 |
返回值类型
varchar类型。
示例
-
示例1:通过count函数统计网站访问PV,然后通过render函数判断PV是否小于1000。如果小于,则返回绿色勾。
-
查询和分析语句
* | SELECT render(count(*)<1000) -
查询和分析结果(控制台)例如,颜色函数的返回结果中 ANSI 转义码以原始字符形式呈现(如
\e[38;5;1m),未被解析为对应的颜色效果。 -
查询和分析结果(终端)
mysql> select render(count(*)<1000); +------------------+ | _col0 | +------------------+ | ✓ | +------------------+ 1 row in set (0.22 sec)
-
-
示例2:通过count函数统计日志总数,然后使用绿色渲染计算结果。
-
查询和分析语句
* | SELECT render(count(*),rgb(48,169,16)) -
查询和分析结果(控制台)
_col0 \e[38;5;70m1\e[0m -
查询和分析结果(终端)
mysql> select render(count(*),rgb(48,169,16)); +----------------+ | _col0 | +----------------+ | 1 | +----------------+ 1 row in set (0.21 sec)
-
rgb函数
rgb函数会根据RGB值返回一个颜色。
语法
rgb(red, green, blue)
参数说明
|
参数 |
说明 |
|
red |
颜色中的红色份量,取值范围为[0,255],参数值为integer类型。 |
|
green |
颜色中的绿色份量,取值范围为[0,255],参数值为integer类型。 |
|
blue |
颜色中的蓝色份量,取值范围为[0,255],参数值为integer类型。 |
返回值类型
color类型。
示例
根据RGB值返回一个颜色。
-
查询和分析语句
*|SELECT rgb(255,0,0) -
查询和分析结果(控制台)为
#ff0000(列名_col0)。 -
查询和分析结果(终端)
select rgb(255,0,0); +---------+ | _col0 | +---------+ | #ff0000 | +---------+ 1 row in set (0.21 sec)