Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CREATE TABLE
Membuat tabel dengan nama dan parameter yang Anda tentukan.
catatan
Halaman ini berisi informasi referensi ringkasan. Untuk informasi selengkapnya tentang membuat tabel di Athena dan CREATE TABLE
pernyataan contoh, lihat. Buat tabel di Athena Untuk contoh membuat database, membuat tabel, dan menjalankan SELECT
kueri pada tabel di Athena, lihat. Memulai
Sinopsis
CREATE EXTERNAL TABLE [IF NOT EXISTS]
[db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[WITH SERDEPROPERTIES (...)]
[LOCATION 's3://amzn-s3-demo-bucket/[folder]/']
[TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]
Parameter
- EXTERNAL
-
Menentukan bahwa tabel didasarkan pada file data yang mendasari yang ada di Amazon S3, di
LOCATION
yang Anda tentukan. Kecuali saat membuat tabel Iceberg, selalu gunakan kata kunci.EXTERNAL
Jika Anda menggunakanCREATE TABLE
tanpaEXTERNAL
kata kunci untuk tabel non-Iceberg, Athena mengeluarkan kesalahan. Saat Anda membuat tabel eksternal, data yang direferensikan harus sesuai dengan format default atau format yang Anda tentukan denganROW FORMAT
,STORED AS
, danWITH SERDEPROPERTIES
Klausul.
- [JIKA NOTEXISTS]
-
Parameter ini memeriksa apakah tabel dengan nama yang sama sudah ada. Jika ya, parameter kembali
TRUE
, dan Amazon Athena membatalkan tindakan.CREATE TABLE
Karena pembatalan terjadi sebelum Athena memanggil katalog data, itu tidak memancarkan AWS CloudTrail acara. - [db_name.] table_name
-
Menentukan nama untuk tabel yang akan dibuat. Parameter
db_name
opsional menentukan basis data tempat tabel ada. Jika dihilangkan, basis data saat ini diasumsikan. Jika nama tabel termasuk angka, lampirkantable_name
dalam tanda petikan, sebagai contoh"table123"
. Jikatable_name
dimulai dengan garis bawah, gunakan backticks, misalnya,`_mytable`
. Karakter khusus (selain garis bawah) tidak didukung.Nama tabel Athena adalah sensitif hurup; tetapi, jika Anda bekerja dengan Apache Spark, Spark membutuhkan nama tabel huruf kecil. Untuk pembatasan nama tabel di Athena, lihat. Nama database, tabel, dan kolom
- [(col_name data_type [COMMENTcol_comment] [,...])]
-
Menentukan nama untuk setiap kolom yang akan dibuat, bersama dengan tipe data kolom ini. Nama kolom tidak mengizinkan karakter khusus selain garis bawah
(_)
. Jikacol_name
dimulai dengan garis bawah, lampirkan nama kolom di backticks, misalnya`_mycolumn`
. Untuk pembatasan nama kolom di Athena, lihat. Nama database, tabel, dan kolomNilai
data_type
dapat menjadi salah satu dari yang berikut:-
boolean
– Nilai adalahtrue
danfalse
. -
tinyint
— Bilangan bulat bertanda 8-bit dalam format komplemen dua, dengan nilai minimum -2^7 dan nilai maksimum 2 ^ 7-1. -
smallint
— Bilangan bulat bertanda 16-bit dalam format komplemen dua, dengan nilai minimum -2^15 dan nilai maksimum 2 ^ 15-1. -
int
— Dalam kueri Data Definition Language (DDL) sepertiCREATE TABLE
, gunakanint
kata kunci untuk mewakili bilangan bulat. Dalam kueri lain, gunakan kata kunciinteger
, di manainteger
direpresentasikan sebagai nilai bertanda 32-bit dalam format komplemen dua, dengan nilai minimum 2^31 dan nilai maksimum 2^31-1. Di JDBC driver,integer
dikembalikan, untuk memastikan kompatibilitas dengan aplikasi analisis bisnis. -
bigint
— Integer bertanda 64-bit dalam format komplemen dua, dengan nilai minimum -2^63 dan nilai maksimum 2 ^ 63-1. -
double
— Nomor floating point presisi ganda yang ditandatangani 64-bit. Kisarannya adalah 4.94065645841246544e-324d hingga 1.79769313486231570e+308d, positif atau negatif.double
mengikuti IEEE Standar untuk Aritmatika Floating-Point (754). IEEE -
float
— Nomor floating point presisi tunggal bertanda 32-bit. Kisarannya adalah 1.40129846432481707e-45 hingga 3.40282346638528860e+38, positif atau negatif.float
mengikuti IEEE Standar untuk Aritmatika Floating-Point (754). IEEE Setara denganreal
di Presto. Di Athena, gunakanfloat
dalam DDL pernyataan sepertiCREATE TABLE
danreal
dalam SQL fungsi seperti.SELECT CAST
AWS Glue Crawler mengembalikan nilai dalamfloat
, dan Athenareal
menerjemahkanfloat
dan mengetik secara internal (lihat 5 Juni 2018 catatan rilis). -
decimal [ (
, tempatprecision
,scale
) ]
adalah jumlah digit, danprecision
(opsional) adalah jumlah digit di bagian pecahan, default adalah 0. Sebagai contoh, gunakan definisi jenis ini:scale
decimal(11,5)
,decimal(15)
. Nilai maksimum untukprecision
adalah 38, dan nilai maksimum untukscale
adalah 38.Untuk menentukan nilai desimal sebagai literal, seperti saat memilih baris dengan nilai desimal tertentu dalam DDL ekspresi kueri, tentukan definisi
decimal
tipe, dan daftarkan nilai desimal sebagai literal (dalam tanda kutip tunggal) dalam kueri Anda, seperti dalam contoh ini:.decimal_value = decimal '0.12'
-
char
– Data karakter dengan panjang tetap, dengan panjang yang ditentukan antara 1 dan 255, sepertichar(10)
. Untuk informasi selengkapnya, lihat Tipe data CHAR sarang. -
varchar
– Berbagai data karakter panjang, dengan panjang yang ditentukan antara 1 dan 65535, sepertivarchar(10)
. Untuk informasi selengkapnya, lihat Tipe data VARCHAR sarang. -
string
– Sebuah literal string yang disertakan dalam tanda kutip tunggal atau ganda.catatan
Tipe data non-string tidak dapat dilemparkan ke
string
di Athena; melemparkan mereka kevarchar
Sebagai gantinya -
binary
— (untuk data di Parket) -
date
— Tanggal dalam ISO format, seperti
. Misalnya,YYYY
-MM
-DD
date '2008-09-15'
. Pengecualian adalah O penCSVSer De, yang menggunakan jumlah hari yang berlalu sejak 1 Januari 1970. Untuk informasi selengkapnya, lihat Terbuka CSV SerDe untuk diproses CSV. -
timestamp
— Tanggal dan waktu instan dalam format yangjava.sql.Timestamp
kompatibel hingga resolusi maksimum milidetik, seperti
. Misalnya,yyyy
-MM
-dd
HH
:mm
:ss
[.f...
]timestamp '2008-09-15 03:04:05.324'
. Pengecualian adalah O penCSVSer De, yang menggunakanTIMESTAMP
data dalam format UNIX numerik (misalnya,1579059880000
). Untuk informasi selengkapnya, lihat Terbuka CSV SerDe untuk diproses CSV. -
array
< data_type > -
map
< primitive_type, data_type > -
struct
< col_name: data_type [komentar col_comment] [, ... ] >
-
- [COMMENTtable_comment]
-
Membuat
comment
tabel properti dan populates dengantable_comment
Anda tentukan. - [PARTITIONEDOLEH (col_name data_type [COMMENTcol_comment],...)]
-
Membuat tabel dipartisi dengan satu atau lebih kolom partisi yang memiliki
col_name
,data_type
dancol_comment
ditentukan. Sebuah tabel dapat memiliki satu atau lebih partisi, yang terdiri dari nama kolom yang berbeda dan kombinasi nilai. Sebuah direktori data terpisah dibuat untuk setiap kombinasi tertentu, yang dapat meningkatkan performa kueri dalam beberapa keadaan. Kolom yang dipartisi tidak ada dalam data tabel itu sendiri. Jika Anda menggunakan nilai untukcol_name
Yang sama dengan kolom tabel, Anda akan mendapatkan pesan kesalahan. Untuk informasi selengkapnya, lihat,Data partisi.catatan
Setelah Anda membuat tabel dengan partisi, jalankan kueri berikutnya yang terdiri dari MSCKREPAIRTABLEklausa untuk menyegarkan metadata partisi, misalnya,.
MSCK REPAIR TABLE cloudfront_logs;
Untuk partisi yang tidak Hive kompatibel, gunakanALTER TABLE ADD PARTITIONuntuk memuat partisi sehingga Anda dapat mengkueri data.
- [CLUSTEREDOLEH (col_name, col_name,...) INTOnum_ember] BUCKETS
-
Membagi, dengan atau tanpa partisi, data dalam ditentukan
col_name
ke dalam subset data yang disebutember. Parameternum_buckets
menentukan jumlah bucket untuk dibuat. Bucketing dapat meningkatkan performa beberapa kueri pada set data yang besar.
- [ROWFORMATbaris_format]
-
Menentukan format baris tabel dan data sumber yang mendasari jika berlaku. Untuk
row_format
, Anda dapat menentukan satu atau lebih pembatas denganDELIMITED
atau, alternatif, gunakanSERDE
seperti yang dijelaskan di bawah ini. JikaROW FORMAT
dihilangkan atauROW FORMAT DELIMITED
ditentukan, asli SerDe digunakan.-
[DELIMITEDFIELDSTERMINATEDOLEH char [ESCAPEDOLEH char]]
-
[DELIMITEDCOLLECTIONITEMSTERMINATEDOLEH char]
-
[MAPKEYSTERMINATEDOLEH char]
-
[LINESTERMINATEDOLEH char]
-
[NULLDEFINEDSebagai char]
Hanya tersedia dengan Hive 0.13 dan ketika format file STORED AS.
TEXTFILE
--ATAU--
-
SERDE'serde_name' [WITHSERDEPROPERTIES(“property_name” = “property_value”, “property_name” = “property_value” [,...])]
serde_name
Ini menunjukkan SerDe penggunaan.WITH SERDEPROPERTIES
Klausul ini memungkinkan Anda untuk menyediakan satu atau lebih properti kustom yang diizinkan oleh. SerDe
-
- [STOREDSebagai file_format]
-
Menentukan format file untuk data tabel. Jika dihilangkan,
TEXTFILE
adalah default. Pilihan untukfile_format
adalah:-
SEQUENCEFILE
-
TEXTFILE
-
RCFILE
-
ORC
-
PARQUET
-
AVRO
-
ION
-
INPUTFORMATinput_format_classname output_format_classname OUTPUTFORMAT
-
- [LOCATION's3://amzn-s3-demo-bucket/[folder]/']
-
Menentukan lokasi data yang mendasari di Amazon S3 dari mana tabel dibuat. Lokasi jalur harus nama bucket atau nama bucket dan satu atau lebih folder. Jika Anda menggunakan partisi, tentukan akar data yang dipartisi. Untuk informasi selengkapnya tentang pengambilan tabel, lihat Tentukan lokasi tabel di Amazon S3. Untuk informasi tentang format data dan izin, lihatPertimbangan Amazon S3.
Gunakan garis miring trailing untuk folder atau bucket Anda. Jangan gunakan nama file atau karakter glob.
Gunakan:
s3://amzn-s3-demo-bucket/
s3://amzn-s3-demo-bucket/
folder
/s3://amzn-s3-demo-bucket/
folder
/anotherfolder
/Jangan gunakan:
s3://amzn-s3-demo-bucket
s3://amzn-s3-demo-bucket/*
s3://amzn-s3-demo-bucket/
mydatafile.dat
- [TBLPROPERTIES(['has_encrypted_data'='true | false',] ['classification'='classification_value',] property_name=property_value [,...])]
-
Menentukan kustom metadata pasangan kunci-nilai untuk definisi tabel selain properti tabel yang telah ditetapkan, seperti
"comment"
.has_encrypted_data — Athena memiliki properti bawaan,.
has_encrypted_data
Mengatur properti ini untuktrue
untuk menunjukkan bahwa set data yang mendasari ditentukan olehLOCATION
dienkripsi. Jika dihilangkan dan jika pengaturan grup kerja tidak menimpa pengaturan sisi klien,false
diasumsikan. Jika dihilangkan atau diatur kefalse
ketika data dasar dienkripsi, hasil kueri dalam kesalahan. Untuk informasi selengkapnya, lihat Enkripsi diam.klasifikasi — Tabel yang dibuat untuk Athena di CloudTrail konsol ditambahkan
cloudtrail
sebagai nilai untuk properti.classification
Untuk menjalankan ETL pekerjaan AWS Glue , Anda harus membuat tabel denganclassification
properti untuk menunjukkan tipe data untuk AWS Glue ascsv
,,parquet
orc
,avro
, ataujson
. Misalnya,'classification'='csv'
. ETLpekerjaan akan gagal jika Anda tidak menentukan properti ini. Anda selanjutnya dapat menentukannya menggunakan AWS Glue konsol,API, atauCLI. Untuk informasi selengkapnya, lihat Buat tabel untuk ETL pekerjaan dan Menulis Pekerjaan di AWS Glue di Panduan AWS Glue Pengembang.compression_level -
compression_level
Properti menentukan tingkat kompresi untuk digunakan. Properti ini hanya berlaku untuk ZSTD kompresi. Nilai yang mungkin adalah dari 1 hingga 22. Nilai default-nya adalah 3. Untuk informasi selengkapnya, lihat Gunakan tingkat ZSTD kompresi.Untuk informasi selengkapnya tentang properti tabel lainnya, lihatALTER TABLE SET TBLPROPERTIES.
Contoh
CREATE TABLE
Pernyataan contoh berikut membuat tabel berdasarkan data planet yang dipisahkan tab yang disimpan di Amazon S3.
CREATE EXTERNAL TABLE planet_data ( planet_name string, order_from_sun int, au_to_sun float, mass float, gravity_earth float, orbit_years float, day_length float ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/tsv/'
Perhatikan bidang berikut:
-
ROW FORMAT DELIMITED
Klausa menunjukkan bahwa data dibatasi oleh karakter tertentu. -
FIELDS TERMINATED BY '\t'
Klausa menentukan bahwa bidang dalam TSV data dipisahkan oleh karakter tab ('\ t'). -
STORED AS TEXTFILE
Klausul menunjukkan bahwa data disimpan sebagai file teks biasa di Amazon S3.
Untuk menanyakan data, Anda bisa menggunakan SELECT
pernyataan sederhana seperti berikut ini:
SELECT * FROM planet_data
Untuk menggunakan contoh untuk membuat TSV tabel Anda sendiri di Athena, ganti nama tabel dan kolom dengan nama dan tipe data tabel dan kolom Anda sendiri, dan perbarui LOCATION
klausa untuk menunjuk ke jalur Amazon S3 tempat file Anda disimpan. TSV
Untuk informasi selengkapnya tentang membuat tabel, lihat Buat tabel di Athena.