JOIN子句用於串連多個表。Log Service支援同Project下跨LogStore、LogStore和MySQL、LogStore和OSS的聯集查詢。本文介紹JOIN子句的基本文法和樣本。
文法
SELECT table.key
FROM table1
INNER|LEFT|RIGHT|FULL OUTER JOIN table2
ON table1.key=table2.key
Log Service支援您在SELECT語句中使用INNER JOIN子句、LEFT JOIN子句、RIGHT JOIN子句和FULL JOIN子句。更多資訊,請參見JOIN。
|
JOIN方式 |
說明 |
|
INNER JOIN |
所有表存在交集時,返回滿足條件的SELECT結果。 |
|
LEFT JOIN |
即使右表(table2)中沒有匹配的資料,也從左表(table1)返回所有SELECT結果。 |
|
RIGHT JOIN |
即使左表(table1)中沒有匹配的資料,也從右表(table2)返回所有SELECT結果。 |
|
FULL JOIN |
只要一個表中存在匹配的資料,則返回滿足條件的SELECT結果。 |
參數說明
|
參數 |
說明 |
|
key |
日誌欄位、運算式等,參數值為任意資料類型。 |
|
table |
table1為LogStore,table2為LogStore、MySQL資料庫或OSS Bucket。更多資訊,請參見關聯MySQL資料來源、關聯OSS資料來源。 |
樣本
在某個Project下,名為internal-diagnostic_log的LogStore用於記錄各個LogStore的消費延時、警示、採集等日誌,名為internal-operation_log的LogStore用於記錄Project內所有資源的動作記錄。您可以使用JOIN子句,聯集查詢兩個LogStore,從而擷取各個LogStore的消費組資訊、延時時間和要求方法。
樣本1:INNER JOIN
-
查詢和分析語句
* | SELECT "internal-diagnostic_log".consumer_group, "internal-diagnostic_log".logstore, "internal-operation_log".Latency, "internal-operation_log".Method FROM "internal-diagnostic_log" INNER JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore LIMIT 10000 -
查詢和分析結果
返回滿足條件的1328條資料。
結果包含 consumer_group、logstore、latency、method 四列,樣本資料中 consumer_group 為
etl-cf43c82162ac3ca60a906ebec4c6b87b,logstore 為website_log,method 為PullData,latency 值各行不同(如 513、591、465 等)。
樣本2:LEFT JOIN
-
查詢和分析語句
* | SELECT "internal-diagnostic_log".consumer_group, "internal-diagnostic_log".logstore, "internal-operation_log".Latency, "internal-operation_log".Method FROM "internal-diagnostic_log" LEFT JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore LIMIT 10000 -
查詢和分析結果
從名為internal-diagnostic_log的LogStore中返回1328條資料。
查詢結果包含 consumer_group、logstore、latency、method 四列,其中 method 列的值包括 ConsumerGroupHeartBeat 和 PullData。
樣本3:RIGHT JOIN
-
查詢和分析語句
* | SELECT "internal-diagnostic_log".consumer_group, "internal-diagnostic_log".logstore, "internal-operation_log".Latency, "internal-operation_log".Method FROM "internal-diagnostic_log" RIGHT JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore LIMIT 10000 -
查詢和分析結果
從名為internal-operation_log的LogStore中返回1757條資料。
結果表格包含
consumer_group、logstore、latency、method四列,其中consumer_group和logstore列值均為 null(表示右表中未匹配到左表的記錄),method列值均為 PostLogStoreLogs,latency列顯示不同的延遲數值。
樣本4:FULL OUTER JOIN
-
查詢和分析語句
* | SELECT "internal-diagnostic_log".consumer_group, "internal-diagnostic_log".logstore, "internal-operation_log".Latency, "internal-operation_log".Method FROM "internal-diagnostic_log" FULL OUTER JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore LIMIT 10000 -
查詢和分析結果
返回滿足條件的1757條資料。
查詢結果表格包含 consumer_group、logstore、latency、method 四列,其中 consumer_group 和 logstore 列值為 null,method 列值均為 PostLogStoreLogs。