

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

# Menanyakan tabel metadata
<a name="metadata-tables-querying"></a>

Tabel Metadata Amazon S3 Anda disimpan dalam bucket tabel S3 AWS terkelola, yang menyediakan penyimpanan yang dioptimalkan untuk data tabular. Untuk menanyakan metadata Anda, Anda dapat mengintegrasikan keranjang meja Anda dengan Amazon SageMaker Lakehouse. Integrasi ini, yang menggunakan AWS Glue Data Catalog dan AWS Lake Formation, memungkinkan layanan AWS analitik untuk secara otomatis menemukan dan mengakses data tabel Anda. 

Setelah bucket meja terintegrasi dengan AWS Glue Data Catalog, Anda dapat langsung menanyakan tabel metadata Anda dengan layanan AWS analitik seperti Amazon Athena, Amazon EMR, dan Amazon Redshift. Anda juga dapat membuat dasbor interaktif dengan data kueri Anda dengan menggunakan Amazon Quick.

Untuk informasi selengkapnya tentang mengintegrasikan bucket tabel S3 AWS terkelola Anda dengan Amazon SageMaker Lakehouse, lihat. [Mengintegrasikan Tabel AWS Amazon S3 dengan layanan analitik](s3-tables-integrating-aws.md)

Anda juga dapat menanyakan tabel metadata Anda denganApache Spark,Apache Trino, dan aplikasi lain yang mendukung Apache Iceberg format dengan menggunakan titik akhir AWS Glue Iceberg REST, titik akhir Amazon S3 Tables Iceberg REST, atau Katalog Tabel Amazon S3 untuk katalog klien. Apache Iceberg Untuk informasi selengkapnya tentang mengakses tabel metadata Anda, lihat. [Mengakses data tabel](s3-tables-access.md)

Anda dapat menganalisis tabel metadata Anda dengan mesin kueri apa pun yang mendukung format. Apache Iceberg Misalnya, Anda dapat menanyakan tabel metadata Anda untuk melakukan hal berikut:
+ Temukan pola dan tren penggunaan penyimpanan
+ Audit AWS Key Management Service (AWS KMS) penggunaan kunci enkripsi di seluruh objek Anda
+ Cari objek berdasarkan metadata yang ditentukan pengguna dan tag objek
+ Memahami perubahan metadata objek dari waktu ke waktu
+ Pelajari kapan objek diperbarui atau dihapus, termasuk Akun AWS ID atau alamat IP yang membuat permintaan

Anda juga dapat bergabung dengan tabel metadata terkelola S3 dan tabel metadata kustom, memungkinkan Anda untuk melakukan kueri di beberapa kumpulan data.

## Pertimbangan harga kueri
<a name="metadata-tables-querying-pricing"></a>

Harga tambahan berlaku untuk menjalankan kueri pada tabel metadata Anda. Untuk informasi selengkapnya, lihat informasi harga untuk mesin kueri yang Anda gunakan.

Untuk informasi tentang membuat kueri Anda lebih hemat biaya, lihat[Mengoptimalkan kinerja kueri tabel metadata](metadata-tables-optimizing-query-performance.md).

**Topics**
+ [Pertimbangan harga kueri](#metadata-tables-querying-pricing)
+ [Izin untuk menanyakan tabel metadata](metadata-tables-bucket-query-permissions.md)
+ [Menanyakan tabel metadata dengan layanan analitik AWS](metadata-tables-bucket-integration.md)
+ [Kueri tabel metadata dengan mesin kueri sumber terbuka](metadata-tables-bucket-integration-open-source.md)
+ [Mengoptimalkan kinerja kueri tabel metadata](metadata-tables-optimizing-query-performance.md)
+ [Contoh kueri tabel metadata](metadata-tables-example-queries.md)

# Izin untuk menanyakan tabel metadata
<a name="metadata-tables-bucket-query-permissions"></a>

Sebelum Anda dapat menanyakan jurnal Metadata S3 dan tabel inventaris langsung, Anda harus memiliki izin Tabel S3 tertentu. Jika tabel metadata Anda telah dienkripsi dengan enkripsi sisi server menggunakan kunci AWS Key Management Service (AWS KMS) (SSE-KMS), Anda juga harus memiliki izin untuk mendekripsi data tabel. `kms:Decrypt` 

Saat Anda membuat konfigurasi tabel metadata, tabel metadata Anda disimpan dalam keranjang tabel terkelola AWS . Semua konfigurasi tabel metadata di akun Anda dan di Wilayah yang sama disimpan dalam satu keranjang tabel AWS terkelola bernama. `aws-s3` 

Untuk menanyakan tabel metadata, Anda dapat menggunakan contoh kebijakan berikut. Untuk menggunakan kebijakan ini, ganti `user input placeholders` dengan informasi Anda sendiri.

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"PermissionsToQueryMetadataTables",
         "Effect":"Allow",
         "Action":[
             "s3tables:GetTable",
             "s3tables:GetTableData",
             "s3tables:GetTableMetadataLocation",
             "kms:Decrypt"
         ],
         "Resource":[
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3",
            "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/*",
            "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
         ]
       }
    ]
}
```

# Menanyakan tabel metadata dengan layanan analitik AWS
<a name="metadata-tables-bucket-integration"></a>

Anda dapat menanyakan tabel metadata terkelola S3 Anda dengan layanan AWS analitik seperti Amazon Athena, Amazon Redshift, dan Amazon EMR.

Sebelum dapat menjalankan kueri, Anda harus terlebih dahulu [mengintegrasikan bucket tabel S3 AWS terkelola](s3-tables-integrating-aws.md) di wilayah Akun AWS dan wilayah Anda dengan AWS layanan analitik.

## Menanyakan tabel metadata dengan Amazon Athena
<a name="metadata-tables-bucket-integration-athena"></a>

Setelah [mengintegrasikan bucket tabel S3 AWS terkelola](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html) dengan layanan AWS analitik, Anda dapat mulai menanyakan tabel metadata di Athena. Dalam pertanyaan Anda, lakukan hal berikut: 
+ Tentukan katalog Anda sebagai `s3tablescatalog/aws-s3` dan database Anda sebagai `b_general_purpose_bucket_name` (yang biasanya merupakan namespace untuk tabel metadata Anda). 
+ Pastikan untuk mengelilingi nama namespace tabel metadata Anda dalam tanda kutip (`"`) atau backticks (```), jika tidak, kueri mungkin tidak berfungsi.

Untuk informasi selengkapnya, lihat [Menanyakan tabel Amazon S3 dengan Athena](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-athena.html).

Anda juga dapat menjalankan kueri di Athena dari konsol Amazon S3. 

### Menggunakan konsol S3 dan Amazon Athena
<a name="query-metadata-table-console"></a>

Prosedur berikut menggunakan konsol Amazon S3 untuk mengakses editor kueri Athena sehingga Anda dapat menanyakan tabel dengan Amazon Athena. 

**Untuk menanyakan tabel metadata**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi kiri, pilih **Bucket tujuan umum**.

1. Pada tab **Bucket tujuan umum**, pilih bucket yang berisi konfigurasi metadata untuk tabel metadata yang ingin Anda kueri.

1. Pada halaman detail bucket, pilih tab **Metadata**. 

1. Pilih **tabel Kueri dengan Athena**, lalu pilih salah satu contoh kueri untuk jurnal atau tabel inventaris.

1. Konsol Amazon Athena terbuka dan editor kueri Athena muncul dengan contoh kueri yang dimuat untuk Anda. Ubah kueri ini sesuai kebutuhan untuk kasus penggunaan Anda.

   Di editor kueri, bidang **Katalog** harus diisi dengan **s3tablescatalog/aws-s3**. **Bidang **Database** harus diisi dengan namespace tempat tabel Anda disimpan (misalnya, b\$1). *general-purpose-bucket-name*** 
**catatan**  
Jika Anda tidak melihat nilai ini di bidang **Katalog** dan **Database**, pastikan Anda telah mengintegrasikan bucket tabel AWS terkelola dengan layanan AWS analitik di Wilayah ini. Untuk informasi selengkapnya, lihat [Mengintegrasikan Tabel AWS Amazon S3 dengan layanan analitik](s3-tables-integrating-aws.md). 

1. Untuk menjalankan kueri, pilih **Jalankan**.
**catatan**  
Jika Anda menerima kesalahan “Izin tidak cukup untuk menjalankan kueri. Principal tidak memiliki hak istimewa pada sumber daya tertentu “ketika Anda mencoba menjalankan kueri di Athena, Anda harus diberikan izin Formasi Danau yang diperlukan di atas meja. Untuk informasi selengkapnya, lihat [Memberikan izin Lake Formation di atas meja atau database](grant-permissions-tables.md#grant-lf-table).  
Pastikan juga bahwa Anda memiliki izin AWS Identity and Access Management (IAM) yang sesuai untuk menanyakan tabel metadata. Untuk informasi selengkapnya, lihat [Izin untuk menanyakan tabel metadata](metadata-tables-bucket-query-permissions.md).
Jika Anda menerima kesalahan “Gunung es tidak dapat mengakses sumber daya yang diminta” ketika Anda mencoba menjalankan kueri, buka AWS Lake Formation konsol dan pastikan bahwa Anda telah memberikan diri Anda izin pada katalog keranjang tabel dan database (namespace) yang Anda buat. Jangan tentukan tabel saat memberikan izin ini. Untuk informasi selengkapnya, lihat [Memberikan izin Lake Formation di atas meja atau database](grant-permissions-tables.md#grant-lf-table). 

## Menanyakan tabel metadata dengan Amazon Redshift
<a name="metadata-tables-bucket-integration-redshift"></a>

Setelah [mengintegrasikan bucket tabel S3 AWS terkelola](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html) dengan layanan AWS analitik, lakukan hal berikut:
+ [Buat tautan sumber daya](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html#database-link-tables) ke namespace tabel metadata Anda (biasanya). `b_general_purpose_bucket_name` 
+ Pastikan untuk mengelilingi nama namespace tabel metadata Anda dalam tanda kutip (`"`) atau backticks (```), jika tidak, kueri mungkin tidak berfungsi. 

Setelah selesai, Anda dapat mulai menanyakan tabel metadata Anda di konsol Amazon Redshift. Untuk informasi selengkapnya, lihat [Mengakses tabel Amazon S3 dengan Amazon Redshift](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-redshift.html).

## Menanyakan tabel metadata dengan Amazon EMR
<a name="metadata-tables-bucket-integration-emr"></a>

Untuk menanyakan tabel metadata Anda menggunakan Amazon EMR, Anda membuat klaster EMR Amazon yang dikonfigurasi Apache Iceberg dan terhubung ke tabel metadata Anda menggunakan. Apache Spark Anda dapat mengaturnya dengan mengintegrasikan bucket tabel S3 AWS terkelola dengan layanan AWS analitik atau menggunakan Katalog Tabel Amazon S3 sumber terbuka untuk katalog klien. Iceberg

**catatan**  
Saat menggunakan EMR Apache Spark Amazon atau mesin pihak ketiga lainnya untuk menanyakan tabel metadata Anda, sebaiknya gunakan titik akhir REST Amazon S3 Tables. Iceberg Kueri Anda mungkin tidak berhasil berjalan jika Anda tidak menggunakan titik akhir ini. Untuk informasi selengkapnya, lihat [Mengakses tabel menggunakan endpoint Amazon S3 Iceberg REST Tables](s3-tables-integrating-open-source.md).

 Untuk informasi selengkapnya, lihat [Mengakses tabel Amazon S3 dengan Amazon EMR](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-emr.html).

# Kueri tabel metadata dengan mesin kueri sumber terbuka
<a name="metadata-tables-bucket-integration-open-source"></a>

Anda dapat menanyakan tabel metadata terkelola S3 Anda dengan menggunakan mesin kueri sumber terbuka, seperti. Apache Spark Saat menggunakan EMR Apache Spark Amazon atau mesin pihak ketiga lainnya untuk menanyakan tabel metadata Anda, sebaiknya gunakan titik akhir REST Amazon S3 Tables. Iceberg Kueri Anda mungkin tidak berhasil berjalan jika Anda tidak menggunakan titik akhir ini. Untuk informasi selengkapnya, lihat [Mengakses tabel menggunakan endpoint Amazon S3 Iceberg REST Tables](s3-tables-integrating-open-source.md).

# Mengoptimalkan kinerja kueri tabel metadata
<a name="metadata-tables-optimizing-query-performance"></a>

Karena Metadata S3 didasarkan pada format Apache Iceberg tabel, Anda dapat mengoptimalkan kinerja dan [biaya](#metadata-tables-optimizing-query-performance) kueri tabel jurnal Anda dengan menggunakan rentang waktu tertentu.

Misalnya, kueri SQL berikut memberikan tingkat sensitivitas objek baru dalam bucket tujuan umum S3:

```
SELECT key, object_tags['SensitivityLevel'] 
FROM "b_general-purpose-bucket-name"."journal"
WHERE record_type = 'CREATE'
GROUP BY object_tags['SensitivityLevel']
```

Kueri ini memindai seluruh tabel jurnal, yang mungkin membutuhkan waktu lama untuk dijalankan. Untuk meningkatkan kinerja, Anda dapat menyertakan `record_timestamp` kolom untuk fokus pada rentang waktu tertentu. **Kami juga merekomendasikan untuk menggunakan nama tabel yang memenuhi syarat, yang dapat Anda temukan di konsol Amazon S3 pada halaman detail konfigurasi metadata pada tab Metadata bucket tujuan umum.** Berikut adalah versi terbaru dari kueri sebelumnya yang melihat objek baru dari bulan lalu:

```
SELECT key, object_tags['SensitivityLevel'] 
FROM b_general-purpose-bucket-name"."aws-s3.b_general-purpose-bucket-name.journal"
WHERE record_type = 'CREATE'
AND record_timestamp > (CURRENT_TIMESTAMP – interval '1' month)
GROUP BY object_tags['SensitivityLevel']
```

Untuk meningkatkan kinerja kueri pada tabel inventaris, pastikan Anda melakukan kueri hanya pada kolom minimum yang Anda butuhkan. 

# Contoh kueri tabel metadata
<a name="metadata-tables-example-queries"></a>

Contoh berikut menunjukkan bagaimana Anda bisa mendapatkan informasi jenis yang berbeda dari tabel Metadata S3 Anda dengan menggunakan kueri SQL standar.

Ingat saat menggunakan contoh-contoh ini:
+ Contohnya ditulis untuk bekerja dengan Amazon Athena. Anda mungkin harus memodifikasi contoh untuk bekerja dengan mesin kueri yang berbeda.
+ Pastikan Anda memahami cara [mengoptimalkan kueri Anda](metadata-tables-optimizing-query-performance.md).
+ Ganti `b_general-purpose-bucket-name` dengan nama namespace Anda. 
+ Untuk daftar lengkap kolom yang didukung, lihat [Skema tabel jurnal Metadata S3](metadata-tables-schema.md) dan[Skema tabel inventaris langsung Metadata S3](metadata-tables-inventory-schema.md). 

**Contents**
+ [Contoh pertanyaan tabel jurnal](#metadata-tables-example-queries-journal-tables)
  + [Menemukan objek dengan ekstensi file](#metadata-tables-example-query-object-pattern)
  + [Daftar penghapusan objek](#metadata-tables-example-query-delete-events)
  + [Daftar kunci AWS KMS enkripsi yang digunakan oleh objek Anda](#metadata-tables-example-query-objects-using-kms-key)
  + [Daftar objek yang tidak menggunakan kunci KMS](#metadata-tables-example-query-objects-not-using-kms-key)
  + [Daftar kunci AWS KMS enkripsi yang digunakan untuk `PUT` operasi dalam 7 hari terakhir](#metadata-tables-example-query-objects-using-kms-key-puts)
  + [Mencantumkan objek yang dihapus dalam 24 jam terakhir oleh Siklus Hidup S3](#metadata-tables-example-query-objects-deleted-lifecycle)
  + [Melihat metadata yang disediakan oleh Amazon Bedrock](#metadata-tables-example-query-bedrock)
  + [Memahami keadaan objek Anda saat ini](#metadata-tables-example-query-current-state)
+ [Contoh pertanyaan tabel inventaris](#metadata-tables-example-queries-inventory-tables)
  + [Menemukan kumpulan data yang menggunakan tag tertentu](#metadata-tables-example-query-datasets-specific-tags)
  + [Daftar objek yang tidak dienkripsi dengan SSE-KMS](#metadata-tables-example-query-objects-not-kms-encrypted)
  + [Daftar objek yang tidak dienkripsi](#metadata-tables-example-query-objects-not-encrypted)
  + [Daftar objek yang dihasilkan oleh Amazon Bedrock](#metadata-tables-example-query-objects-generated-bedrock)
  + [Rekonsiliasi tabel inventaris dengan tabel jurnal](#metadata-tables-example-query-generate-latest-inventory)
  + [Menemukan versi objek Anda saat ini](#metadata-tables-example-query-latest-version)
+ [Menggabungkan metadata kustom dengan tabel metadata S3](metadata-tables-join-custom-metadata.md)
+ [Memvisualisasikan data tabel metadata dengan Amazon Quick](metadata-tables-quicksight-dashboards.md)

## Contoh pertanyaan tabel jurnal
<a name="metadata-tables-example-queries-journal-tables"></a>

Anda dapat menggunakan contoh query berikut untuk query tabel jurnal Anda.

### Menemukan objek dengan ekstensi file
<a name="metadata-tables-example-query-object-pattern"></a>

Query berikut mengembalikan objek dengan ekstensi file tertentu (`.jpg`dalam hal ini):

```
SELECT key FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
WHERE key LIKE '%.jpg'
AND record_type = 'CREATE'
```

### Daftar penghapusan objek
<a name="metadata-tables-example-query-delete-events"></a>

Kueri berikut mengembalikan peristiwa penghapusan objek, termasuk Akun AWS ID atau prinsip AWS layanan yang membuat permintaan:

```
SELECT DISTINCT bucket, key, sequence_number, record_type, record_timestamp, requester, source_ip_address, version_id
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
WHERE record_type = 'DELETE';
```

### Daftar kunci AWS KMS enkripsi yang digunakan oleh objek Anda
<a name="metadata-tables-example-query-objects-using-kms-key"></a>

Query berikut mengembalikan ARNs kunci AWS Key Management Service (AWS KMS) mengenkripsi objek Anda:

```
SELECT DISTINCT kms_key_arn
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal";
```

### Daftar objek yang tidak menggunakan kunci KMS
<a name="metadata-tables-example-query-objects-not-using-kms-key"></a>

Kueri berikut mengembalikan objek yang tidak dienkripsi dengan AWS KMS kunci:

```
SELECT DISTINCT kms_key_arn
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
WHERE encryption_status NOT IN ('SSE-KMS', 'DSSE-KMS')
AND record_type = 'CREATE';
```

### Daftar kunci AWS KMS enkripsi yang digunakan untuk `PUT` operasi dalam 7 hari terakhir
<a name="metadata-tables-example-query-objects-using-kms-key-puts"></a>

Query berikut mengembalikan ARNs kunci AWS Key Management Service (AWS KMS) mengenkripsi objek Anda:

```
SELECT DISTINCT kms_key_arn 
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
WHERE record_timestamp > (current_date - interval '7' day)
AND kms_key_arn is NOT NULL;
```

### Mencantumkan objek yang dihapus dalam 24 jam terakhir oleh Siklus Hidup S3
<a name="metadata-tables-example-query-objects-deleted-lifecycle"></a>

Hasil kueri berikut mencantumkan objek yang kedaluwarsa pada hari terakhir oleh Siklus Hidup S3:

```
SELECT bucket, key, version_id, last_modified_date, record_timestamp, requester
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
WHERE requester = 's3.amazonaws.com'
AND record_type = 'DELETE' 
AND record_timestamp > (current_date - interval '1' day)
```

### Melihat metadata yang disediakan oleh Amazon Bedrock
<a name="metadata-tables-example-query-bedrock"></a>

Beberapa AWS layanan (seperti [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)), mengunggah objek ke Amazon S3. Anda dapat menanyakan metadata objek yang disediakan oleh layanan ini. Misalnya, kueri berikut menyertakan `user_metadata` kolom untuk menentukan apakah ada objek yang diunggah oleh Amazon Bedrock ke bucket tujuan umum:

```
SELECT DISTINCT bucket, key, sequence_number, record_type, record_timestamp, user_metadata
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
WHERE record_type = 'CREATE'
AND user_metadata['content-source'] = 'AmazonBedrock';
```

Jika Amazon Bedrock mengunggah objek ke bucket Anda, `user_metadata` kolom akan menampilkan metadata berikut yang terkait dengan objek dalam hasil kueri:

```
user_metadata
{content-additional-params -> requestid="CVK8FWYRW0M9JW65", signedContentSHA384="38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b", content-model-id -> bedrock-model-arn, content-source -> AmazonBedrock}
```

### Memahami keadaan objek Anda saat ini
<a name="metadata-tables-example-query-current-state"></a>

Kueri berikut dapat membantu Anda menentukan keadaan objek Anda saat ini. Kueri mengidentifikasi versi terbaru dari setiap objek, menyaring objek yang dihapus, dan menandai versi terbaru dari setiap objek berdasarkan nomor urut. Hasil diurutkan oleh`bucket`,`key`, dan `sequence_number` kolom.

```
WITH records_of_interest as (
   -- Start with a query that can narrow down the records of interest.
    SELECT * from "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal"
),

version_stacks as (
   SELECT *,
          -- Introduce a column called 'next_sequence_number', which is the next larger
          -- sequence_number for the same key version_id in sorted order.
          LEAD(sequence_number, 1) over (partition by (bucket, key, coalesce(version_id, '')) order by sequence_number ASC) as next_sequence_number
   from records_of_interest
),

-- Pick the 'tip' of each version stack triple: (bucket, key, version_id).
-- The tip of the version stack is the row of that triple with the largest sequencer.
-- Selecting only the tip filters out any row duplicates.
-- This isn't typical, but some events can be delivered more than once to the table
-- and include rows that might no longer exist in the bucket (since the
-- table contains rows for both extant and extinct objects).
-- In the next subquery, eliminate the rows that contain deleted objects.
current_versions as (
    SELECT * from version_stacks where next_sequence_number is NULL
),

-- Eliminate the rows that are extinct from the bucket by filtering with
-- record_type. An object version has been deleted from the bucket if its tip is
-- record_type==DELETE.
existing_current_versions as (
    SELECT * from current_versions where not (record_type = 'DELETE' and is_delete_marker = FALSE)
),

-- Optionally, to determine which of several object versions is the 'latest',
-- you can compare their sequence numbers. A version_id is the latest if its
-- tip's sequencer is the largest among all other tips in the same key.
with_is_latest as (
    SELECT *,
           -- Determine if the sequence_number of this row is the same as the largest sequencer for the key that still exists.
           sequence_number = (MAX(sequence_number) over (partition by (bucket, key))) as is_latest_version
    FROM existing_current_versions
)

SELECT * from with_is_latest
ORDER BY bucket, key, sequence_number;
```

## Contoh pertanyaan tabel inventaris
<a name="metadata-tables-example-queries-inventory-tables"></a>

Anda dapat menggunakan contoh kueri berikut untuk menanyakan tabel inventaris Anda.

### Menemukan kumpulan data yang menggunakan tag tertentu
<a name="metadata-tables-example-query-datasets-specific-tags"></a>

Query berikut mengembalikan dataset yang menggunakan tag tertentu:

```
SELECT * 
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."inventory"
WHERE object_tags['key1'] = 'value1'
AND object_tags['key2'] = 'value2';
```

### Daftar objek yang tidak dienkripsi dengan SSE-KMS
<a name="metadata-tables-example-query-objects-not-kms-encrypted"></a>

Kueri berikut mengembalikan objek yang tidak dienkripsi dengan SSE-KMS:

```
SELECT key, encryption_status 
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."inventory"
WHERE encryption_status != 'SSE-KMS';
```

### Daftar objek yang tidak dienkripsi
<a name="metadata-tables-example-query-objects-not-encrypted"></a>

Kueri berikut mengembalikan objek yang tidak dienkripsi:

```
SELECT bucket, key, version_id  
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."inventory"
WHERE encryption_status IS NULL;
```

### Daftar objek yang dihasilkan oleh Amazon Bedrock
<a name="metadata-tables-example-query-objects-generated-bedrock"></a>

Kueri berikut mencantumkan objek yang dihasilkan oleh Amazon Bedrock:

```
SELECT DISTINCT bucket, key, sequence_number, user_metadata
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."inventory"
WHERE user_metadata['content-source'] = 'AmazonBedrock';
```

### Rekonsiliasi tabel inventaris dengan tabel jurnal
<a name="metadata-tables-example-query-generate-latest-inventory"></a>

Kueri berikut menghasilkan inventory-table-like daftar yang up to date dengan konten bucket saat ini. Lebih tepatnya, daftar yang dihasilkan menggabungkan snapshot terbaru dari tabel inventaris dengan peristiwa terbaru di tabel jurnal. 

Agar kueri ini menghasilkan hasil yang paling akurat, baik jurnal maupun tabel inventaris harus dalam status Aktif.

Kami merekomendasikan penggunaan kueri ini untuk ember tujuan umum yang berisi kurang dari satu miliar (10^9) objek.

Contoh kueri ini menerapkan penyederhanaan berikut untuk hasil daftar (dibandingkan dengan tabel inventaris):
+ **Kelalaian kolom** — Kolom `bucket``is_multipart`,`encryption_status`,,`is_bucket_key_enabled`,`kms_key_arn`, dan `checksum_algorithm` bukan bagian dari hasil akhir. Menjaga set kolom opsional seminimal mungkin meningkatkan kinerja.
+ **Penyertaan semua catatan** - Kueri mengembalikan semua kunci objek dan versi, termasuk versi null (dalam bucket yang tidak berversi atau ditangguhkan versi) dan menghapus penanda. Untuk contoh cara memfilter hasil agar hanya menampilkan kunci yang Anda minati, lihat `WHERE` klausa di akhir kueri.
+ **Rekonsiliasi yang dipercepat** - Kueri dapat, dalam kasus yang jarang terjadi, melaporkan sementara objek yang tidak lagi ada di ember. Perbedaan tersebut dihilangkan segera setelah snapshot berikutnya dari tabel inventaris tersedia. Perilaku ini merupakan tradeoff antara kinerja dan akurasi.

Untuk menjalankan kueri ini di Amazon Athena, pastikan untuk memilih `s3tablescatalog/aws-s3` katalog dan `b_general-purpose-bucket-name` database untuk konfigurasi metadata bucket tujuan umum yang berisi jurnal dan tabel inventaris Anda.

```
WITH inventory_time_cte AS (
    SELECT COALESCE(inventory_time_from_property, inventory_time_default) AS inventory_time FROM
    (
      SELECT * FROM
        (VALUES (TIMESTAMP '2024-12-01 00:00')) AS T (inventory_time_default)
      LEFT OUTER JOIN
        (
         SELECT from_unixtime(CAST(value AS BIGINT) / 1000.0) AS inventory_time_from_property FROM "journal$properties"
         WHERE key = 'aws.s3metadata.oldest-uncoalesced-record-timestamp' LIMIT 1
        )
      ON TRUE
    )
),

working_set AS (
    SELECT
        key,
        sequence_number,
        version_id,
        is_delete_marker,
        size,
        COALESCE(last_modified_date, record_timestamp) AS last_modified_date,
        e_tag,
        storage_class,
        object_tags,
        user_metadata,
        (record_type = 'DELETE' AND NOT COALESCE(is_delete_marker, FALSE)) AS _is_perm_delete
    FROM journal j
    CROSS JOIN inventory_time_cte t
    WHERE j.record_timestamp > (t.inventory_time - interval '15' minute)

    UNION ALL

    SELECT
        key,
        sequence_number,
        version_id,
        is_delete_marker,
        size,
        last_modified_date,
        e_tag,
        storage_class,
        object_tags,
        user_metadata,
        FALSE AS _is_perm_delete
    FROM inventory i
),

updated_inventory AS (
    SELECT * FROM (
        SELECT *,
            MAX(sequence_number) OVER (PARTITION BY key, version_id) AS _supremum_sn
        FROM working_set
    )
    WHERE sequence_number = _supremum_sn
)

SELECT
    key,
    sequence_number,
    version_id,
    is_delete_marker,
    size,
    last_modified_date,
    e_tag,
    storage_class,
    object_tags,
    user_metadata
FROM updated_inventory
-- This filter omits only permanent deletes from the results. Delete markers will still be shown.
WHERE NOT _is_perm_delete
-- You can add additional filters here. Examples:
--    AND object_tags['department'] = 'billing'
--    AND starts_with(key, 'reports/')
ORDER BY key ASC, sequence_number DESC;
```

### Menemukan versi objek Anda saat ini
<a name="metadata-tables-example-query-latest-version"></a>

Kueri berikut menggunakan tabel inventaris untuk menghasilkan tabel keluaran baru yang menunjukkan versi objek mana yang saat ini. Tabel keluaran sengaja mirip dengan laporan Inventaris S3. Tabel output mencakup `is_latest` bidang, yang menunjukkan apakah suatu objek adalah versi saat ini. `is_latest`Bidang ini setara dengan **IsLatest**bidang dalam [laporan Inventaris S3](storage-inventory.md#storage-inventory-contents). 

Kueri ini berfungsi untuk bucket tujuan umum dengan Pembuatan Versi [S3 dalam status berkemampuan versi atau ditangguhkan](Versioning.md) versi. 

**Prasyarat**  
Kueri mengeluarkan hasil ke tabel S3 baru untuk mendukung kueri lebih lanjut dan untuk kinerja yang lebih tinggi dibandingkan baris keluaran di layar. Oleh karena itu, sebelum menjalankan kueri ini, pastikan Anda telah memenuhi kondisi berikut. Jika Anda memilih untuk tidak menampilkan hasil ke tabel baru, Anda dapat melewati langkah-langkah ini. 
+ Anda harus memiliki keranjang tabel yang dikelola pelanggan dengan namespace yang ada sebagai tempat untuk menampilkan tabel baru. Untuk informasi selengkapnya, lihat [Membuat ember meja](s3-tables-buckets-create.md) dan [Membuat namespace](s3-tables-namespace-create.md). 
+ Untuk menanyakan tabel keluaran baru Anda, Anda harus menyiapkan metode akses untuk menanyakannya. Untuk informasi selengkapnya, lihat [Mengakses data tabel](s3-tables-access.md). Jika Anda ingin menanyakan tabel keluaran dengan layanan AWS analitik seperti Amazon Athena, keranjang tabel yang dikelola pelanggan Anda harus terintegrasi dengan layanan analitik. AWS Untuk informasi selengkapnya, lihat [Integrasi Amazon S3 Tabel dengan ikhtisar layanan AWS analitik](s3-tables-integration-overview.md). 

Untuk menggunakan kueri ini, ganti `amzn-s3-demo-table-bucket` dengan nama bucket tabel yang dikelola pelanggan yang ada di mana Anda ingin tabel keluaran baru dibuat. Ganti *`existing_namespace`* dengan nama namespace tempat Anda ingin tabel keluaran dibuat di bucket tabel Anda. Ganti *`new_table`* dengan nama yang ingin Anda gunakan untuk tabel output. Pastikan bahwa nama tabel output Anda mengikuti [aturan penamaan tabel](s3-tables-buckets-naming.md#naming-rules-table).

Untuk menjalankan kueri ini di Amazon Athena, pastikan untuk memilih `s3tablescatalog/aws-s3` katalog dan `b_general-purpose-bucket-name` database untuk konfigurasi metadata bucket tujuan umum yang berisi tabel inventaris Anda. 

```
-- If you don't want to output the results to a new table, remove the following two lines 
-- (everything before the WITH clause). 
CREATE TABLE "s3tablescatalog/amzn-s3-demo-table-bucket"."existing_namespace"."new_table" 
as (
WITH 
my_inventory AS (
  SELECT 
        bucket,
        key,
        version_id,
        sequence_number,
        is_delete_marker,
        size,
        last_modified_date,
        storage_class
  FROM inventory
-- For prefix filtering, use a WHERE clause with % at the end.
--     WHERE key LIKE 'prefix%'
  ),
 
inventory_with_is_latest as (
SELECT *,
       ROW_NUMBER() OVER (
         PARTITION BY key 
         ORDER BY sequence_number DESC
       ) = 1 AS is_latest
FROM my_inventory
    )

SELECT
        bucket,
        key,
        version_id,
        sequence_number,
        is_delete_marker,
        size,
        last_modified_date,
        storage_class,
        is_latest

FROM inventory_with_is_latest

-- If you want only the current version of each key, uncomment the following WHERE clause.
-- WHERE is_latest = TRUE
-- If you aren't outputting the results to a new table, remove the next line: 
);
```

# Menggabungkan metadata kustom dengan tabel metadata S3
<a name="metadata-tables-join-custom-metadata"></a>

Anda dapat menganalisis data di seluruh tabel metadata AWS terkelola dan tabel metadata pelanggan (dikelola sendiri). Dengan menggunakan `JOIN` operator SQL standar, Anda dapat melakukan kueri data dari berbagai sumber ini.

Contoh query SQL berikut menemukan catatan yang cocok antara tabel jurnal AWS terkelola (`"journal"`) dan tabel metadata yang dikelola sendiri (). `my_self_managed_metadata_table` Kueri juga memfilter informasi berdasarkan `CREATE` peristiwa, yang menunjukkan bahwa objek baru (atau versi baru objek) ditulis ke ember. (Untuk informasi lebih lanjut, lihat[Skema tabel jurnal Metadata S3](metadata-tables-schema.md).)

```
SELECT *
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."journal" a
JOIN "my_namespace"."my_self_managed_metadata_table" b
ON a.bucket = b.bucket AND a.key = b.key AND a.version_id = b.version_id
WHERE a.record_type = 'CREATE';
```

Contoh kueri SQL berikut menemukan catatan yang cocok antara tabel inventaris AWS terkelola (`"inventory"`) dan tabel metadata yang dikelola sendiri (): `my_self_managed_metadata_table`

```
SELECT *
FROM "s3tablescatalog/aws-s3"."b_general-purpose-bucket-name"."inventory" a
JOIN "my_namespace"."my_self_managed_metadata_table" b
ON a.bucket = b.bucket AND a.key = b.key AND a.version_id = b.version_id;
```

# Memvisualisasikan data tabel metadata dengan Amazon Quick
<a name="metadata-tables-quicksight-dashboards"></a>

Dengan Amazon Quick, Anda dapat membuat dasbor interaktif untuk menganalisis dan memvisualisasikan hasil kueri SQL tentang tabel metadata terkelola S3 Anda. Dasbor cepat dapat membantu Anda memantau statistik, melacak perubahan, dan mendapatkan wawasan operasional tentang tabel metadata Anda.

Dasbor tentang tabel jurnal Anda mungkin menunjukkan kepada Anda:
+ Berapa persentase unggahan objek dibandingkan dengan penghapusan?
+ Objek mana yang dihapus oleh Siklus Hidup S3 dalam 24 jam terakhir?
+ Alamat IP mana `PUT` permintaan terbaru berasal?

Dasbor tentang tabel inventaris Anda mungkin menunjukkan kepada Anda:
+ Berapa banyak objek di kelas penyimpanan yang berbeda?
+ Berapa persentase data penyimpanan Anda adalah objek kecil dibandingkan dengan objek besar?
+ Jenis objek apa yang ada di ember saya?

Setelah [mengintegrasikan bucket tabel S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html) dengan layanan AWS analitik, Anda dapat membuat kumpulan data dari tabel metadata dan bekerja dengannya di Amazon Quick menggunakan SPICE atau mengarahkan kueri SQL dari mesin kueri Anda. Quick mendukung Amazon Athena dan Amazon Redshift sebagai sumber data.

Untuk informasi selengkapnya, lihat [Memvisualisasikan data tabel dengan Amazon Quick](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-quicksight.html).