

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 查詢
<a name="CWL_QuerySyntax-Lookup"></a>

使用 `lookup` 以查詢資料表中的參考資料豐富查詢結果。查詢資料表包含您上傳至 Amazon CloudWatch Logs 的 CSV 資料。查詢執行時，`lookup`命令會將日誌事件中的欄位與查詢資料表中的欄位相符，並將指定的輸出欄位附加至結果。

針對資料擴充案例使用查詢表，例如將使用者 IDs映射至使用者詳細資訊、將產品代碼映射至產品資訊，或將錯誤代碼映射至錯誤描述。

## 建立和管理查詢資料表
<a name="CWL_QuerySyntax-Lookup-tables"></a>

您必須先建立查詢資料表，才能在查詢中使用 `lookup`命令。您可以從 CloudWatch 主控台或使用 Amazon CloudWatch Logs API 建立和管理查詢資料表。

**建立查詢資料表 （主控台）**  


1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇**設定**，然後選擇**日誌**索引標籤。

1. 捲動至**查詢資料表**，然後選擇**管理**。

1. 選擇**建立查詢資料表**。

1. 輸入查詢資料表的名稱。名稱只能包含英數字元、連字號和底線。

1. (選用) 輸入描述。

1. 上傳 CSV 檔案。檔案必須包含具有資料欄名稱的標頭列、使用 UTF-8 編碼，且不得超過 10 MB。

1. （選用） 指定要加密資料表資料的 AWS KMS 金鑰。

1. 選擇**建立**。

建立查詢資料表後，您可以在 CloudWatch Logs Insights 查詢編輯器中檢視它。選擇**查詢資料表**索引標籤來瀏覽可用的資料表及其欄位。

若要更新查詢資料表，請選取資料表，然後選擇**動作**、**更新**。上傳新的 CSV 檔案以取代所有現有的內容。若要刪除查詢資料表，請選擇**動作**、**刪除**。

**注意**  
每個 每個帳戶最多可以建立 100 個查詢資料表 AWS 區域。CSV 檔案最多可達 10 MB。您也可以使用 Amazon CloudWatch Logs API 管理查詢資料表。如需詳細資訊，請參閱《*Amazon CloudWatch Logs API 參考*》中的 [CreateLookupTable](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLookupTable.html)。

**注意**  
如果查詢表使用 KMS 金鑰加密，呼叫者必須擁有金鑰 （用於加密查詢表的 KMS 金鑰） 的`kms:Decrypt`許可，才能搭配參考該查詢表的查詢使用 `StartQuery` API。如需詳細資訊，請參閱[使用 加密 CloudWatch Logs 中的查詢資料表 AWS Key Management Service](encrypt-lookup-tables-kms.md)。

## 查詢查詢語法
<a name="CWL_QuerySyntax-Lookup-syntax"></a>

**命令結構**  
以下顯示此命令的格式。

```
lookup table lookup-field as log-field [,...] output-mode output-field[,...]
```

命令使用下列引數：
+ `table` – 要使用的查詢資料表名稱。
+ `lookup-field` – 查詢資料表中要比對的欄位。
+ `log-field` – 日誌事件中要比對的欄位。相符項目完全且區分大小寫。
+ `output-mode` – 指定 `OUTPUT`將輸出欄位新增至結果。如果日誌事件中已存在同名的欄位，則會予以覆寫。
+ `output-field` – 要新增至結果的查詢資料表中的一個或多個欄位。

**範例：使用使用者詳細資訊來豐富日誌事件**  
假設您有一個包含 `id` 欄位的事件日誌群組，以及名為 的查詢資料表`user_data`，其中包含欄 `id`、`name`、 `email`和 `department`。下列查詢會使用查詢表中的使用者名稱、電子郵件和部門來豐富每個日誌事件。

```
fields action, status, name, email, department
| lookup user_data id OUTPUT name, email, department
```

**範例：搭配彙總使用查詢**  
您可以搭配彙總函數使用查詢輸出欄位。下列查詢會使用使用者詳細資訊豐富日誌事件，然後計算依電子郵件地址分組的事件。

```
fields user_id, action, username, email, department
| lookup user_data user_id OUTPUT username, email, department
| stats count(*) by email
```

**範例：搭配篩選條件使用查詢**  
您可以根據查詢傳回的欄位來篩選結果。下列查詢會擴充日誌事件，然後篩選以僅顯示特定部門的事件。

```
fields user_id, action
| lookup user_data user_id OUTPUT username, email, department
| filter department = "Engineering"
```