Mengkueri AWS Glue Data Catalog - Amazon Athena

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

Mengkueri AWS Glue Data Catalog

Karena AWS Glue Data Catalog digunakan oleh banyak orang Layanan AWS sebagai repositori metadata pusat mereka, Anda mungkin ingin menanyakan metadata Katalog Data. Untuk melakukannya, Anda dapat menggunakan kueri SQL di Athena. Anda dapat menggunakan Athena untuk mengkueri katalog metadata AWS Glue seperti basis data, tabel, partisi, dan kolom.

Untuk mendapatkan metadata Katalog AWS Glue, Anda mengkueri basis data information_schema pada backend Athena. Contoh kueri dalam topik ini menunjukkan bagaimana menggunakan Athena untuk mengkueri metadata Katalog AWS Glue untuk kasus penggunaan umum.

Pertimbangan dan batasan

  • Alih-alih menanyakan information_schema database, dimungkinkan untuk menggunakan perintah Apache Hive DDL individu untuk mengekstrak informasi metadata untuk database, tabel, tampilan, partisi, dan kolom tertentu dari Athena. Namun, outputnya dalam format non-tabular.

  • Kueri paling information_schema berkinerja jika Anda memiliki jumlah metadata kecil hingga sedang. AWS Glue Jika Anda memiliki sejumlah besar metadata, kesalahan dapat terjadi.

  • Anda tidak dapat menggunakan CREATE VIEWuntuk membuat tampilan pada basis data information_schema.

Daftar database dan mencari database tertentu

Contoh dalam bagian ini menunjukkan cara mencantumkan basis data dalam metadata berdasarkan nama skema.

contoh — Daftar database

Contoh kueri berikut mencantumkan basis data dari tabel information_schema.schemata.

SELECT schema_name FROM information_schema.schemata LIMIT 10;

Tabel berikut menunjukkan hasil sampel.

6 alb-databas1
7 alb_original_cust
8 alblogsdatabase
9 athena_db_test
10 athena_ddl_db
contoh — Mencari database tertentu

Pada kueri contoh berikut, rdspostgresql adalah basis data sampel.

SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'rdspostgresql'

Tabel berikut menunjukkan hasil sampel.

schema_name
1 rdspostgresql

Daftar tabel dalam database tertentu dan mencari tabel dengan nama

Untuk mencantumkan metadata untuk tabel, Anda dapat mengkueri menurut skema tabel atau menurut nama tabel.

contoh — Daftar tabel berdasarkan skema

Kueri berikut mencantumkan tabel yang menggunakan skema tabel rdspostgresql.

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_schema = 'rdspostgresql'

Tabel berikut menunjukkan hasil sampel.

table_schema table_name table_type
1 rdspostgresql rdspostgresqldb1_public_account TABEL DASAR
contoh — Mencari tabel dengan nama

Kueri berikut memperoleh informasi metadata untuk tabelathena1.

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_name = 'athena1'

Tabel berikut menunjukkan hasil sampel.

table_schema table_name table_type
1 default athena1 TABEL DASAR

Daftar partisi untuk tabel tertentu

Anda dapat menggunakan SHOW PARTITIONS table_name untuk mencantumkan partisi untuk tabel tertentu, seperti dalam contoh berikut.

SHOW PARTITIONS cloudtrail_logs_test2

Anda juga dapat menggunakan kueri $partitions metadata untuk mencantumkan nomor partisi dan nilai partisi untuk tabel tertentu.

contoh — Menanyakan partisi untuk tabel menggunakan sintaks $partisi

Contoh query berikut mencantumkan partisi untuk tabel cloudtrail_logs_test2 menggunakan $partitions sintaks.

SELECT * FROM default."cloudtrail_logs_test2$partitions" ORDER BY partition_number

Tabel berikut menunjukkan hasil sampel.

table_catalog table_schema table_name Tahun Bulan Hari
1 awsdatacatalog default cloudtrail_logs_test2 2020 08 10
2 awsdatacatalog default cloudtrail_logs_test2 2020 08 11
3 awsdatacatalog default cloudtrail_logs_test2 2020 08 12

Daftar semua kolom untuk semua tabel

Anda dapat mencantumkan semua kolom untuk semua tabel di AwsDataCatalog atau untuk semua tabel dalam database tertentu diAwsDataCatalog.

  • Untuk mencantumkan semua kolom untuk semua databaseAwsDataCatalog, gunakan kueriSELECT * FROM information_schema.columns.

  • Untuk membatasi hasil ke database tertentu, gunakan table_schema='database_name' dalam WHERE klausa.

contoh - Daftar semua kolom untuk semua tabel dalam database tertentu

Contoh query berikut mencantumkan semua kolom untuk semua tabel dalam databasewebdata.

SELECT * FROM information_schema.columns WHERE table_schema = 'webdata'

Daftar kolom yang memiliki kesamaan tabel tertentu

Anda dapat membuat daftar kolom yang memiliki kesamaan tabel tertentu dalam database.

  • Gunakan sintaksSELECT column_name FROM information_schema.columns.

  • Untuk WHERE klausa, gunakan sintaksWHERE table_name IN ('table1', 'table2').

contoh — Daftar kolom umum untuk dua tabel dalam database yang sama

Contoh query berikut mencantumkan kolom yang tabel table1 dan table2 memiliki kesamaan.

SELECT column_name FROM information_schema.columns WHERE table_name IN ('table1', 'table2') GROUP BY column_name HAVING COUNT(*) > 1;

Daftar atau mencari kolom untuk tabel atau tampilan tertentu

Anda dapat mencantumkan semua kolom untuk tabel, semua kolom untuk tampilan, atau mencari kolom dengan nama dalam basis data dan tabel tertentu.

Untuk daftar kolom, gunakan kueri SELECT *. Di klausa FROM, tentukan information_schema.columns. Di klausa WHERE, gunakan table_schema='database_name' untuk menentukan basis data dantable_name = 'table_name' untuk menentukan tabel atau tampilan yang memiliki kolom yang ingin Anda cantumkan.

contoh - Daftar semua kolom untuk tabel tertentu

Contoh kueri berikut mencantumkan semua kolom untuk tabel rdspostgresqldb1_public_account.

SELECT * FROM information_schema.columns WHERE table_schema = 'rdspostgresql' AND table_name = 'rdspostgresqldb1_public_account'

Tabel berikut menunjukkan hasil sampel.

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type komentar extra_info
1 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account kata sandi 1 Ya varchar
2 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account user_id 2 YA bilangan bulat
3 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account created_on 3 YA stempel waktu
4 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account last_login 4 YA stempel waktu
5 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account Email 5 Ya varchar
6 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account nama pengguna 6 Ya varchar
contoh - Daftar kolom untuk tampilan tertentu

Contoh kueri berikut mencantumkan semua kolom di basis data default untuk tampilan arrayview.

SELECT * FROM information_schema.columns WHERE table_schema = 'default' AND table_name = 'arrayview'

Tabel berikut menunjukkan hasil sampel.

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type komentar extra_info
1 awsdatacatalog default arrayview searchdate 1 Ya varchar
2 awsdatacatalog default arrayview sid 2 Ya varchar
3 awsdatacatalog default arrayview btid 3 Ya varchar
4 awsdatacatalog default arrayview p 4 Ya varchar
5 awsdatacatalog default arrayview infantprice 5 Ya varchar
6 awsdatacatalog default arrayview bah 6 Ya varchar
7 awsdatacatalog default arrayview journeymaparray 7 Ya array (varchar)
contoh — Mencari kolom dengan nama dalam database dan tabel tertentu

Contoh berikut mengkueri pencarian untuk metadata kolom sid dalam tampilan arrayview basis data default.

SELECT * FROM information_schema.columns WHERE table_schema = 'default' AND table_name = 'arrayview' AND column_name='sid'

Tabel berikut menunjukkan hasil sampel.

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type komentar extra_info
1 awsdatacatalog default arrayview sid 2 Ya varchar