

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

# 開始使用
<a name="getting-started"></a>

此教學課程會逐步解說如何使用 Amazon Athena 來查詢資料。您將會根據在 Amazon Simple Storage Service 中存放的範例資料來建立資料表、查詢資料表，並檢查查詢結果。

此教學課程中使用線上資源，因此將向您就執行的查詢收費。您不需為本教學課程所使用的位置中的範例資料付費，但如果您上傳自己的資料檔案至 Amazon S3，則需付費。

## 先決條件
<a name="getting-started-prerequisites"></a>
+ 若您尚未註冊，[請先註冊 AWS 帳戶](setting-up.md#sign-up-for-aws)。
+ 使用您用於 Athena 的相同 AWS 區域 （例如，美國西部 （奧勒岡）) 和帳戶，依照步驟在 [Amazon S3 中建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html)體，以保留您的 Athena 查詢結果。您可將此儲存貯體設定為您的查詢輸出位置。

**Topics**
+ [先決條件](#getting-started-prerequisites)
+ [步驟 1：建立資料庫](step-1-create-a-database.md)
+ [步驟 2：建立資料表](step-2-create-a-table.md)
+ [步驟 3：查詢資料](step-3-query-data.md)
+ [步驟 4：使用具名查詢](step-4-use-named-queries.md)
+ [步驟 5：使用鍵盤快速鍵和預先輸入的建議](step-5-using-keyboard-shortcuts.md)
+ [步驟 6：連線至其他資料來源](step-6-connect-to-other-data-sources.md)

# 步驟 1：建立資料庫
<a name="step-1-create-a-database"></a>

首先，您需要在 Athena 中建立資料庫。

**建立 Athena 資料庫**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 如果這是您第一次造訪您目前 AWS 區域中的 Athena 主控台，請選擇 **Explore the query editor** (探索查詢編輯器) 以開啟查詢編輯器。此外，Athena 會於查詢編輯器中開啟。

1. 選擇 **Edit Settings** (編輯設定) 以在 Amazon S3 中設定查詢結果位置。  
![\[選擇編輯設定。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-choose-view-settings.png)

1. 對於 **Manage settings** (管理設定)，請執行下列其中一項動作：
   + 在 **Location of query result** (查詢結果的位置) 方塊中，輸入您在 Amazon S3 中為查詢結果建立的儲存貯體路徑。在路徑中加上 `s3://` 作為字首。
   + 選擇 **Browse S3** (瀏覽 S3)，選擇您在目前區域建立的 Amazon S3 儲存貯體，然後選擇 **Choose** (選擇)。  
![\[在 Amazon S3 中指定要從 Athena 接收查詢結果的位置。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-setting-results-location.png)

1. 選擇**儲存**。

1. 選擇 **Editor** (編輯器) 以切換至查詢編輯器。  
![\[選擇 Editor (編輯器)。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-choose-editor.png)

1. 在導覽窗格的右側，您可以使用 Athena 查詢編輯器來輸入和執行查詢和陳述式。

1. 若要建立名為 `mydatabase` 的資料庫，請輸入以下 CREATE DATABASE 陳述式。

   ```
   CREATE DATABASE mydatabase
   ```

1. 選擇 **Run** (執行) 或按 **Ctrl\$1ENTER**。

1. 從左側的 **Database** (資料庫) 清單中，選擇 `mydatabase` 設為您目前的資料庫。

# 步驟 2：建立資料表
<a name="step-2-create-a-table"></a>

現在您有一個資料庫，您可以為其建立 Athena 資料表。您建立的資料表將以位置 `s3://athena-examples-myregion/cloudfront/plaintext/` 中的 Amazon CloudFront 日誌資料為基準，其中 *myregion* 是目前 AWS 區域所在位置。

日誌資料範例採用製表符分隔值 (TSV) 格式，這表示製表符字元會用作分隔符號來分隔欄位。資料看起來會如以下範例：出於可讀性考量，摘錄中的製表符已轉換為空格並縮短了最終欄位。

```
2014-07-05 20:00:09 DFW3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:09 DFW3 4252 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:10 AMS1 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-3.jpeg 200 - Mozilla/5.0[...]
```

若要讓 Athena 能讀取此資料，您可以建立簡單直接的 `CREATE EXTERNAL TABLE` 陳述式 (如以下所示)。建立資料表的陳述式會定義與資料對應的資料欄、指定資料的分隔方式，並指定 Amazon S3 中包含資料範例的位置。請注意，由於 Athena 預期要掃描資料夾中的所有檔案，因此 `LOCATION` 子句會指定 Amazon S3 資料夾位置，而不是特定檔案。

目前請勿使用此範例，因為它具有一個重要限制，我們會在稍後進行解釋。

```
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
  `Date` DATE,
  Time STRING,
  Location STRING,
  Bytes INT,
  RequestIP STRING,
  Method STRING,
  Host STRING,
  Uri STRING,
  Status INT,
  Referrer STRING,
  ClientInfo STRING
  ) 
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  LINES TERMINATED BY '\n'
  LOCATION 's3://athena-examples-my-region/cloudfront/plaintext/';
```

此範例會建立名為 `cloudfront_logs` 的資料表，並為每個欄位指定名稱和資料類型。這些欄位會成為資料表中的資料欄。由於 `date` 是[保留字](reserved-words.md#list-of-ddl-reserved-words)，它透過反引號 (`) 字符轉義。`ROW FORMAT DELIMITED` 代表 Athena 將使用名為 [LazySimpleSerDe](lazy-simple-serde.md) 的預設程式庫來完成解析資料的實際工作。此範例也會指定欄位以製表符分隔 (`FIELDS TERMINATED BY '\t'`），且檔案中的每個記錄以新行字元（`LINES TERMINATED BY '\n`) 結尾。最後，`LOCATION` 子句會指定要讀取的實際資料所在的 Amazon S3 中的路徑。

如果您有自己的製表符或逗號分隔的資料，則可以使用 `CREATE TABLE` 陳述式，例如剛剛呈現的範例，只要您的欄位不包含巢狀資訊。不過，如果您的資料欄 (例如 `ClientInfo`) 包含使用不同分隔符號的巢狀資訊，則需要不同的方法。

**從 ClientInfo 欄位擷取資料**  
查看範例資料，以下是最終欄位 `ClientInfo` 的完整範例：

```
Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9
```

如您所見，此欄位為多重值。由於剛剛呈現的範例 `CREATE TABLE` 陳述式將製表符指定為欄位分隔符號，則無法將 `ClientInfo` 欄位內的單獨元件分解為單獨的資料欄。因此，需要新的 `CREATE TABLE` 陳述式。

若要根據 `ClientInfo` 欄位內的數值建立資料欄，您可以使用包含 regex 群組的[規則表達式](https://en.wikipedia.org/wiki/Regular_expression) (regex)。您指定的 regex 群組會成為單獨的資料表資料欄。若要在 `CREATE TABLE` 陳述式中使用 regex，則請使用如下所示的語法。此語法指示 Athena 使用 [Regex SerDe](regex-serde.md) 程式庫和您指定的規則表達式。

```
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
  WITH SERDEPROPERTIES ("input.regex" = "regular_expression")
```

規則表達式對於根據複雜的 CSV 或 TSV 資料建立資料表非常有用，但是很難寫入和維護。幸運的是，還有其他程式庫可用於 JSON、Parquet 和 ORC 等格式。如需詳細資訊，請參閱[為您的資料選擇 SerDe](supported-serdes.md)。

現在您已準備好要開始在 Athena 查詢編輯器中建立資料表。所以該 `CREATE TABLE` 陳述式和 regex 正好提供給您。

**如何在 Athena 中建立資料表**

1. 在導覽窗格中，針對 **Database** (資料庫)，請確認 `mydatabase` 已選取。

1. 若要在查詢編輯器中給自己更多空間，您可以選擇箭頭圖示來收合導覽窗格。  
![\[選擇箭頭以收合導覽窗格。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-collapse-nav-pane.png)

1. 如需建立新查詢的索引標籤，請選擇加號 (**\$1**) 以登入查詢編輯器。一次最多可以開啟十個查詢標籤。  
![\[選擇加號圖示以建立新查詢。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-new-query-tab.png)

1. 如需關閉一個或多個查詢索引標籤，請選擇加號旁邊的箭頭。如需一次關閉所有索引標籤，請選擇箭頭，然後選擇 **Close all tabs** (關閉所有索引標籤)。  
![\[選擇箭頭圖示，便可關閉一個或多個查詢索引標籤。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/close-all-query-editor-tabs.png)

1. 在查詢窗格中，輸入下列 `CREATE EXTERNAL TABLE` 陳述式。Regex 會細分來自日誌資料中 `ClientInfo` 欄位的作業系統、瀏覽器和瀏覽器版本資訊。
**注意**  
下列範例中使用的 regex 旨在與 `athena-examples` Amazon S3 位置中公開的範例 CloudFront 日誌資料搭配使用，且僅供示範之用。如需有關查詢標準和即時 CloudFront 日誌檔案的最新 regex，請參閱 [查詢 Amazon CloudFront 日誌](cloudfront-logs.md)。

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
     `Date` DATE,
     Time STRING,
     Location STRING,
     Bytes INT,
     RequestIP STRING,
     Method STRING,
     Host STRING,
     Uri STRING,
     Status INT,
     Referrer STRING,
     os STRING,
     Browser STRING,
     BrowserVersion STRING
     ) 
     ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
     WITH SERDEPROPERTIES (
     "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$"
     ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';
   ```

1. 在 `LOCATION`陳述式中，將 *myregion* 取代 AWS 區域 為您目前正在使用的 （例如，`us-west-1`)。

1. 選擇**執行**。

   系統會建立資料表 `cloudfront_logs`，且資料表顯示在 `mydatabase` 資料庫的 **Tables** (資料表) 清單下。

# 步驟 3：查詢資料
<a name="step-3-query-data"></a>

現在您已在 Athena 中根據 Amazon S3 的資料建立 `cloudfront_logs` 資料表，您可以對資料表執行 SQL 查詢，並在 Athena 中查看結果。如需有關在 Athena 中使用 SQL 的詳細資訊，請參閱 [Athena 的 SQL 參考](ddl-sql-reference.md)。

**若要執行查詢**

1. 選擇加號 (**\$1**) 打開一個新的查詢索引標籤，並在查詢窗格中輸入以下 SQL 陳述式。

   ```
   SELECT os, COUNT(*) count 
   FROM cloudfront_logs 
   WHERE date BETWEEN date '2014-07-05' AND date '2014-08-05' 
   GROUP BY os
   ```

1. 選擇**執行**。

   結果類似如下：  
![\[在 Athena 主控台中檢視查詢結果。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-query-results.png)

1. 若要儲存查詢結果到 `.csv` 檔案，請選擇 **Download resutls (下載結果)**。  
![\[下載 CSV 格式的查詢結果。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-query-results-download-csv.png)

1. 若要檢視或執行先前的查詢，請選擇 **Recent queries** (近期查詢) 索引標籤。  
![\[選擇 Recent queries (近期查詢) 以檢視先前的查詢。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-recent-queries.png)

1. 若要從 **Recent queries** (近期查詢) 索引標籤下載先前查詢的結果，請選取查詢，然後選擇 **Download results** (下載結果)。查詢會保留 45 天。  
![\[在 Athena 主控台中檢視和下載近期查詢。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-recent-queries-tab-download.png)

1. 若要將一個或多個最近使用的 SQL 查詢字串下載至 CSV 檔案，請選擇 **Download CSV** (下載 CSV)。  
![\[將最近的查詢字串下載至 CSV 檔案。\]](http://docs.aws.amazon.com/zh_tw/athena/latest/ug/images/getting-started-recent-queries-tab-download-csv.png)

   如需詳細資訊，請參閱[使用查詢結果和近期查詢](querying.md)。

# 步驟 4：使用具名查詢
<a name="step-4-use-named-queries"></a>

您可以使用名稱儲存您在查詢編輯器中建立或編輯的查詢。Athena 會將這些查詢儲存在 **Saved queries** (已儲存的查詢) 索引標籤。您可以使用 **Saved queries** (已儲存的查詢) 索引標籤重新呼叫、執行、重新命名或刪除已儲存的查詢。如需詳細資訊，請參閱[使用已儲存的查詢](saved-queries.md)。

# 步驟 5：使用鍵盤快速鍵和預先輸入的建議
<a name="step-5-using-keyboard-shortcuts"></a>

Athena 查詢編輯器為各種動作提供了不同的鍵盤快速鍵，例如執行查詢、格式化查詢、列操作以及尋找及取代。如需詳細資訊和快速鍵的完整清單，請參閱 *AWS 大數據部落格*中的[使用 Amazon Athena 查詢編輯器中的鍵盤快速鍵提高生產力](https://aws.amazon.com/blogs/big-data/improve-productivity-by-using-keyboard-shortcuts-in-amazon-athena-query-editor/)。

Athena 查詢編輯器支援預先輸入的程式碼建議，以獲得更快的查詢編寫體驗。為協助您更準確且更有效率地編寫 SQL 查詢，其提供了以下功能：
+ 當您輸入時，將會即時顯示關鍵字、本機變數、程式碼片段和目錄項目。
+ 當您輸入資料庫名稱或資料表名稱，並在其後加上一個點時，編輯器會輕鬆顯示可供選擇的資料表和資料欄清單。
+ 將滑鼠游標移至程式碼片段建議上時，該概要會顯示程式碼片段語法和用法的簡要概觀。
+ 為提高程式碼可讀性，關鍵字及其醒目提示規則也已更新，符合 Trino 和 Hive 的最新語法。

此功能預設為啟用。若要啟用或停用此功能，請使用查詢編輯器視窗右下角的**程式碼編輯器偏好設定** (齒輪圖示)。

# 步驟 6：連線至其他資料來源
<a name="step-6-connect-to-other-data-sources"></a>

本教學課程使用 Amazon S3 中 CSV 格式的資料來源。如需搭配 使用 Athena 的詳細資訊 AWS Glue，請參閱 [使用 AWS Glue Data Catalog 連線到您的資料](data-sources-glue.md)。您也可以使用 ODBC 和 JDBC 驅動程式、外部 Hive 中繼存放區和 Athena 資料來源連接器，將 Athena 連接到各種資料來源。如需詳細資訊，請參閱[連線至資料來源](work-with-data-stores.md)。