CREATE TABLE AS - Amazon Athena

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

CREATE TABLE AS

Menciptakan tabel baru diisi dengan hasilSELECTkueri. Untuk membuat tabel kosong, gunakanCREATE TABLE. CREATE TABLE ASmenggabungkan pernyataan CREATE TABLE DDL dengan pernyataan SELECT DHTML dan oleh karena itu secara teknis berisi DDL dan DML.2. Perhatikan bahwa meskipun CREATE TABLE AS dikelompokkan di sini dengan pernyataan DDL lainnya, kueri CTAS di Athena diperlakukan sebagai DMLuntuk tujuan Service Quotas. Untuk informasi tentang Service Quotas di Athena, lihat. Service Quotas

catatan

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 Menentukan lokasi hasil kueri menggunakan konsol Athena.

Untuk informasi tambahan tentang hal CREATE TABLE AS itu di luar cakupan topik referensi ini, lihatMembuat tabel dari hasil query (CTAS).

Sinopsis

CREATE TABLE table_name [ WITH ( property_name = expression [, ...] ) ] AS query [ WITH [ NO ] DATA ]

Di mana:

Untuk (property_name = ekspresi [,...])

Daftar properti tabel CTAS opsional, beberapa di antaranya khusus untuk format penyimpanan data. Lihat Properti tabel CTAS.

kueri

ASELECTquery yang digunakan untuk membuat tabel baru.

penting

Jika Anda berencana untuk membuat kueri dengan partisi, menentukan nama kolom dipartisi terakhir dalam daftar kolom diSELECT.

[DENGAN [TIDAK] DATA]

JikaWITH NO DATAdigunakan, tabel kosong baru dengan skema yang sama seperti tabel asli dibuat.

catatan

Untuk menyertakan header kolom dalam output hasil kueri, Anda dapat menggunakan SELECT kueri sederhana alih-alih kueri CTAS. Anda dapat mengambil hasil dari lokasi hasil kueri atau mengunduh hasilnya secara langsung menggunakan konsol Athena. Untuk informasi selengkapnya, lihat Bekerja dengan hasil kueri, kueri terbaru, dan file keluaran.

Properti tabel CTAS

Setiap tabel CTAS di Athena memiliki daftar opsional CTAS properti tabel yang Anda tentukan menggunakanWITH (property_name = expression [, ...] ). Untuk informasi tentang menggunakan prosedur ini, lihat Contoh kueri CTAS.

WITH (property_name = expression [, ...], )
table_type = ['HIVE', 'ICEBERG']

Tidak wajib. Nilai default-nya HIVE. Menentukan jenis tabel tabel yang dihasilkan

Contoh:

WITH (table_type ='ICEBERG')
external_location = [location]
catatan

Karena tabel Iceberg tidak eksternal, properti ini tidak berlaku untuk tabel Iceberg. Untuk menentukan lokasi root dari tabel Iceberg dalam pernyataan CTAS, gunakan location properti yang dijelaskan nanti di bagian ini.

Tidak wajib. Lokasi tempat Athena menyimpan kueri CTAS Anda di Amazon S3.

Contoh:

WITH (external_location ='s3://DOC-EXAMPLE-BUCKET/tables/parquet_table/')

Athena tidak menggunakan jalur yang sama untuk hasil kueri dua kali. Jika Anda menentukan lokasi secara manual, pastikan bahwa lokasi Amazon S3 yang Anda tentukan tidak memiliki data. Athena tidak pernah mencoba untuk menghapus data Anda. Jika Anda ingin menggunakan lokasi yang sama lagi, hapus data secara manual, atau kueri CTAS Anda akan gagal.

Jika Anda menjalankan permintaan CTAS yang menentukanexternal_locationdalam grup kerja yangmemberlakukan lokasi hasil kueri, permintaan gagal dengan pesan kesalahan. Untuk melihat lokasi hasil kueri yang ditentukan untuk grup kerja,lihat detail grup kerja.

Jika grup kerja Anda menimpa pengaturan sisi klien untuk permintaan hasil lokasi, Athena membuat tabel Anda di lokasi berikut:

s3://DOC-EXAMPLE-BUCKET/tables/query-id/

Jika Anda tidak menggunakanexternal_locationproperti untuk menentukan lokasi dan grup kerja Anda tidak menimpa pengaturan sisi klien, Athena menggunakanPengaturan sisi klienuntuk lokasi hasil kueri untuk membuat tabel Anda di lokasi berikut:

s3://DOC-EXAMPLE-BUCKET/Unsaved-or-query-name/year/month/date/tables/query-id/
is_external = [boolean]

Tidak wajib. Menunjukkan apakah tabel adalah tabel eksternal. Bawaannya adalah benar. Untuk tabel Iceberg, ini harus disetel ke false.

Contoh:

WITH (is_external = false)
location = [location]

Diperlukan untuk tabel Iceberg. Menentukan lokasi root untuk tabel Iceberg yang akan dibuat dari hasil query.

Contoh:

WITH (location ='s3://DOC-EXAMPLE-BUCKET/tables/iceberg_table/')
field_delimiter = [delimiter]

Opsional dan spesifik untuk format penyimpanan data berbasis teks. Pembatas bidang karakter tunggal untuk file dalam CSV, TSV, dan file teks. Misalnya, WITH (field_delimiter = ','). Saat ini, pembatas bidang multikarakter tidak didukung untuk permintaan CTAS. Jika Anda tidak menentukan pembatas bidang,\001digunakan secara default.

format = [storage_format]

Format penyimpanan untuk hasil query CTAS, seperti,ORC,PARQUET,AVRO, JSONION, atauTEXTFILE. Untuk tabel Iceberg, format yang diizinkan adalahORC,PARQUET, dan. AVRO Jika dihilangkan,PARQUETdigunakan secara default. Nama parameter ini,format, harus terdaftar dalam huruf kecil, atau permintaan CTAS Anda akan gagal.

Contoh:

WITH (format = 'PARQUET')
bucketed_by = ARRAY[ column_name[,…], bucket_count = [int] ]
catatan

Properti ini tidak berlaku untuk tabel Iceberg. Untuk tabel Iceberg, gunakan partisi dengan transformasi bucket.

Daftar larik bucket untuk bucket data. Jika dihilangkan, Athena tidak bucket data Anda dalam kueri ini.

bucket_count = [int]
catatan

Properti ini tidak berlaku untuk tabel Iceberg. Untuk tabel Iceberg, gunakan partisi dengan transformasi bucket.

Jumlah bucket untuk bucket data Anda. Jika dihilangkan, Athena tidak bucket data Anda. Contoh:

CREATE TABLE bucketed_table WITH ( bucketed_by = ARRAY[column_name], bucket_count = 30, format = 'PARQUET', external_location ='s3://DOC-EXAMPLE-BUCKET/tables/parquet_table/' ) AS SELECT * FROM table_name
partitioned_by = ARRAY[ col_name[,…] ]
catatan

Properti ini tidak berlaku untuk tabel Iceberg. Untuk menggunakan transformasi partisi untuk tabel Iceberg, gunakan partitioning properti yang dijelaskan nanti di bagian ini.

Tidak wajib. Daftar larik kolom dimana tabel CTAS akan dipartisi. Verifikasi bahwa nama-nama kolom dipartisi terdaftar terakhir dalam daftar kolom diSELECT.

partitioning = ARRAY[partition_transform, ...]

Tidak wajib. Menentukan partisi dari tabel Iceberg yang akan dibuat. Iceberg mendukung berbagai macam transformasi partisi dan evolusi partisi. Transformasi partisi dirangkum dalam tabel berikut.

Transformasi Deskripsi
year(ts) Membuat partisi untuk setiap tahun. Nilai partisi adalah perbedaan bilangan bulat dalam tahun antara ts dan 1 Januari 1970.
month(ts) Membuat partisi untuk setiap bulan setiap tahun. Nilai partisi adalah perbedaan bilangan bulat dalam bulan antara ts dan 1 Januari 1970.
day(ts) Membuat partisi untuk setiap hari setiap tahun. Nilai partisi adalah perbedaan bilangan bulat dalam hari antara ts dan 1 Januari 1970.
hour(ts) Membuat partisi untuk setiap jam setiap hari. Nilai partisi adalah stempel waktu dengan menit dan detik diatur ke nol.
bucket(x, nbuckets) Hash data ke dalam jumlah ember yang ditentukan. Nilai partisi adalah hash integer darix, dengan nilai antara 0 dannbuckets - 1, inklusif.
truncate(s, nchars) Membuat nilai partisi nchars karakter pertama daris.

Contoh:

WITH (partitioning = ARRAY['month(order_date)', 'bucket(account_number, 10)', 'country']))
optimize_rewrite_min_data_file_size_bytes = [long]

Tidak wajib. Konfigurasi spesifik pengoptimalan data. File yang lebih kecil dari nilai yang ditentukan disertakan untuk optimasi. Defaultnya adalah 0,75 kali nilai. write_target_data_file_size_bytes Properti ini hanya berlaku untuk tabel Iceberg. Untuk informasi selengkapnya, lihat Mengoptimalkan tabel Iceberg.

Contoh:

WITH (optimize_rewrite_min_data_file_size_bytes = 402653184)
optimize_rewrite_max_data_file_size_bytes = [long]

Tidak wajib. Konfigurasi spesifik pengoptimalan data. File yang lebih besar dari nilai yang ditentukan disertakan untuk optimasi. Defaultnya adalah 1,8 kali nilaiwrite_target_data_file_size_bytes. Properti ini hanya berlaku untuk tabel Iceberg. Untuk informasi selengkapnya, lihat Mengoptimalkan tabel Iceberg.

Contoh:

WITH (optimize_rewrite_max_data_file_size_bytes = 966367641)
optimize_rewrite_data_file_threshold = [int]

Tidak wajib. Konfigurasi spesifik pengoptimalan data. Jika ada lebih sedikit file data yang memerlukan pengoptimalan daripada ambang batas yang diberikan, file tidak ditulis ulang. Hal ini memungkinkan akumulasi lebih banyak file data untuk menghasilkan file yang lebih dekat dengan ukuran target dan melewatkan perhitungan yang tidak perlu untuk penghematan biaya. Default-nya adalah 5. Properti ini hanya berlaku untuk tabel Iceberg. Untuk informasi selengkapnya, lihat Mengoptimalkan tabel Iceberg.

Contoh:

WITH (optimize_rewrite_data_file_threshold = 5)
optimize_rewrite_delete_file_threshold = [int]

Tidak wajib. Konfigurasi spesifik pengoptimalan data. Jika ada lebih sedikit file hapus yang terkait dengan file data daripada ambang batas, file data tidak ditulis ulang. Ini memungkinkan akumulasi lebih banyak file hapus untuk setiap file data untuk penghematan biaya. Defaultnya adalah 2. Properti ini hanya berlaku untuk tabel Iceberg. Untuk informasi selengkapnya, lihat Mengoptimalkan tabel Iceberg.

Contoh:

WITH (optimize_rewrite_delete_file_threshold = 2)
vacuum_min_snapshots_to_keep = [int]

Tidak wajib. Konfigurasi khusus vakum. Jumlah minimum snapshot terbaru yang harus dipertahankan. Default-nya adalah 1. Properti ini hanya berlaku untuk tabel Iceberg. Untuk informasi selengkapnya, lihat VAKUM.

catatan

vacuum_min_snapshots_to_keepProperti ini membutuhkan mesin Athena versi 3.

Contoh:

WITH (vacuum_min_snapshots_to_keep = 1)
vacuum_max_snapshot_age_seconds = [long]

Tidak wajib. Konfigurasi khusus vakum. Periode dalam detik yang mewakili usia snapshot untuk dipertahankan. Defaultnya adalah 432000 (5 hari). Properti ini hanya berlaku untuk tabel Iceberg. Untuk informasi selengkapnya, lihat VAKUM.

catatan

vacuum_max_snapshot_age_secondsProperti ini membutuhkan mesin Athena versi 3.

Contoh:

WITH (vacuum_max_snapshot_age_seconds = 432000)
write_compression = [compression_format]

Jenis kompresi yang digunakan untuk format penyimpanan apa pun yang memungkinkan kompresi ditentukan. compression_formatNilai menentukan kompresi yang akan digunakan ketika data ditulis ke tabel. Anda dapat menentukan kompresi untukTEXTFILE,JSON,PARQUET, dan format ORC file.

Misalnya, jika format properti menentukan PARQUET sebagai format penyimpanan, nilai untuk write_compression menentukan format kompresi untuk Parket. Dalam hal ini, menentukan nilai untuk write_compression setara dengan menentukan nilai untuk. parquet_compression

Demikian pula, jika format properti menentukan ORC sebagai format penyimpanan, nilai untuk write_compression menentukan format kompresi untuk ORC. Dalam hal ini, menentukan nilai untuk write_compression setara dengan menentukan nilai untuk. orc_compression

Beberapa properti tabel format kompresi tidak dapat ditentukan dalam kueri CTAS yang sama. Misalnya, Anda tidak dapat menentukan keduanya write_compression dan parquet_compression dalam kueri yang sama. Hal yang sama berlaku untuk write_compression danorc_compression. Untuk informasi tentang jenis kompresi yang didukung untuk setiap format file, lihatDukungan kompresi Athena.

orc_compression = [compression_format]

Jenis kompresi yang digunakan untuk format ORC file saat ORC data ditulis ke tabel. Misalnya, WITH (orc_compression = 'ZLIB'). Potongan dalam ORC file (kecuali ORC Postscript) dikompresi menggunakan kompresi yang Anda tentukan. Jika dihilangkan, kompresi ZLIB digunakan secara default untuk. ORC

catatan

Untuk konsistensi, kami sarankan Anda menggunakan write_compression properti alih-alihorc_compression. Gunakan format properti untuk menentukan format penyimpanan sebagaiORC, dan kemudian gunakan write_compression properti untuk menentukan format kompresi yang ORC akan digunakan.

parquet_compression = [compression_format]

Jenis kompresi yang digunakan untuk format file Parket saat data Parket ditulis ke tabel. Misalnya, WITH (parquet_compression = 'SNAPPY'). Kompresi ini diterapkan pada potongan kolom dalam file Parket. Jika dihilangkan, kompresi GZIP digunakan secara default untuk Parket.

catatan

Untuk konsistensi, kami sarankan Anda menggunakan write_compression properti alih-alihparquet_compression. Gunakan format properti untuk menentukan format penyimpanan sebagaiPARQUET, dan kemudian gunakan write_compression properti untuk menentukan format kompresi yang PARQUET akan digunakan.

compression_level = [compression_level]

Tingkat kompresi yang digunakan. Properti ini hanya berlaku untuk kompresi ZSTD. Nilai yang mungkin adalah dari 1 hingga 22. Nilai default-nya adalah 3. Untuk informasi selengkapnya, lihat Menggunakan tingkat kompresi ZSTD di Athena.

Contoh

Untuk contoh pertanyaan CTAS, konsultasikan sumber daya berikut.