颜色函数

更新时间:
复制为 MD 格式

本文介绍颜色函数的基本语法及示例。

日志服务支持如下颜色函数。

重要
  • 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'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函数

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函数

color(string)

将颜色字符串转换为color类型。

×

color(x, low, high, low_color, high_color)

通过判断xlowhigh之间的占比指定low_colorhigh_color的份量,然后返回处于low_colorhigh_color之间的一个颜色。

×

color(y, low_color, high_color)

通过y指定low_colorhigh_color的份量,然后返回处于low_colorhigh_color之间的一个颜色。

×

render函数

render(boolean expression)

通过颜色渲染返回结果。布尔表达式为真时,返回绿色勾;否则返回红色叉。

×

render(x, color)

通过自定义的颜色渲染返回结果。

×

rgb函数

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 列分别为 GetProjectLogsGetLogStoreLogs_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)
  • 通过判断xlowhigh之间的占比指定low_colorhigh_color的份量,然后返回处于low_colorhigh_color之间的一个颜色。

    color(x, low, high, low_color, high_color)
  • 通过y指定low_colorhigh_color的份量,然后返回处于low_colorhigh_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、whiteCSS样式的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)