開始使用 - Amazon Athena

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

開始使用

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

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

必要條件

  • 若您尚未註冊,請先註冊 AWS 帳戶

  • 使用您用於 Athena 的相同 AWS 區域 帳戶 (例如美國西部 (奧勒岡)) 和帳戶,請依照下列步驟在 Amazon S3 中建立儲存貯體來保存您的 Athena 查詢結果。您可將此儲存貯體設定為您的查詢輸出位置。

步驟 1:建立資料庫

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

建立 Athena 資料庫
  1. 前往 https://console.aws.amazon.com/athena/ 開啟 Athena 主控台。

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

  3. 選擇 Edit Settings (編輯設定) 以在 Amazon S3 中設定查詢結果位置。

    選擇編輯設定。
  4. 對於 Manage settings (管理設定),請執行下列其中一項動作:

    • Location of query result (查詢結果的位置) 方塊中,輸入您在 Amazon S3 中為查詢結果建立的儲存貯體路徑。在路徑中加上 s3:// 作為字首。

    • 選擇 Browse S3 (瀏覽 S3),選擇您在目前區域建立的 Amazon S3 儲存貯體,然後選擇 Choose (選擇)。

    在 Amazon S3 中指定要從 Athena 接收查詢結果的位置。
  5. 選擇儲存

  6. 選擇 Editor (編輯器) 以切換至查詢編輯器。

    選擇 Editor (編輯器)。
  7. 在導覽窗格的右側,您可以使用 Athena 查詢編輯器來輸入和執行查詢和陳述式。

    在 Athena 主控台的查詢編輯器。
  8. 若要建立名為 mydatabase 的資料庫,請輸入以下 CREATE DATABASE 陳述式。

    CREATE DATABASE mydatabase
  9. 選擇 Run (執行) 或按 Ctrl+ENTER

  10. 從左側的 Database (資料庫) 清單中,選擇 mydatabase 設為您目前的資料庫。

    選擇您建立的資料庫。

步驟 2:建立資料表

現在您有一個資料庫,您可以為其建立 Athena 資料表。您建立的表格將根據位置中的範例 Amazon CloudFront 日誌資料s3://athena-examples-myregion/cloudfront/plaintext/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保留字,所以會使用反引號 (`) 字元逸出。 ROW FORMAT DELIMITED意味著 Athena 將使用調用的默認庫LazySimpleSerDe來完成解析數據的實際工作。此範例也會指定欄位以製表符分隔 (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)。您指定的 regex 群組會成為單獨的資料表資料欄。若要在 CREATE TABLE 陳述式中使用 regex,則請使用如下所示的語法。此語法指示 Athena 使用 正則表 SerDe 程式庫和您指定的規則表達式。

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

規則表達式對於根據複雜的 CSV 或 TSV 資料建立資料表非常有用,但是很難寫入和維護。幸運的是,還有其他程式庫可用於 JSON、Parquet 和 ORC 等格式。如需詳細資訊,請參閱支援的 SerDes 和資料格式

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

如何在 Athena 中建立資料表
  1. 在導覽窗格中,針對 Database (資料庫),請確認 mydatabase 已選取。

  2. 若要在查詢編輯器中給自己更多空間,您可以選擇箭頭圖示來收合導覽窗格。

    選擇箭頭以收合導覽窗格。
  3. 如需建立新查詢的索引標籤,請選擇加號 (+) 以登入查詢編輯器。一次最多可以開啟十個查詢標籤。

    選擇加號圖示以建立新查詢。
  4. 如需關閉一個或多個查詢索引標籤,請選擇加號旁邊的箭頭。如需一次關閉所有索引標籤,請選擇箭頭,然後選擇 Close all tabs (關閉所有索引標籤)。

    選擇箭頭圖示,便可關閉一個或多個查詢索引標籤。
  5. 在查詢窗格中,輸入下列 CREATE EXTERNAL TABLE 陳述式。Regex 會細分來自日誌資料中 ClientInfo 欄位的作業系統、瀏覽器和瀏覽器版本資訊。

    注意

    以下範例中使用的正則表達式旨在與 athena-examples Amazon S3 位置中公開可用的範例 CloudFront 日誌資料搭配使用,僅供說明。如需查詢標準記錄檔和即時 CloudFront 記錄檔的更多 up-to-date 正則運算式,請參閱。查詢 Amazon CloudFront 日誌

    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/';
  6. LOCATION陳述式中,將 myregion 取代 AWS 區域 為您目前使用的 (例如us-west-1)。

  7. 選擇執行

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

步驟 3:查詢資料

現在您已在 Athena 中根據 Amazon S3 的資料建立 cloudfront_logs 資料表,您可以對資料表執行 SQL 查詢,並在 Athena 中查看結果。如需有關在 Athena 中使用 SQL 的詳細資訊,請參閱 Athena 的 SQL 參考

若要執行查詢
  1. 選擇加號 (+) 打開一個新的查詢索引標籤,並在查詢窗格中輸入以下 SQL 陳述式。

    SELECT os, COUNT(*) count FROM cloudfront_logs WHERE date BETWEEN date '2014-07-05' AND date '2014-08-05' GROUP BY os
  2. 選擇執行

    結果類似如下:

    在 Athena 主控台中檢視查詢結果。
  3. 若要儲存查詢結果到 .csv 檔案,請選擇 Download resutls (下載結果)

    下載 CSV 格式的查詢結果。
  4. 若要檢視或執行先前的查詢,請選擇 Recent queries (近期查詢) 索引標籤。

    選擇 Recent queries (近期查詢) 以檢視先前的查詢。
  5. 若要從 Recent queries (近期查詢) 索引標籤下載先前查詢的結果,請選取查詢,然後選擇 Download results (下載結果)。查詢會保留 45 天。

    在 Athena 主控台中檢視和下載近期查詢。
  6. 若要將一個或多個最近使用的 SQL 查詢字串下載至 CSV 檔案,請選擇 Download CSV (下載 CSV)。

    將最近的查詢字串下載至 CSV 檔案。

    如需詳細資訊,請參閱 使用查詢結果、近期查詢和輸出檔案

儲存查詢

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

鍵盤快速鍵和預先輸入的建議

Athena 查詢編輯器為各種動作提供了不同的鍵盤快速鍵,例如執行查詢、格式化查詢、列操作以及尋找及取代。如需詳細資訊和快速鍵的完整清單,請參閱 AWS 大數據部落格中的使用 Amazon Athena 查詢編輯器中的鍵盤快速鍵提高生產力

Athena 查詢編輯器支援預先輸入的程式碼建議,以獲得更快的查詢編寫體驗。為協助您更準確且更有效率地編寫 SQL 查詢,其提供了以下功能:

  • 當您輸入時,將會即時顯示關鍵字、本機變數、程式碼片段和目錄項目。

  • 當您輸入資料庫名稱或資料表名稱,並在其後加上一個點時,編輯器會輕鬆顯示可供選擇的資料表和資料欄清單。

  • 將滑鼠游標移至程式碼片段建議上時,該概要會顯示程式碼片段語法和用法的簡要概觀。

  • 為提高程式碼可讀性,關鍵字及其醒目提示規則也已更新,符合 Trino 和 Hive 的最新語法。

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

連接至其他資料來源

本教學課程使用 Amazon S3 中 CSV 格式的資料來源。如需搭配使用 Athena 的詳細資訊 AWS Glue,請參閱用於連接 AWS Glue 到 Amazon S3 中的資料來源。您也可以使用 ODBC 和 JDBC 驅動程式、外部 Hive 中繼存放區和 Athena 資料來源連接器,將 Athena 連接到各種資料來源。如需詳細資訊,請參閱連線至資料來源