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/
. Untuk melihat lokasi hasil kueri yang ditentukan untuk grup kerja,lihat detail grup kerja.<query-id>
/
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_location
properti 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_location
sintaks 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
JikaCTAS
atauINSERT INTO
pernyataan 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
GZIP
kompresi 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 ZLIB
ZSTD
, 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.