

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

# 使用 Athena 主控台中的表單來新增 AWS Glue 資料表
<a name="data-sources-glue-manual-table"></a>

下列程序會說明如何利用 Athena 主控台，使用 **Create Table From S3 bucket data** (從 S3 儲存貯體資料建立資料表) 表單新增資料表。

**新增資料表和使用表單輸入結構描述資訊**

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

1. 在查詢編輯器中，選擇位在 **Tables and views** (資料表和檢視) 旁的 **Create** (建立)，然後選擇 **S3 bucket data** (S3 儲存貯體資料)。

1. 在 **Create Table From S3 bucket data** (從 S3 儲存貯體資料建立資料表) 表單上，對於 **Table name** (資料表名稱)，輸入資料表的名稱。如需有關 Athena 中資料庫名稱、資料表名稱和資料欄名稱可接受字元的資訊，請參閱 [為資料庫、資料表和資料欄命名](tables-databases-columns-names.md)。

1. 對於 **Database configuration** (資料庫組態)，選擇現有資料庫或建立新資料庫。

1. 對於 **Location of Input Data Set** (輸入資料集的位置)，請指定 Amazon S3 中的資料夾路徑，該資料夾包含您要處理的資料集。請勿在路徑中包含檔案名稱。Athena 會掃描您指定之資料夾中的所有檔案。如果您的資料已經進行分割 (例如，

    s3://amzn-s3-demo-bucket/logs/year=2004/month=12/day=11/)，僅輸入基本路徑 (例如，s3://amzn-s3-demo-bucket/logs/)。

1. 在 **Data Format** (資料格式) 中，請選擇下列選項：
   + 對於 **Table type** (資料表類型)，選擇 **Apache Hive**、**Apache Iceberg** 或 **Delta Lake**。Athena 預設使用 Apache Hive 資料表類型。如需有關在 Athena 中查詢 Apache Iceberg 的詳細資訊，請參閱 [查詢 Apache Iceberg 資料表](querying-iceberg.md)。如需有關在 Athena 中使用 Delta Lake 資料表的詳細資訊，請參閱 [查詢 Linux Foundation Delta Lake 資料表](delta-lake-tables.md)。
   + 在 **File format** (檔案格式) 中，選擇資料所在的檔案或使用的日誌格式。
     + 對於 **Text File with Custom Delimiters (含自訂分隔符號的文字檔)** 選項，指定 **Field terminator (欄位結束字元)** (亦即資料欄分隔符號)。或者，您可以指定標記陣列類型結尾的 **Collection terminator** (集合結束符號)，或指定標記地圖資料類型結尾的 **Collection terminator** (集合結束符號)。
   + **SerDe library** (SerDe 程式庫) – SerDe (序列化程式-還原序列化程式) 程式庫會解析特定的資料格式，以便 Athena 可以為其建立資料表。對於大多數格式，系統會為您選擇預設的 SerDe 程式庫。對於下列格式，請根據您的需求選擇程式庫：
     + **Apache Web 日誌** – 選擇 **RegexSerDe** 或 **GrokSerDe** 程式庫。對於 RegexSerDe，請在 **Regex definition** (Regex 定義) 方塊中提供規則表達式。對於 GrokSerDe，請為 `input.format` SerDe 屬性提供一系列具名規則表達式。具名的規則表達式比規則表達式更容易讀取和維護。如需詳細資訊，請參閱[查詢存放在 Amazon S3 中的 Apache 日誌](querying-apache-logs.md)。
     + **CSV** – 如果您的逗號分隔資料不包含以雙引號括住的值，或資料使用 `java.sql.Timestamp` 格式，請選擇 **LazySimpleSerDe**。如果您的資料包含引號或使用 UNIX 數值格式的 `TIMESTAMP` (例如 `1564610311`)，請選擇 **OpenCSVSerDe**。如需詳細資訊，請參閱[適用於 CSV、TSV 和自訂分隔檔案的 Lazy Simple SerDe](lazy-simple-serde.md)及[用於處理 CSV 的 Open CSV SerDe](csv-serde.md)。
     + **JSON** – 選擇 **OpenX** 或 **Hive** JSON SerDe 程式庫。這兩種格式都預期每個 JSON 文件都以單行文字表示，而且欄位不以換行字元分隔。OpenX SerDe 提供了一些額外屬性。如需這些屬性的相關資訊，請參閱[OpenX JSON SerDe](openx-json-serde.md)。如需有關 Hive SerDe 的資訊，請參閱 [Hive JSON SerDe](hive-json-serde.md)。

     如需有關在 Athena 中使用 SerDe 程式庫的詳細資訊，請參閱[為您的資料選擇 SerDe](supported-serdes.md)。

1. 在 **SerDe properties** (SerDe 屬性) 中，請根據您使用的 SerDe 程式庫和您的需求，新增、編輯或移除屬性和值。
   + 若要新增 SerDe 屬性，請選擇 **Add SerDe property** (新增 SerDe 屬性)。
   + 在 **Name** (名稱) 欄位中，輸入屬性的名稱。
   + 在 **Value** (值) 欄位中，輸入屬性的值。
   + 若要移除 SerDe 屬性，請選擇 **Remove** (移除)。

1. 在 **Table properties** (資料表屬性) 中，請根據您的需求選擇或編輯資料表屬性。
   + 在 **Write compression** (寫入壓縮) 中，選擇壓縮選項。是否提供寫入壓縮選項和可用壓縮選項取決於資料格式。如需詳細資訊，請參閱[在 Athena 中使用壓縮](compression-formats.md)。
   + 如果基礎資料是在 Amazon S3 中加密，在 **Encryption** (加密) 中，選取 **Encrypted data set** (加密的資料集)。此選項會在 `CREATE TABLE` 陳述式中將 `has_encrypted_data` 資料表屬性設定為 true。

1. 在 **Column details** (資料欄詳細資訊) 中，輸入要新增至資料表的資料欄名稱和資料類型。
   + 若要一次新增更多資料欄，請選擇 **Add a column (新增資料欄)**。
   + 若要快速新增更多資料欄，請選擇 **Bulk add columns (大量新增資料欄)**。在文字方塊中，輸入逗號分隔的資料欄清單，格式為 {{column\_name}} {{data\_type}}, {{column\_name}} {{data\_type}}[, ...]，然後選擇 **Add** (新增)。

1. (選用) 對於 **Partition details** (分割區詳情)，新增一個或多個資料欄名稱和資料類型。分割會根據資料欄值將相關資料保存在一起，有助於減少每次查詢掃描的資料量。如需分割的相關資訊，請參閱[分割您的資料](partitions.md)。

1. (選用) 在 **Bucketing** (歸納) 中，您可以指定包含要組合在一起的資料列的一個或多個資料欄，然後將這些資料列放入多個儲存貯體中。這可允許您在指定已歸納的資料欄值時僅查詢要讀取的儲存貯體。
   + 在 **Buckets** (儲存貯體) 中，請選取具有大量唯一值 (例如主索引鍵) 且經常用來篩選查詢中資料的一個或多個資料欄。
   + 在 **Number of buckets** (儲存貯體數量) 中，輸入可讓檔案具有最佳大小的儲存貯體數量。如需詳細資訊，請參閱 AWS 大數據部落格中的 [Amazon Athena 的前 10 個效能調校秘訣](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)。
   + 若要指定歸納的資料欄，`CREATE TABLE` 陳述式會使用下列語法：

     ```
     CLUSTERED BY ({{bucketed_columns}}) INTO {{number_of_buckets}} BUCKETS
     ```
**注意**  
**Bucketing** (歸納) 選項不適用於 **Iceberg** 資料表類型。

1. **Preview table query** (預覽資料表查詢) 方塊顯示由您所輸入到表單中的資訊產生的 `CREATE TABLE` 陳述式。無法直接編輯預覽陳述式。若要變更陳述式，請修改預覽上方的表單欄位，或不使用表單，在查詢編輯器中[直接建立陳述式](creating-tables-how-to.md#to-create-a-table-using-hive-ddl)。

1. 選擇 **Create table** (建立資料表) 以在查詢編輯器中執行產生的陳述式並建立資料表。