

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

# 建立資料表
<a name="tables-described"></a>

即使執行爬蟲程式是清查資料存放區中資料的建議方法，您也可以 AWS Glue Data Catalog 手動將中繼資料表新增至 。此方法可讓您對中繼資料定義進行更多控制，並根據特定需求自訂中繼資料定義。

也可手動將資料表新增到 Data Catalog ，方式如下：
+ 使用 AWS Glue 主控台，在 AWS Glue Data Catalog中手動建立資料表。如需詳細資訊，請參閱[使用主控台建立資料表](#console-tables)。
+ 在 [AWS Glue API](aws-glue-api.md) 中使用 `CreateTable` 操作，在 AWS Glue Data Catalog中建立資料表。如需詳細資訊，請參閱[CreateTable 動作 (Python: create\_table)](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-CreateTable)。
+ 使用 CloudFormation 範本。如需詳細資訊，請參閱[適用於 AWS Glue 的AWS CloudFormation](populate-with-cloudformation-templates.md)。

當您使用主控台或 API 手動定義資料表時，需指定資料表結構描述和分類欄位的值，以表示資料來源中的資料類型和格式。如果是爬蟲程式來建立資料表，資料格式和結構描述就會由內建分類器或自訂分類器決定。如需使用 AWS Glue 主控台建立資料表的詳細資訊，請參閱 [使用主控台建立資料表](#console-tables)。

**Topics**
+ [資料表分割區](#tables-partition)
+ [資料表資源連結](#tables-resource-links)
+ [使用主控台建立資料表](#console-tables)
+ [建立分區索引](partition-indexes.md)
+ [使用爬蟲程式更新手動建立的資料目錄資料表](#update-manual-tables)
+ [Data Catalog 資料表屬性](#table-properties)

## 資料表分割區
<a name="tables-partition"></a>

Amazon Simple Storage Service (Amazon S3) 資料夾的 AWS Glue 資料表定義可描述已分割的資料表。例如，為了改善查詢效能，分割的資料表可能使用月份名稱為金鑰，以將每月資料分隔成不同的檔案。在 AWS Glue 中，資料表定義包含資料表的分割金鑰。AWS Glue 在評估 Amazon S3 資料夾中的資料以編目資料表時，會決定要新增個別資料表或分割資料表。

您可以在資料表上建立分割區索引來擷取分割區的子集，而不是載入資料表中的所有分割區。如需使用分割區索引的詳細資訊，請參閱[建立分區索引](partition-indexes.md)。

要讓 AWS Glue 為 Amazon S3 資料夾建立分割資料表，以下所有條件都必須為 true：
+ 檔案的結構描述類似，由 AWS Glue 決定。
+ 檔案的日期格式相同。
+ 檔案的壓縮格式相同。

例如，您可能擁有一個名稱為 `my-app-bucket` 的 Amazon S3 儲存貯體，用於存放 iOS 和 Android 應用程式的銷售資料。資料按照年、月、日分割。iOS 和 Android 銷售的資料檔案有相同的結構描述、日期格式和壓縮格式。在 中 AWS Glue Data Catalog，AWS Glue爬蟲程式會使用年、月和日分割索引鍵建立一個資料表定義。

以下的 Amazon S3 `my-app-bucket` 清單顯示了一些分割區。`=` 符號用於指派分割區金鑰值。

```
   my-app-bucket/Sales/year=2010/month=feb/day=1/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=1/Android.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/Android.csv
   ...
   my-app-bucket/Sales/year=2017/month=feb/day=4/iOS.csv
   my-app-bucket/Sales/year=2017/month=feb/day=4/Android.csv
```

## 資料表資源連結
<a name="tables-resource-links"></a>


|  | 
| --- |
| AWS Glue 主控台最近已更新。目前版本的主控台不支援資料表資源連結。 | 

 Data Catalog 也可以包含資料表的*資源連結*。資料表資源連結是本機或共用資料表的連結。您目前只可以在 AWS Lake Formation建立資源連結。建立資料表的資源連結後，您可以在任何使用資料表名稱的地方使用資源連結名稱。連同您擁有或與您共用的資料表，資料表資源連結會由 `glue:GetTables()` 傳回，並顯示為 AWS Glue 主控台中 **Tables (資料表)** 的項目。

 Data Catalog 也可以包含資料庫資源連結。

如需資源連結的詳細資訊，請參閱 *AWS Lake Formation 開發人員指南*中的[建立資源連結](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-resource-links.html)。

## 使用主控台建立資料表
<a name="console-tables"></a>

中的資料表 AWS Glue Data Catalog 是中繼資料定義，代表資料存放區中的資料。您可在執行爬蟲程式時建立資料表，或者也可以在 AWS Glue 主控台中手動建立資料表。在 ** 主控台中的 **TablesAWS Glue (資料表) 清單，會顯示您資料表中繼資料的值。在建立 ETL (擷取、轉換和載入) 任務時，您可以使用資料表的定義來指定來源與目標。

**注意**  
隨著 AWS 管理主控台的最新變更，您可能需要修改現有的 IAM 角色，才能擁有 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables)許可。針對新角色建立，`SearchTables` API 許可已新增為預設值。

若要開始使用，請登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 的 AWS Glue 主控台。選擇 **Tables** (資料表) 索引標籤，然後使用 **Add tables** (新增資料表) 按鈕來建立資料表 (藉由使用爬蟲程式或手動輸入屬性)。

### 在主控台上新增資料表
<a name="console-tables-add"></a>

若要使用爬蟲程式來新增資料表，請依序選擇 **Add tables** (新增資料表)、**Add tables using a crawler** (使用爬蟲程式來新增資料表)。然後，依照 **Add crawler** (新增爬蟲程式) 精靈中的說明來進行操作。當爬蟲程式執行時，資料表就會新增至 AWS Glue Data Catalog。如需詳細資訊，請參閱[使用編目程式填入 Data Catalog](add-crawler.md)。

如果您知道在 Data Catalog 中建立 Amazon Simple Storage Service (Amazon S3) 資料表定義所需的屬性，則可以使用資料表精靈來建立。依序選擇 **Add tables** (新增資料表)、**Add table manually** (手動新增資料表)，然後依照 **Add table** (新增資料表) 精靈中的說明來進行操作。

透過主控台來手動新增資料表時，請注意下列事項：
+ 如果您預計從 Amazon Athena 存取資料表，則應提供只有英數字元和底線字元的名稱。如需詳細資訊，請參閱 [Athena 名稱](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#ate-table-database-and-column-names-allow-only-underscore-special-characters)。
+ 您的來源資料的位置必須是 Amazon S3 路徑。
+ 資料的資料格式必須符合精靈中列出的其中一種格式。對應的分類 SerDe 和其他資料表屬性會根據選擇的格式自動填入。您可以使用下列格式定義資料表：  
**Avro**  
Apache Avro JSON 二進位格式。  
**CSV**  
字元分隔值。您也可以指定逗號、管道、分號、標籤或 Ctrl-A 的分隔符號。  
**JSON**  
JavaScript 物件標記法。  
**XML**  
可擴展標記語言的格式。指定定義資料中資料列的 XML 標籤。資料欄是在資料列標籤中定義。  
**Parquet**  
Apache Parquet 單欄式儲存。  
**ORC**  
最佳化資料列單欄式 (ORC) 檔案格式。旨在高效存放 Hive 資料的格式。
+ 您可以定義資料表的分割區索引鍵。
+ 目前，透過主控台所建立的分區資料表，不能在 ETL 工作中使用。

### 資料表屬性
<a name="console-tables-attributes"></a>

下列是一些重要的資料表屬性：

**名稱**  
此名稱在資料表建立已決定，您無法變更。在許多的 AWS Glue 操作中，都會參照資料表的名稱。

**資料庫**  
您的資料表所在的容器物件。此物件包含存在於 中的資料表組織， AWS Glue Data Catalog 可能與資料存放區中的組織不同。當您刪除資料庫，也會從 Data Catalog 刪除資料庫中內含的所有資料表。

**Description**  
資料表的說明。您可以撰寫說明，來協助您了解資料表的內容。

**資料表格式**  
指定建立標準 AWS Glue 資料表或 Apache Iceberg 格式的資料表。  
Data Catalog 提供下列資料表最佳化選項，以管理資料表儲存並提高 Iceberg 資料表的查詢效能。  
+ **壓縮** – 合併和重寫資料檔案，移除過時的資料，並將分段資料合併為更大、更有效的檔案。
+ **快照保留 **– 快照是 Iceberg 資料表的時間戳記版本。快照保留組態可讓客戶強制執行保留快照的時間長度，以及要保留的快照數量。設定快照保留最佳化工具可透過移除較舊、不必要的快照及其相關聯的基礎檔案，協助管理儲存體負荷。
+ **孤立檔案刪除** – 孤立檔案是 Iceberg 資料表中繼資料不再參考的檔案。這些檔案可能會隨著時間累積，特別是在資料表刪除或 ETL 任務失敗等操作之後。啟用孤立檔案刪除 AWS Glue 可讓 定期識別和移除這些不必要的檔案，釋放儲存空間。
如需詳細資訊，請參閱[最佳化處理 Iceberg 資料表](table-optimizers.md)。

**最佳化組態**  
可以使用預設的設定或自訂設定來啟用資料表最佳化工具。

**IAM 角色**  
 若要執行資料表最佳化工具，服務會代表您擔任 IAM 角色。您可以使用下拉式選單選擇 IAM 角色。請確認角色具有啟用壓縮的必要權限。  
若要進一步了解 IAM 角色的必要權限，請參閱 [資料表最佳化先決條件](optimization-prerequisites.md)。

**Location**  
指標，指向此資料表定義所代表資料存放區中資料的位置。

**分類**  
建立資料表時所提供的分類值。這通常是在爬蟲程式執行時寫入，用來指定來源資料的格式。

**上次更新**  
此資料表在 Data Catalog 中更新的時間和日期 (UTC)。

**加入日期**  
此資料表新增至 Data Catalog 的時間和日期 (UTC)。

**已棄用**  
如果 AWS Glue 發現 Data Catalog 中的資料表不再存在於其原始資料存放區，會在 Data Catalog 中將此資料表標記為已作廢。如果您執行的任務參照了已作廢的資料表，則任務可能會失敗。針對參照已作廢資料表的任務來進行編輯，將這些做為來源和目標的資料表移除。我們建議您刪除不再需要的已作廢資料表。

**連線**  
如果 AWS Glue 需要連線至您的資料存放區，連線的名稱會與資料表相關。

### 檢視與管理資料表詳細資訊
<a name="console-tables-details"></a>

若要檢視現有資料表的詳細資訊，請在清單中選擇資料表名稱，然後選擇 **Action, View details** (動作，檢視詳細資訊)。

資料表的詳細資訊包括資料表的屬性及其結構描述。此檢視會顯示資料表的結構描述，包括欄名稱 (依資料表定義的順序排列)、資料類型和分區金鑰欄位。如果欄為複雜的類型，您可以選擇 **View properties** (檢視屬性) 來顯示該欄位結構的詳細資訊，如下列範例所示：

```
{
"StorageDescriptor": 
    {
      "cols": {
         "FieldSchema": [
           {
             "name": "primary-1",
             "type": "CHAR",
             "comment": ""
           },
           {
             "name": "second ",
             "type": "STRING",
             "comment": ""
           }
         ]
      },
      "location": "s3://aws-logs-111122223333-us-east-1",
      "inputFormat": "",
      "outputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
      "compressed": "false", 
      "numBuckets": "0",
      "SerDeInfo": {
           "name": "",
           "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
           "parameters": {
               "separatorChar": "|"
            }
      },
      "bucketCols": [],
      "sortCols": [],
      "parameters": {},
      "SkewedInfo": {},
      "storedAsSubDirectories": "false"
    },
    "parameters": {
       "classification": "csv"
    }
}
```

如需關於資料表的屬性 (例如 `StorageDescriptor`) 的詳細資訊，請參閱 [StorageDescriptor 結構](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-StorageDescriptor)。

若要變更資料表的結構描述，請選擇 **Edit schema** (編輯結構描述) 來新增和移除欄、變更欄名稱和變更資料類型。

 若要比較資料表的不同版本 (包括其結構描述)，請選擇 **Compare versions** (比較版本) 來檢視資料表兩種結構描述版本的並列比較。如需詳細資訊，請參閱[比較資料表結構描述版本](#console-tables-schema-comparison)。

若要顯示 Amazon S3 分區中所包含的檔案，請選擇 **View partition (檢視分割區)**。對於 Amazon S3 資料表，**Key (金鑰)** 欄會顯示分區金鑰，用來將來源資料存放區中的資料表分區。分割是一種根據索引鍵資料欄的值將資料表分割為相關部分的方法，例如日期、位置或部門。如需關於分區的詳細資訊，請搜尋網際網路，取得「Hive 分區」的相關資訊。

**注意**  
若要取得檢視資料表詳細資訊的逐步指引，請參閱主控台中的 **Explore table** (了解資料表) 教學。

### 比較資料表結構描述版本
<a name="console-tables-schema-comparison"></a>

 當您比較兩個版本的資料表結構定義時，您可以透過展開和折疊巢狀資料列、並排比較兩個版本的結構定義，以及並排檢視資料表屬性，來比較巢狀資料列變更。

 比較版本 

1.  從 AWS Glue 主控台中，依序選擇**資料表**、**動作**和**比較版本**。  
![螢幕擷取畫面會顯示選取後的「動作」按鈕。下拉式功能表會顯示「比較版本」選項。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/catalog-table-compare-versions.png)

1.  選擇版本下拉式選單，以選擇要比較的版本。比較結構描述時，「結構描述」索引標籤會以橙色反白顯示。

1.  當您比較兩個版本之間的資料表時，資料表結構描述會顯示在畫面的左側和右側。這可讓您透過並排比較「資料欄名稱」、「資料類型」、「索引鍵」和「註解」欄位，以視覺化方式判斷變更。發生變更時，彩色圖示會顯示所做變更的類型。
   +  已刪除 – 以紅色圖示顯示，指示資料欄已從舊版資料表結構描述中移除的位置。
   +  已編輯或已移動 – 以藍色圖示顯示，指示資料欄在較新版資料表結構描述中修改或移動的位置。
   +  已新增 – 以綠色圖示顯示，指示資料欄新增至較新版資料表結構描述的位置。
   +  巢狀變更 – 以黃色圖示顯示，指示巢狀資料欄包含變更的位置。選擇要展開的資料欄，並檢視已刪除、已編輯、已移動或已新增的資料欄。  
![螢幕擷取畫面會顯示兩個版本之間的資料表結構描述比較 左側是較舊版本。右側是較新版本。刪除圖示位於從較舊版本移除且不再於較新版本提供的資料欄旁邊。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/catalog-table-version-comparison.png)

1.  使用篩選欄位搜尋列，根據您在此輸入的字元顯示欄位。如果您在任一資料表版本中輸入資料欄名稱，則篩選的欄位會顯示在兩個資料表版本中，以顯示發生變更的位置。

1.  若要比較屬性，請選擇**屬性索引標籤**。

1.  若要停止比較版本，請選擇**停止比較**，以返回資料表清單。

## 使用爬蟲程式更新手動建立的資料目錄資料表
<a name="update-manual-tables"></a>

您可能想要手動建立 AWS Glue Data Catalog 資料表，然後使用AWS Glue爬蟲程式保持更新狀態。按排程執行的爬蟲程式可以新增新的分割區，並更新含有任何結構描述變更的資料表。這也適用於從 Apache Hive 中繼存放區移轉來的資料表。

若要執行此作業，當您定義爬蟲程式時，請指定一或多個現有的 Data Catalog 資料表，而不是指定一或多個資料存放區做為抓取來源。爬蟲程式即會抓取目錄資料表指定的資料存放區。在這種情況下，系統就不會建立任何新的資料表，而會更新您手動建立的資料表。

以下是建議您手動建立目錄資料表，並指定目錄資料表做為爬蟲程式來源的其他原因：
+ 您想選擇目錄資料表名稱，而不倚賴目錄資料表命名演算法。
+ 在檔案格式可能會干擾分割區偵測，但資料來源路徑中誤存該檔案的情況下，您想防止建立新的資料表。

如需詳細資訊，請參閱[步驟 2：選擇資料來源和分類器](define-crawler-choose-data-sources.md)。

## Data Catalog 資料表屬性
<a name="table-properties"></a>

 如 CLI AWS 中已知的資料表屬性或參數，是未經驗證的索引鍵和值字串。您可以在資料表中設定自己的屬性，以支援在 AWS Glue外部使用 Data Catalog。使用 Data Catalog 的其他 服務也可以這樣做。在執行任務或爬蟲程式時 AWS Glue 設定一些資料表屬性。除非另有說明，否則這些屬性僅供內部使用，我們不支援其以當前形式繼續存在，也不支援手動變更這些屬性時的產品行為。

 如需 AWS Glue 爬蟲程式所設定資料表屬性的詳細資訊，請參閱 [爬蟲程式在 Data Catalog 資料表上設定的參數](table-properties-crawler.md)。