

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.

# Überlegungen und Einschränkungen für CTAS-Abfragen
<a name="ctas-considerations-limitations"></a>

In den folgenden Abschnitten werden Überlegungen und Einschränkungen beschrieben, die Sie bei der Verwendung von `CREATE TABLE AS SELECT` (CTAS)-Abfragen in Athena berücksichtigen sollten.

## Lernen Sie die CTAS-Abfragesyntax kennen
<a name="ctas-considerations-limitations-query-syntax"></a>

Die CTAS-Abfragesyntax unterscheidet sich von der Syntax `CREATE [EXTERNAL] TABLE` für das Erstellen von Tabellen. Siehe [CREATE TABLE AS](create-table-as.md).

## Der Unterschied zwischen Ansichten und CTAS-Abfragen
<a name="ctas-considerations-limitations-queries-vs-views"></a>

CTAS-Abfragen schreiben neue Daten in einen bestimmten Speicherort in Amazon S3. Ansichten schreiben keine Daten. 

## Einen Speicherort für Ihre CTAS-Abfrageergebnisse angeben
<a name="ctas-considerations-limitations-location-of-query-results"></a>

Wenn Ihre Arbeitsgruppe [die clientseitige Einstellung überschreibt](workgroups-settings-override.md), die für den Speicherort der Abfrageergebnisse gilt, erstellt Athena die Tabelle am Speicherort `s3://amzn-s3-demo-bucket/tables/<query-id>/`. Den für die Arbeitsgruppe angegebenen Speicherort für Abfrageergebnisse können Sie in den [Arbeitsgruppendetails](viewing-details-workgroups.md) anzeigen.

Wenn Ihre Arbeitsgruppe den Speicherort für Abfrageergebnisse nicht überschreibt, können Sie die Syntax `WITH (external_location ='s3://amzn-s3-demo-bucket/')` in der CTAS-Abfrage verwenden, um den Speicherort für CTAS-Abfrageergebnisse anzugeben. 

**Anmerkung**  
Die Eigenschaft `external_location` muss einen Speicherort angeben, der leer ist. Eine CTAS-Abfrage überprüft, ob der Pfadspeicherort (Präfix) im Bucket leer ist und überschreibt niemals die Daten, wenn der Speicherort bereits Daten enthält. Um denselben Speicherort erneut zu verwenden, löschen Sie die Daten im Schlüsselpräfixspeicherort im Bucket.

Wenn Sie die Syntax `external_location` auslassen und die Arbeitsgruppeneinstellung nicht verwenden, verwendet Athena die [clientseitige Einstellung](query-results-specify-location-console.md) für den Abfrageergebnisspeicherort und erstellt die Tabelle am Speicherort `s3://amzn-s3-demo-bucket/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/`. 

## Suchen verwaister Dateien
<a name="ctas-considerations-limitations-locating-orphaned-files"></a>

Wenn eine `CTAS`- oder `INSERT INTO`-Anweisung fehlschlägt, ist es möglich, dass verwaiste Datendateien für fehlgeschlagene oder abgebrochene Abfragen am Zieldatenspeicherort verbleiben. Da Athena in einigen Fällen keine Daten aus dem Ziel-Bucket für Ihre Abfrage löscht, können die Teildaten möglicherweise in nachfolgenden Abfragen enthalten sein. 

Zur Suche nach verwaisten Dateien zwecks Überprüfung oder Löschung können Sie die Daten-Manifest-Datei verwenden, die Athena zur Verfügung stellt, um die Liste der zu schreibenden Dateien zu verfolgen. In einigen seltenen Fällen, in denen eine Athena-Abfrage plötzlich fehlschlug, ist die Manifestdatei möglicherweise nicht vorhanden. Sie können den Ziel-S3-Speicherort manuell überprüfen, um die verwaisten Dateien zu finden. Weitere Informationen finden Sie unter [Identifizieren von Abfrageausgabedateien](querying-finding-output-files.md#querying-identifying-output-files) und [DataManifestLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecutionStatistics.html#athena-Type-QueryExecutionStatistics-DataManifestLocation). 

Wir empfehlen dringend, Apache Iceberg zu verwenden, um atomare Transaktionen von Tabellen durchzuführen. Weitere Informationen finden Sie unter [Apache-Iceberg-Tabellen abfragen](querying-iceberg.md).

## Beachten Sie, dass ORDER BY-Klauseln ignoriert werden
<a name="ctas-considerations-limitations-order-by-ignored"></a>

In einer CTAS-Abfrage ignoriert Athena `ORDER BY`-Klauseln im `SELECT`-Teil der Abfrage.

Gemäß der SQL-Spezifikation (ISO 9075 Teil 2) ist die Reihenfolge der Zeilen einer durch einen Abfrageausdruck angegebenen Tabelle nur für den Abfrageausdruck garantiert, der die `ORDER BY`-Klausel unmittelbar enthält. Tabellen in SQL sind ohnehin von Natur aus ungeordnet, und die Implementierung der `ORDER BY` in der Unterabfrage-Klauseln würde sowohl zu einer schlechten Leistung der Abfrage als auch zu keiner geordneten Ausgabe führen. Daher gibt es bei Athena-CTAS-Abfragen keine Garantie dafür, dass die in der `ORDER BY`-Klausel angegebene Reihenfolge beim Schreiben der Daten beibehalten wird.

## Ein Format zum Speichern Ihrer Abfrageergebnisse auswählen
<a name="ctas-considerations-limitations-formats-for-query-results"></a>

Sie können CTAS-Ergebnisse in `PARQUET`, `ORC`, `AVRO`, `JSON` und `TEXTFILE` speichern. Mehrzeichen-Trennzeichen werden für das CTAS-`TEXTFILE`-Format nicht unterstützt. Wenn Sie kein Datenspeicherformat angeben, werden die CTAS-Abfrageergebnisse standardmäßig in Parquet gespeichert. 

Bei CTAS-Abfragen ist die Angabe von a nicht erforderlich SerDe , um Formattransformationen zu interpretieren. Siehe [Example: Writing query results to a different format](ctas-examples.md#ctas-example-format).

## Komprimierungsformate berücksichtigen
<a name="ctas-considerations-limitations-compression-formats"></a>

`GZIP`-Komprimierung wird für CTAS-Abfrageergebnisse in JSON- und TEXTFILE-Formaten verwendet. Für Parquet können Sie `GZIP` oder `SNAPPY` verwenden, der Standardwert ist `GZIP`. Für ORC können Sie `LZ4`, `SNAPPY`, `ZLIB`oder `ZSTD` verwenden, der Standardwert ist `ZLIB`. Beispiele für CTAS, die die Komprimierung angeben, finden Sie unter [Example: Specifying data storage and compression formats](ctas-examples.md#ctas-example-compression). Weitere Informationen zur Komprimierung in Athena finden Sie unter [Komprimierung in Athena verwenden](compression-formats.md).

## Partitionieren und gruppieren Sie Ihre Ergebnisse
<a name="ctas-considerations-limitations-partition-and-bucket-limits"></a>

Sie können die Ergebnisdaten einer CTAS-Abfrage partitionieren und in Buckets speichern. Um Eigenschaften der Zieltabelle anzugeben, fügen Sie am Ende der `WITH`-Klausel Partitionierungs- und Bucketing-Prädikate ein. Weitere Informationen erhalten Sie unter [Partitionierung und Bucketing verwenden](ctas-partitioning-and-bucketing.md) und [Example: Creating bucketed and partitioned tables](ctas-examples.md#ctas-example-bucketed).

Wenn Sie CTAS verwenden, um eine partitionierte Tabelle zu erstellen, hat Athena ein Schreiblimit von 100 Partitionen. Hinweise zum Umgehen der Begrenzung auf 100 Partitionen finden Sie unter [Verwenden von CTAS und INSERT INTO zum Umgehen des Limits von 100 Partitionen](ctas-insert-into.md).

## Ihre Ergebnisse verschlüsseln
<a name="ctas-considerations-limitations-encryption"></a>

Sie können CTAS-Abfrageergebnisse in Amazon S3 verschlüsseln, so wie Sie auch andere Abfrageergebnisse in Athena verschlüsseln. Weitere Informationen finden Sie unter [Verschlüsseln Sie die in Amazon S3 gespeicherten Athena-Abfrageergebnisse](encrypting-query-results-stored-in-s3.md).

## Die erwartete Bucket-Eigentümereinstellung gilt nicht für CTAS
<a name="ctas-considerations-limitations-expected-bucket-owner"></a>

Für CTAS-Anweisungen gilt die erwartete Bucket-Eigentümereinstellung nicht für den Speicherort der Zieltabelle in Amazon S3. Die erwartete Bucket-Eigentümereinstellung gilt nur für den Amazon-S3-Ausgabespeicherort, den Sie für Athena-Abfrageergebnisse angeben. Weitere Informationen finden Sie unter [Angeben eines Speicherorts des Abfrageergebnisses mithilfe der Athena-Konsole](query-results-specify-location-console.md).

## Spaltendatentypen werden beibehalten
<a name="ctas-considerations-limitations-data-types"></a>

Spaltendatentypen für eine CTAS-Abfrage sind dieselben wie für die ursprüngliche Abfrage angegeben.