全部產品
Search
文件中心

Simple Log Service:顏色函數

更新時間:May 21, 2026

本文介紹顏色函數的基本文法及樣本。

Log Service支援如下顏色函數。

重要
  • 在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status"status"表示日誌欄位status。

  • 在Log Service控制台上使用顏色函數時,查詢和分析結果的視覺效果並不理想,推薦您在終端伺服器上展示查詢和分析結果。

    • 控制台展示效果。例如,顏色函數的返回結果中 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、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)