

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Delta-Lake-Tabellen von Linux Foundation abfragen
<a name="delta-lake-tables"></a>

Linux Foundation [Delta Lake](https://delta.io/) ist ein Tabellenformat für Big-Data-Analytik. Sie können Amazon Athena verwenden, um direkt in Amazon S3 gespeicherte Delta-Lake-Tabellen zu lesen, ohne Manifest-Dateien generieren oder die `MSCK REPAIR`-Anweisung ausführen zu müssen.

Das Delta-Lake-Format speichert die Mindest- und Höchstwerte pro Spalte jeder Datendatei. Die Athena-Implementierung verwendet diese Informationen, um das Überspringen von Dateien bei Prädikaten zu ermöglichen, um unerwünschte Dateien aus der Berücksichtigung zu entfernen.

## Überlegungen und Einschränkungen
<a name="delta-lake-tables-considerations-and-limitations"></a>

Die Delta-Lake-Unterstützung in Athena unterliegt folgenden Überlegungen und Einschränkungen:
+ **Nur Tabellen mit AWS Glue Katalog** — Die native Delta Lake-Unterstützung wird nur über Tabellen unterstützt, bei denen registriert ist AWS Glue. Wenn Sie über eine Delta-Lake-Tabelle verfügen, die bei einem anderen Metastore registriert ist, können Sie diese trotzdem behalten und als Ihren primären Metastore behandeln. Da Delta Lake-Metadaten im Dateisystem (z. B. in Amazon S3) und nicht im Metastore gespeichert werden, benötigt Athena nur die Location-Eigenschaft in, AWS Glue um aus Ihren Delta Lake-Tabellen zu lesen.
+ **V3 engine only** (Nur V3-Engine) – Delta-Lake-Abfragen werden nur auf der Athena-Engine-Version 3 unterstützt. Sie müssen sicherstellen, dass die von Ihnen erstellte Arbeitsgruppe für die Verwendung der Athena-Engine-Version 3 konfiguriert ist.
+ **No time travel support** (Keine Unterstützung für Zeitreisen) – Anfragen, die die Zeitreisefunktionen von Delta Lake nutzen, werden nicht unterstützt.
+ **Read only** (Schreibgeschützt) – Schreiben von DML-Anweisungen wie `UPDATE`, `INSERT` oder `DELETE` werden nicht unterstützt.
+ **Lake-Formation-Unterstützung** – Die Lake-Formation-Integration ist für Delta-Lake-Tabellen erhältlich, deren Schema mit AWS Glue synchron ist. Weitere Informationen finden Sie unter [Verwenden AWS Lake Formation mit Amazon Athena](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html) und [Einrichten von Berechtigungen für eine Delta Lake-Tabelle](https://docs.aws.amazon.com/lake-formation/latest/dg/set-up-delta-table.html) im *AWS Lake Formation Entwicklerhandbuch*.
+ **Limited DDL support** (Eingeschränkte DDL-Unterstützung) – Die folgenden DDL-Anweisungen werden unterstützt: `CREATE EXTERNAL TABLE`, `SHOW COLUMNS`, `SHOW TBLPROPERTIES`, `SHOW PARTITIONS`, `SHOW CREATE TABLE` und `DESCRIBE`. Informationen zur Verwendung der `CREATE EXTERNAL TABLE`-Anweisung finden Sie im [Erste Schritte mit Delta-Lake-Tabellen](delta-lake-tables-getting-started.md)-Abschnitt.
+ **Überspringen von Amazon-Glacier-Objekten wird nicht unterstützt** – Wenn sich Objekte in der Delta-Lake-Tabelle der Linux Foundation in einer Amazon-Glacier-Speicherklasse befinden, hat das Setzen der Tabelleneigenschaft `read_restored_glacier_objects` auf `false` keine Auswirkung.

  Angenommen, Sie führen den folgenden Befehl aus:

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

  Bei Iceberg- und Delta-Lake-Tabellen erzeugt der Befehl den Fehler Unsupported table property key: read\$1restored\$1glacier\$1objects. Bei Hudi-Tabellen erzeugt der `ALTER TABLE`-Befehl keinen Fehler, aber Amazon-Glacier-Objekte werden immer noch nicht übersprungen. Beim Ausführen von `SELECT`-Abfragen nach dem `ALTER TABLE`-Befehl werden weiterhin alle Objekte zurückgegeben.
+ **Verschlüsselte Tabellen** – Athena unterstützt kein natives Lesen von CSE-KMS-verschlüsselten Delta-Lake-Tabellen. Dazu gehören SELECT-Anweisungen und DDL-Anweisungen.

### Delta Lake-Versionsverwaltung und Athena
<a name="delta-lake-tables-versioning"></a>

Athena verwendet nicht die in der Delta-Lake-Dokumentation aufgeführte [Versionsverwaltung](https://docs.delta.io/latest/releases.html). Um festzustellen, ob Ihre Delta-Lake-Tabellen mit Athena kompatibel sind, berücksichtigen Sie die folgenden beiden Merkmale:
+ **Reader-Version** – Jede Delta-Lake-Tabelle hat eine Reader-Version. Derzeit ist dies eine Zahl zwischen 1 und 3. Abfragen, die eine Tabelle mit einer Reader-Version enthalten, die Athena nicht unterstützt, schlagen fehl.
+ **Tabellenfunktionen** — Jede Delta Lake-Tabelle kann auch eine Reihe von reader/writer Funktionen deklarieren. Da die Unterstützung von Delta Lake durch Athena schreibgeschützt ist, gilt die Kompatibilität der Tabellen-Writer-Features nicht. Abfragen von Tabellen mit nicht unterstützten Tabellen-Reader-Features schlagen jedoch fehl.

Die folgende Tabelle zeigt die Delta Lake Reader-Versionen und Delta Lake Tabellen-Writer-Features, die Athena unterstützt.


****  

| Abfragetyp | Unterstützte Reader-Versionen | Unterstützte Reader-Features | 
| --- | --- | --- | 
| DQL (SELECT-Anweisungen) | <= 3 | [Spaltenzuweisung](https://docs.delta.io/latest/delta-column-mapping.html)[, [timestampNtz](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#timestamp-without-timezone-timestampntz), Löschvektoren](https://docs.delta.io/latest/delta-deletion-vectors.html) | 
| DDL | <= 1 | Nicht zutreffend. Reader-Features können nur für Tabellen mit einer Reader-Version von 2 oder höher deklariert werden. | 
+ Eine Liste der Tabellenfunktionen von Delta Lake finden Sie unter [Gültige Feature-Namen in Tabellenfunktionen](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#valid-feature-names-in-table-features) auf GitHub .com
+ Eine Liste der Delta Lake-Funktionen nach Protokollversion finden Sie unter [Funktionen nach Protokollversion](https://docs.delta.io/latest/versioning.html#features-by-protocol-version) auf GitHub .com.

Informationen zum Erstellen einer Delta Lake-Tabelle in Athena mit einer Reader-Version größer als 1 finden Sie unter [Delta-Lake-Metadaten synchronisieren](delta-lake-tables-syncing-metadata.md).

**Topics**
+ [Überlegungen und Einschränkungen](#delta-lake-tables-considerations-and-limitations)
+ [Unterstützte Spalten-Datentypen](delta-lake-tables-supported-data-types-columns.md)
+ [Erste Schritte mit Delta-Lake-Tabellen](delta-lake-tables-getting-started.md)
+ [Delta-Lake-Tabellen mit SQL abfragen](delta-lake-tables-querying.md)
+ [Delta-Lake-Metadaten synchronisieren](delta-lake-tables-syncing-metadata.md)
+ [Weitere Ressourcen](delta-lake-tables-additional-resources.md)

# Unterstützte Spalten-Datentypen
<a name="delta-lake-tables-supported-data-types-columns"></a>

In diesem Abschnitt werden die unterstützten Datentypen für Spalten ohne Partition und Partitionsspalten beschrieben. 

## Unterstützte nicht partitionierte Spalten-Datentypen
<a name="delta-lake-tables-supported-data-types-non-partition-columns"></a>

Für nicht partitionierte Spalten werden alle von Athena unterstützten Datentypen außer `CHAR` unterstützt (`CHAR` wird im Delta-Lake-Protokoll selbst nicht unterstützt). Die unterstützten Datentypen beinhalten:

```
boolean
tinyint
smallint
integer
bigint
double
float
decimal
varchar
string
binary
date
timestamp
array
map
struct
```

## Unterstützte partitionierte Spalten-Datentypen
<a name="delta-lake-tables-supported-data-types-partition-columns"></a>

Für Partitionsspalten unterstützt Athena Tabellen mit den folgenden Datentypen:

```
boolean
integer
smallint
tinyint
bigint
decimal
float
double
date
timestamp
varchar
```

Weitere Informationen zu den Datentypen in Athena finden Sie unter [Datentypen in Amazon Athena](data-types.md).

# Erste Schritte mit Delta-Lake-Tabellen
<a name="delta-lake-tables-getting-started"></a>

Um abfragbar zu sein, muss Ihre Delta Lake-Tabelle in existieren. AWS Glue Wenn sich Ihre Tabelle in Amazon S3, aber nicht in befindet AWS Glue, führen Sie eine `CREATE EXTERNAL TABLE` Anweisung mit der folgenden Syntax aus. Wenn Ihre Tabelle bereits in existiert AWS Glue (z. B. weil Sie Apache Spark oder eine andere Engine mit verwenden AWS Glue), können Sie diesen Schritt überspringen. Beachten Sie das Fehlen von Spaltendefinitionen, SerDe Bibliotheks- und anderen Tabelleneigenschaften. Im Gegensatz zu herkömmlichen Hive-Tabellen werden Delta Lake-Tabellenmetadaten aus dem Delta Lake-Transaktionslog abgeleitet und direkt mit diesem synchronisiert. AWS Glue

```
CREATE EXTERNAL TABLE
  [db_name.]table_name
  LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
  TBLPROPERTIES ('table_type' = 'DELTA')
```

**Anmerkung**  
Diese Aussage ist nicht mit S3-Buckets kompatibel, für die Anforderer-Zahlungen aktiviert sind. Wenn Sie eine Delta-Lake-Tabelle für einen S3-Bucket erstellen möchten, bei dem Anforderer-Zahlungen aktiviert sind, folgen Sie den Anweisungen und der DDL-Anweisung unter [Delta-Lake-Metadaten synchronisieren](delta-lake-tables-syncing-metadata.md).
Für Delta-Lake-Tabellen sind `CREATE TABLE`-Aussagen, die mehr als die Eigenschaft `LOCATION` und `table_type` enthalten, nicht zulässig.

# Delta-Lake-Tabellen mit SQL abfragen
<a name="delta-lake-tables-querying"></a>

Verwenden Sie die `SELECT`-Standard-SQL-Syntax, um eine Delta-Lake-Tabelle abzufragen:

```
[ WITH with_query [, ...] ]SELECT [ ALL | DISTINCT ] select_expression [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
[ HAVING condition ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ]
[ OFFSET count [ ROW | ROWS ] ]
[ LIMIT [ count | ALL ] ]
```

Weitere Informationen zur `SELECT`-Syntax finden Sie unter [SELECT](select.md) in der Athena-Dokumentation.

Das Delta-Lake-Format speichert die Mindest- und Höchstwerte pro Spalte jeder Datendatei. Athena verwendet diese Informationen, um das Überspringen von Dateien bei Prädikaten zu ermöglichen, um unnötige Dateien aus der Berücksichtigung zu entfernen.

# Delta-Lake-Metadaten synchronisieren
<a name="delta-lake-tables-syncing-metadata"></a>

Athena synchronisiert Tabellenmetadaten, einschließlich Schema, Partitionsspalten und Tabelleneigenschaften, AWS Glue wenn Sie Athena zum Erstellen Ihrer Delta Lake-Tabelle verwenden. Im Laufe der Zeit können diese Metadaten deren Synchronisierung mit den zugrunde liegenden Tabellenmetadaten im Transaktionsprotokoll verlieren. Um Ihre Tabelle auf dem neuesten Stand zu halten, können Sie eine der folgenden Optionen auswählen:
+ Verwenden Sie den AWS Glue Crawler für Delta Lake-Tabellen. Weitere Informationen finden Sie unter [Einführung der systemeigenen Unterstützung für Delta Lake-Tabellen mit AWS Glue Crawlern](https://aws.amazon.com/blogs/big-data/introducing-native-delta-lake-table-support-with-aws-glue-crawlers/) im *AWS Big Data-Blog* und [Planung eines AWS Glue Crawlers im AWS Glue Entwicklerhandbuch](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html).
+ Die Tabelle fallen lassen und in Athena neu erstellen.
+ Verwenden Sie das SDK, die CLI oder die AWS Glue Konsole, um das Schema in manuell zu aktualisieren AWS Glue.

Beachten Sie, dass für die folgenden Funktionen Ihr AWS Glue Schema immer dasselbe Schema wie das Transaktionslog haben muss:
+ Lake Formation
+ Ansichten
+ Zeilen- und Spaltenfilter

Wenn Ihr Workflow keine dieser Funktionen benötigt und Sie es vorziehen, diese Kompatibilität nicht aufrechtzuerhalten, können Sie `CREATE TABLE` DDL in Athena verwenden und dann den Amazon S3 S3-Pfad als SerDe Parameter hinzufügen. AWS Glue

## Erstellen Sie mit Athena und AWS Glue Konsolen eine Delta Lake-Tabelle
<a name="delta-lake-tables-syncing-metadata-console"></a>

Sie können das folgende Verfahren verwenden, um eine Delta Lake-Tabelle mit Athena und AWS Glue Konsolen zu erstellen.

**So erstellen Sie eine Delta Lake-Tabelle mit Athena und Konsolen AWS Glue**

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Verwenden Sie im Athena-Abfrage-Editor die folgende DDL, um Ihre Delta-Lake-Tabelle zu erstellen. Beachten Sie, dass bei Verwendung dieser Methode der Wert für `TBLPROPERTIES` `'spark.sql.sources.provider' = 'delta'` sein muss und nicht `'table_type' = 'delta'`.

   Beachten Sie, dass dasselbe Schema (mit einer einzigen Spalte namens `col` vom Typ `array<string>`) eingefügt wird, wenn Sie Apache Spark (Athena für Apache Spark) oder die meisten anderen Engines verwenden, um Ihre Tabelle zu erstellen.

   ```
   CREATE EXTERNAL TABLE
      [db_name.]table_name(col array<string>)
      LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
      TBLPROPERTIES ('spark.sql.sources.provider' = 'delta')
   ```

1. Öffnen Sie die AWS Glue Konsole unter. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Wählen Sie im Navigationsbereich unter **Data Catalog** die Option **Tabellen**.

1. Wählen Sie in der Tabellenliste den Link für Ihre Tabelle aus.

1. Wählen Sie auf der Seite für die Tabelle **Aktionen** und **Tabelle bearbeiten** aus.

1. Fügen Sie im Abschnitt **Serde-Parameter** den Schlüssel **path** mit dem Wert **s3://amzn-s3-demo-bucket/*your-folder*/** hinzu.

1. Wählen Sie **Speichern**.

## Erstellen Sie eine Delta Lake-Tabelle mit dem AWS CLI
<a name="delta-lake-tables-syncing-metadata-cli"></a>

Um eine Delta Lake-Tabelle mit dem zu erstellen AWS CLI, geben Sie einen Befehl wie den folgenden ein.

```
aws glue create-table --database-name dbname \
    --table-input '{"Name" : "tablename", "StorageDescriptor":{
            "Columns" : [
                {
                    "Name": "col",
                    "Type": "array<string>"
                }
            ],
            "Location" : "s3://amzn-s3-demo-bucket/<prefix>/",
            "SerdeInfo" : {
                "Parameters" : {
                    "serialization.format" : "1",
                    "path" : "s3://amzn-s3-demo-bucket/<prefix>/"
                }
            }
        },
        "PartitionKeys": [],
        "TableType": "EXTERNAL_TABLE",
        "Parameters": {
            "EXTERNAL": "TRUE",
            "spark.sql.sources.provider": "delta"
        }
    }'
```

# Weitere Ressourcen
<a name="delta-lake-tables-additional-resources"></a>

*Eine Erläuterung der Verwendung von Delta Lake-Tabellen mit AWS Glue und deren Abfrage mit Athena finden Sie unter [Handle UPSERT data operations using open-source Delta Lake und AWS Glue im AWS Big](https://aws.amazon.com/blogs/big-data/handle-upsert-data-operations-using-open-source-delta-lake-and-aws-glue/) Data Blog.*