本文介紹顏色函數的基本文法及樣本。
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(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)