

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pertimbangan dan batasan untuk kueri CTAS
<a name="ctas-considerations-limitations"></a>

Bagian berikut menjelaskan pertimbangan dan batasan yang perlu diingat saat Anda menggunakan kueri `CREATE TABLE AS SELECT` (CTAS) di Athena.

## Pelajari sintaks kueri CTAS
<a name="ctas-considerations-limitations-query-syntax"></a>

Sintaks permintaan CTAS berbeda dari sintaks`CREATE [EXTERNAL] TABLE`digunakan untuk membuat tabel. Lihat [CREATE TABLE AS](create-table-as.md).

## Perbedaan antara tampilan dan kueri CTAS
<a name="ctas-considerations-limitations-queries-vs-views"></a>

Kueri CTAS menulis data baru ke lokasi tertentu di Amazon S3. Tampilan tidak menulis data apa pun. 

## Tentukan lokasi untuk hasil kueri CTAS Anda
<a name="ctas-considerations-limitations-location-of-query-results"></a>

Jika grup kerja Anda[Mengabaikan pengaturan sisi klien](workgroups-settings-override.md)untuk lokasi hasil kueri, Athena membuat tabel Anda di lokasi`s3://amzn-s3-demo-bucket/tables/<query-id>/`. Untuk melihat lokasi hasil kueri yang ditentukan untuk grup kerja,[lihat detail grup kerja](viewing-details-workgroups.md).

Jika grup kerja Anda tidak menimpa lokasi hasil kueri, Anda dapat menggunakan sintaks`WITH (external_location ='s3://amzn-s3-demo-bucket/')`dalam permintaan CTAS Anda untuk menentukan tempat hasil kueri CTAS Anda disimpan. 

**catatan**  
Parameter`external_location`properti harus menentukan lokasi yang kosong. Permintaan CTAS memeriksa bahwa lokasi jalur (awalan) dalam bucket kosong dan tidak pernah menimpa data jika lokasi sudah memiliki data di dalamnya. Untuk menggunakan lokasi yang sama lagi, hapus data di lokasi key prefix dalam bucket.

Jika Anda menghilangkan`external_location`sintaks dan tidak menggunakan pengaturan grup kerja, Athena menggunakan[Pengaturan sisi klien](query-results-specify-location-console.md)untuk lokasi hasil kueri dan membuat tabel Anda di lokasi`s3://amzn-s3-demo-bucket/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/`. 

## Temukan file yatim piatu
<a name="ctas-considerations-limitations-locating-orphaned-files"></a>

Jika `INSERT INTO` pernyataan `CTAS` atau gagal, ada kemungkinan file data yatim piatu ditinggalkan di lokasi data target untuk kueri yang gagal atau dibatalkan. Karena Athena dalam beberapa kasus tidak menghapus data dari keranjang target untuk kueri Anda, sebagian data mungkin disertakan dalam kueri berikutnya. 

Untuk menemukan file yatim piatu untuk pemeriksaan atau penghapusan, Anda dapat menggunakan file manifest data yang disediakan Athena untuk melacak daftar file yang akan ditulis. Dalam beberapa kasus yang jarang terjadi di mana kueri Athena tiba-tiba gagal, file manifes mungkin tidak ada. Anda dapat secara manual memeriksa lokasi target S3 untuk menemukan file yatim piatu. Untuk informasi selengkapnya, lihat [Mengidentifikasi file keluaran kueri](querying-finding-output-files.md#querying-identifying-output-files) dan [DataManifestLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecutionStatistics.html#athena-Type-QueryExecutionStatistics-DataManifestLocation). 

Kami sangat menyarankan menggunakan Apache Iceberg untuk mencapai transaksi atom tabel. Untuk informasi selengkapnya, lihat [Tabel Query Apache Iceberg](querying-iceberg.md).

## Ingat bahwa klausa ORDER BY diabaikan
<a name="ctas-considerations-limitations-order-by-ignored"></a>

Dalam kueri CTAS, Athena `ORDER BY` mengabaikan klausa di `SELECT` bagian kueri.

Menurut spesifikasi SQL (ISO 9075 Bagian 2), urutan baris tabel yang ditentukan oleh ekspresi kueri dijamin hanya untuk ekspresi kueri yang segera berisi klausa. `ORDER BY` Tabel dalam SQL dalam hal apa pun secara inheren tidak berurutan, dan mengimplementasikan klausa sub kueri `ORDER BY` in akan menyebabkan kueri berkinerja buruk dan tidak menghasilkan keluaran yang diurutkan. Dengan demikian, dalam kueri CTAS Athena, tidak ada jaminan bahwa pesanan yang ditentukan oleh `ORDER BY` klausa akan dipertahankan ketika data ditulis.

## Pilih format untuk menyimpan hasil kueri Anda
<a name="ctas-considerations-limitations-formats-for-query-results"></a>

Anda dapat menyimpan hasil CTAS di`PARQUET`,`ORC`,`AVRO`,`JSON`, dan`TEXTFILE`. Pembatas multi-karakter tidak didukung untuk CTAS`TEXTFILE`format. Jika Anda tidak menentukan format penyimpanan data, hasil kueri CTAS disimpan di Parket secara default. 

Kueri CTAS tidak memerlukan menentukan a SerDe untuk menafsirkan transformasi format. Lihat [Example: Writing query results to a different format](ctas-examples.md#ctas-example-format).

## Pertimbangkan format kompresi
<a name="ctas-considerations-limitations-compression-formats"></a>

`GZIP`kompresi digunakan untuk hasil query CTAS dalam format JSON dan TEXTFILE. Untuk Parket, Anda dapat menggunakan `GZIP` atau`SNAPPY`, dan defaultnya adalah`GZIP`. Untuk ORC, Anda dapat menggunakan`LZ4`,,, atau `SNAPPY` `ZLIB``ZSTD`, dan defaultnya adalah`ZLIB`. Untuk contoh CTAS yang menentukan kompresi, lihat[Example: Specifying data storage and compression formats](ctas-examples.md#ctas-example-compression). Untuk informasi lebih lanjut tentang kompresi di Athena, lihat. [Gunakan kompresi di Athena](compression-formats.md)

## Partisi dan ember hasil Anda
<a name="ctas-considerations-limitations-partition-and-bucket-limits"></a>

Anda dapat partisi dan bucket data hasil kueri CTAS. Untuk menentukan properti dari tabel tujuan, sertakan predikat partisi dan bucketing di akhir klausa. `WITH` Untuk informasi selengkapnya, lihat [Gunakan partisi dan bucketing](ctas-partitioning-and-bucketing.md) dan [Example: Creating bucketed and partitioned tables](ctas-examples.md#ctas-example-bucketed).

Saat Anda menggunakan CTAS untuk membuat tabel yang dipartisi, Athena memiliki batas tulis 100 partisi. Untuk informasi tentang bekerja di sekitar 100 partisi pembatasan, lihat[Gunakan CTAS dan INSERT INTO untuk bekerja di sekitar batas partisi 100](ctas-insert-into.md).

## Enkripsi hasil Anda
<a name="ctas-considerations-limitations-encryption"></a>

Anda dapat mengenkripsi hasil kueri CTAS di Amazon S3, mirip dengan cara Anda mengenkripsi hasil kueri lainnya di Athena. Untuk informasi selengkapnya, lihat [Enkripsi hasil kueri Athena yang disimpan di Amazon S3](encrypting-query-results-stored-in-s3.md).

## Pengaturan pemilik bucket yang diharapkan tidak berlaku untuk CTAS
<a name="ctas-considerations-limitations-expected-bucket-owner"></a>

Untuk pernyataan CTAS, setelan pemilik bucket yang diharapkan tidak berlaku untuk lokasi tabel tujuan di Amazon S3. Setelan pemilik bucket yang diharapkan hanya berlaku untuk lokasi keluaran Amazon S3 yang Anda tentukan untuk hasil kueri Athena. Untuk informasi selengkapnya, lihat [Tentukan lokasi hasil kueri menggunakan konsol Athena](query-results-specify-location-console.md).

## Tipe data kolom dipertahankan
<a name="ctas-considerations-limitations-data-types"></a>

jenis data kolom untuk kueri CTAS adalah sama seperti yang ditentukan untuk kueri asli.