CREATE TABLE - Amazon Athena

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, diLOCATIONyang Anda tentukan. Kecuali saat membuat tabel Iceberg, selalu gunakan kata kunci. EXTERNAL Jika Anda menggunakan CREATE TABLE tanpa EXTERNAL 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 SERDEPROPERTIESKlausul.

[JIKA NOTEXISTS]

Parameter ini memeriksa apakah tabel dengan nama yang sama sudah ada. Jika ya, parameter kembaliTRUE, 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, lampirkan table_name dalam tanda petikan, sebagai contoh "table123". Jika table_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_namedimulai dengan garis bawah, lampirkan nama kolom di backticks, misalnya`_mycolumn`. Untuk pembatasan nama kolom di Athena, lihat. Nama database, tabel, dan kolom

Nilai data_type dapat menjadi salah satu dari yang berikut:

  • boolean – Nilai adalah true dan false.

  • 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, gunakan int kata kunci untuk mewakili bilangan bulat. Dalam kueri lain, gunakan kata kunciinteger, di mana integer 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. doublemengikuti 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. floatmengikuti IEEE Standar untuk Aritmatika Floating-Point (754). IEEE Setara dengan real di Presto. Di Athena, gunakan float dalam DDL pernyataan seperti CREATE TABLE dan real dalam SQL fungsi seperti. SELECT CAST AWS Glue Crawler mengembalikan nilai dalamfloat, dan Athena real menerjemahkan float dan mengetik secara internal (lihat 5 Juni 2018 catatan rilis).

  • decimal [ (precision, scale) ], tempatprecisionadalah jumlah digit, danscale(opsional) adalah jumlah digit di bagian pecahan, default adalah 0. Sebagai contoh, gunakan definisi jenis ini:decimal(11,5),decimal(15). Nilai maksimum untuk precision adalah 38, dan nilai maksimum untuk scale 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, seperti char(10). Untuk informasi selengkapnya, lihat Tipe data CHAR sarang.

  • varchar – Berbagai data karakter panjang, dengan panjang yang ditentukan antara 1 dan 65535, seperti varchar(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 kestringdi Athena; melemparkan mereka kevarcharSebagai gantinya

  • binary— (untuk data di Parket)

  • date— Tanggal dalam ISO format, sepertiYYYY-MM-DD. Misalnya, 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 yang java.sql.Timestampkompatibel hingga resolusi maksimum milidetik, sepertiyyyy-MM-dd HH:mm:ss[.f...]. Misalnya, timestamp '2008-09-15 03:04:05.324'. Pengecualian adalah O penCSVSer De, yang menggunakan TIMESTAMP 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]

Membuatcommenttabel properti dan populates dengantable_commentAnda tentukan.

[PARTITIONEDOLEH (col_name data_type [COMMENTcol_comment],...)]

Membuat tabel dipartisi dengan satu atau lebih kolom partisi yang memilikicol_name,data_typedancol_commentditentukan. 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_nameYang 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 ditentukancol_nameke dalam subset data yang disebutember. Parameter num_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. Untukrow_format, Anda dapat menentukan satu atau lebih pembatas denganDELIMITEDatau, alternatif, gunakanSERDEseperti yang dijelaskan di bawah ini. Jika ROW FORMAT dihilangkan atau ROW 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_nameIni menunjukkan SerDe penggunaan. WITH SERDEPROPERTIESKlausul 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,TEXTFILEadalah default. Pilihan untukfile_formatadalah:

  • 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 untuktrueuntuk menunjukkan bahwa set data yang mendasari ditentukan olehLOCATIONdienkripsi. Jika dihilangkan dan jika pengaturan grup kerja tidak menimpa pengaturan sisi klien,falsediasumsikan. Jika dihilangkan atau diatur kefalseketika 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 dengan classification properti untuk menunjukkan tipe data untuk AWS Glue ascsv,, parquetorc,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 TABLEPernyataan 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 DELIMITEDKlausa 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 TEXTFILEKlausul 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.