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.
Topik
- Pertimbangan dan batasan
- Daftar database dan mencari database tertentu
- Daftar tabel dalam database tertentu dan mencari tabel dengan nama
- Daftar partisi untuk tabel tertentu
- Daftar semua kolom untuk semua tabel
- Daftar kolom yang memiliki kesamaan tabel tertentu
- Daftar atau mencari kolom untuk tabel atau tampilan tertentu
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 VIEW
untuk membuat tampilan pada basis datainformation_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
untuk mencantumkan partisi untuk tabel tertentu, seperti dalam contoh berikut.table_name
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 database
AwsDataCatalog
, gunakan kueriSELECT * FROM information_schema.columns
. -
Untuk membatasi hasil ke database tertentu, gunakan
table_schema='
dalamdatabase_name
'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 sintaks
SELECT 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='
untuk menentukan basis data dandatabase_name
'table_name =
'
untuk menentukan tabel atau tampilan yang memiliki kolom yang ingin Anda cantumkan.table_name
'
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 | 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 |