

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

# 查詢 Linux Foundation Delta Lake 資料表
<a name="delta-lake-tables"></a>

Linux Foundation [Delta Lake](https://delta.io/) 是用於大數據分析的資料表格式。您可以使用 Amazon Athena 直接讀取存放在 Amazon S3 中的 Delta Lake 資料表，而無需產生清單檔案或執行 `MSCK REPAIR` 陳述式。

Delta Lake 格式會儲存每個資料檔案中每個資料欄的最小值和最大值。Athena 實作會利用這項資訊來啟用述詞上的檔案略過功能，從而排除不需要的檔案。

## 考量和限制
<a name="delta-lake-tables-considerations-and-limitations"></a>

Athena 中的 Delta Lake 支援具有下列考量事項和限制：
+ **僅限目錄的資料表 AWS Glue ** – 僅透過向 註冊的資料表支援原生 Delta Lake 支援 AWS Glue。如果有已在其他中繼存放區註冊的 Delta Lake 資料表，則您仍然可以保留並將其視為您的主要中繼存放區。由於 Delta Lake 中繼資料存放在檔案系統 （例如，在 Amazon S3 中） 而非中繼存放區中，Athena 只需要 中的位置屬性， AWS Glue 即可從 Delta Lake 資料表讀取。
+ **V3 engine only** (僅限 V3 引擎) – 只有 Athena 引擎版本 3 才支援 Delta Lake 查詢。您必須確定您建立的工作群組設定為使用 Athena 引擎版本 3。
+ **No time travel support** (不支援時間歷程) – 不支援使用 Delta Lake 時間歷程功能的查詢。
+ **Read only** (唯讀) – 不支援寫入 `UPDATE`、`INSERT` 或 `DELETE` 等 DML 陳述式。
+ **Lake Formation 支援** – Lake Formation 可用於結構描述與 AWS Glue同步的 Delta Lake 資料表。如需詳細資訊，請參閱《 *AWS Lake Formation 開發人員指南*》中的[使用 AWS Lake Formation 搭配 Amazon Athena](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html) 和[設定 Delta Lake 資料表的許可](https://docs.aws.amazon.com/lake-formation/latest/dg/set-up-delta-table.html)。
+ **Limited DDL support** (有限的 DDL 支援) – 支援下列 DDL 陳述式：`CREATE EXTERNAL TABLE`、`SHOW COLUMNS`、`SHOW TBLPROPERTIES`、`SHOW PARTITIONS`、`SHOW CREATE TABLE` 和 `DESCRIBE`。如需有關使用 `CREATE EXTERNAL TABLE` 陳述式的詳細資訊，請參閱 [Delta Lake 資料表入門](delta-lake-tables-getting-started.md) 一節。
+ **略過不支援的 Amazon Glacier 物件** – 如果 Linux Foundation Delta Lake 資料表中的物件位於 Amazon Glacier 儲存類別中，則將 `read_restored_glacier_objects` 資料表屬性設定為 `false` 是無效的。

  例如，假設您發出下列命令：

  ```
  ALTER TABLE {{table_name}} SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')
  ```

  對於 Iceberg 和 Delta Lake 資料表，此命令會產生錯誤不支援的資料表屬性索引鍵：read\_restored\_glacier\_objects。對於 Hudi 資料表，`ALTER TABLE` 命令不會產生錯誤，但是 Amazon Glacier 物件仍不會略過。在 `ALTER TABLE` 命令繼續傳回所有物件之後執行 `SELECT` 查詢。
+ **加密資料表** – Athena 不支援原生讀取 CSE-KMS 加密的 Delta Lake 資料表。這包括 SELECT 陳述式和 DDL 陳述式。

### Delta Lake 版本控制和 Athena
<a name="delta-lake-tables-versioning"></a>

Athena 不使用 Delta Lake 文件中列出的[版本控制](https://docs.delta.io/latest/releases.html)。若要判斷您的 Delta Lake 資料表是否會與 Athena 相容，請考慮下列兩個特性：
+ **讀取器版本 ** – 每個 Delta Lake 資料表都有讀取器版本。目前，這是介於 1 到 3 之間的數字。如果查詢包含具有 Athena 不支援之讀取器版本的資料表，則將會失敗。
+ **資料表功能** – 每個 Delta Lake 資料表也可以宣告一組讀取器/寫入器功能。由於 Athena 對 Delta Lake 的支援是唯讀，因此資料表寫入器功能的相容性不適用。不過，對具有不支援的資料表讀取器功能的資料表進行查詢，也將會失敗。

下列資料表會顯示 Athena 支援的 Delta Lake 讀取器版本和 Delta Lake 資料表讀取器功能。


****  

| 查詢類型 | 支援的讀取器版本 | 支援的讀取器功能 | 
| --- | --- | --- | 
| DQL (SELECT statements) | <= 3 | [資料欄映射](https://docs.delta.io/latest/delta-column-mapping.html)、[timestampNtz](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#timestamp-without-timezone-timestampntz)、[刪除向量](https://docs.delta.io/latest/delta-deletion-vectors.html) | 
| DDL | <= 1 | 不適用。讀取器功能只能在讀取器版本為 2 或更高版本時宣告。 | 
+ 如需有關 Delta Lake 資料表的功能清單，請參閱 GitHub.com 上[資料表功能中的有效功能名稱](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#valid-feature-names-in-table-features)
+ 如需依通訊協定版本列出的 Delta Lake 功能清單，請參閱 GitHub.com 上的[依通訊協定版本列出的功能](https://docs.delta.io/latest/versioning.html#features-by-protocol-version)。

若要在 Athena 中建立讀取器版本大於 1 的 Delta Lake 資料表，請參閱 [同步處理 Delta Lake 中繼資料](delta-lake-tables-syncing-metadata.md)。

**Topics**
+ [考量和限制](#delta-lake-tables-considerations-and-limitations)
+ [支援的資料欄資料類型](delta-lake-tables-supported-data-types-columns.md)
+ [Delta Lake 資料表入門](delta-lake-tables-getting-started.md)
+ [使用 SQL 查詢 Delta Lake 資料表](delta-lake-tables-querying.md)
+ [同步處理 Delta Lake 中繼資料](delta-lake-tables-syncing-metadata.md)
+ [其他資源](delta-lake-tables-additional-resources.md)