Pertimbangan dan batasan untuk pertanyaan CTAS - Amazon Athena

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

Pertimbangan dan batasan untuk pertanyaan CTAS

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

Pelajari sintaks CTAS kueri

Sintaks CTAS query berbeda dari sintaks yang CREATE [EXTERNAL] TABLE digunakan untuk membuat tabel. Lihat CREATE TABLE AS.

Perbedaan antara tampilan dan CTAS kueri

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

Tentukan lokasi untuk hasil CTAS kueri

Jika grup kerja AndaMengabaikan pengaturan sisi klienuntuk lokasi hasil kueri, Athena membuat tabel Anda di lokasis3://amzn-s3-demo-bucket/tables/<query-id>/. Untuk melihat lokasi hasil kueri yang ditentukan untuk grup kerja,lihat detail grup kerja.

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

catatan

Parameterexternal_locationproperti harus menentukan lokasi yang kosong. CTASKueri memeriksa apakah lokasi jalur (awalan) di 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 menghilangkanexternal_locationsintaks dan tidak menggunakan pengaturan grup kerja, Athena menggunakanPengaturan sisi klienuntuk lokasi hasil kueri dan membuat tabel Anda di lokasis3://amzn-s3-demo-bucket/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/.

Temukan file yatim piatu

JikaCTASatauINSERT INTOpernyataan gagal, ada kemungkinan bahwa data yatim yang tersisa di lokasi data. Karena Athena dalam beberapa kasus tidak menghapus data atau sebagian data dari bucket Anda, Anda mungkin dapat membaca sebagian data ini di 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. Untuk informasi selengkapnya, silakan lihat Identifikasi file keluaran kueri dan DataManifestLocation.

Ingatlah bahwa klausa ORDER BY diabaikan

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

Menurut SQL spesifikasi (ISO9075 Bagian 2), urutan baris tabel yang ditentukan oleh ekspresi kueri dijamin hanya untuk ekspresi kueri yang segera berisi ORDER BY klausa. Tabel dalam SQL 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 CTAS pertanyaan Athena, tidak ada jaminan bahwa pesanan yang ditentukan oleh ORDER BY klausa akan dipertahankan ketika data ditulis.

Pilih format untuk menyimpan hasil kueri

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

CTASquery tidak memerlukan menentukan SerDe untuk menafsirkan transformasi format. Lihat Example: Writing query results to a different format.

Pertimbangkan format kompresi

GZIPkompresi digunakan untuk hasil CTAS query dalam JSON dan TEXTFILE format. Untuk Parket, Anda dapat menggunakan GZIP atauSNAPPY, dan defaultnya adalahGZIP. UntukORC, Anda dapat menggunakanLZ4,,SNAPPY, atau ZLIBZSTD, dan defaultnya adalahZLIB. Untuk CTAS contoh yang menentukan kompresi, lihatExample: Specifying data storage and compression formats. Untuk informasi lebih lanjut tentang kompresi di Athena, lihat. Gunakan kompresi di Athena

Partisi dan ember hasil Anda

Anda dapat mempartisi dan meng-bucket data hasil CTAS kueri. Untuk menentukan properti dari tabel tujuan, sertakan predikat partisi dan bucketing di akhir klausa. WITH Untuk informasi selengkapnya, silakan lihat Gunakan partisi dan bucketing dan Example: Creating bucketed and partitioned tables.

Bila Anda gunakan CTAS untuk membuat tabel dipartisi, Athena memiliki batas tulis 100 partisi. Untuk informasi tentang bekerja di sekitar 100 partisi pembatasan, lihatGunakan CTAS dan INSERT INTO untuk bekerja di sekitar batas partisi 100.

Enkripsi hasil Anda

Anda dapat mengenkripsi hasil CTAS kueri 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.

Pengaturan pemilik bucket yang diharapkan tidak berlaku untuk CTAS

Untuk CTAS pernyataan, 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.

Tipe data kolom dipertahankan

Tipe data kolom untuk CTAS kueri sama dengan yang ditentukan untuk kueri asli.