Simple Log ServiceProject支援使用SQL語句對查詢結果進行分析。本文介紹SQL分析語句基礎文法。
基礎文法
查詢語句和分析語句以|
分割。其格式為:
查詢語句|分析語句
查詢語句可單獨使用,分析語句必須與查詢語句一起使用。即分析功能是基於查詢結果或全量資料進行的。
重要
查詢語句中建議不超過30個條件。
分析語句中不寫FROM子句和WHERE子句時,預設分析當前Logstore中的資料。分析語句不支援使用offset,不區分大小寫,末尾無需加分號。
語句類型 | 說明 |
查詢語句 | 查詢條件,可以為關鍵詞、數值、數值範圍、空格、星號(*)等。 如果為空白格或星號(*),表示無過濾條件。 |
分析語句 | 對查詢結果或全量資料進行計算和統計。Log Service支援的分析函數和文法,請參見: |
SQL分析語句樣本:
* | SELECT status, count(*) AS PV GROUP BY status
SQL函數
SQL函數通常嵌入在SQL子句中,用於在查詢過程中對資料進行計算或轉換。例如,在SELECT
子句中使用彙總函式或字串函數。
使用情境
SQL函數通常用於對資料進行計算、轉換和格式化。例如,計算總和、平均值、字串操作、日期處理等。
樣本
查詢昨天的日誌。
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date))
計算
Results
欄位值中JSON元素的數量。欄位範例
Results:[{"EndTime":1626314920},{"FireResult":2}]
查詢和分析語句
* | SELECT json_array_length(Results)
SQL子句
SQL子句構成了SQL語句的結構化架構,而SQL函數則用於在這些子句中進行具體的資料操作。
使用情境
SQL子句用於構建完整的SQL查詢或資料動作陳述式,決定資料的來源、條件、分組、排序等。
樣本
判斷Logstore讀寫資料的延時是否大於1000。如果存在1000的延時,則返回消費組資訊。
* | SELECT consumer_group FROM "internal-diagnostic_log" WHERE EXISTS ( SELECT Latency FROM internal-operation_log WHERE "internal-diagnostic_log".LogStore = "internal-operation_log".logstore and latency >1000 )
返回計算結果中的前200行。
* | SELECT request_time LIMIT 200