

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

# Daftarkan katalog bucket tabel S3 dan kueri Tabel dari Athena
<a name="gdc-register-s3-table-bucket-cat"></a>

Bucket tabel Amazon S3 adalah jenis bucket di Amazon S3 yang dibuat khusus untuk menyimpan data tabular di tabel Apache Iceberg. Bucket tabel mengotomatiskan tugas manajemen tabel seperti pemadatan, manajemen snapshot, dan pengumpulan sampah untuk terus mengoptimalkan kinerja kueri dan meminimalkan biaya. Baik Anda baru memulai, atau memiliki ribuan tabel di lingkungan Gunung Es Anda, bucket tabel menyederhanakan data lake pada skala apa pun. Untuk informasi selengkapnya, lihat [Bucket tabel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

## Pertimbangan dan batasan
<a name="gdc-register-s3-table-consideration"></a>
+ Semua operasi DDL yang didukung untuk tabel Iceberg didukung untuk Tabel S3 dengan pengecualian berikut:
  + `ALTER TABLE RENAME`,`CREATE VIEW`, dan `ALTER DATABASE` tidak didukung.
  + `OPTIMIZE`dan `VACUUM` - Anda dapat mengelola manajemen pemadatan dan snapshot di S3. Untuk informasi selengkapnya, lihat [dokumentasi pemeliharaan Tabel S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html).
+ Kueri DDL pada Tabel S3 yang terdaftar sebagai sumber data Athena tidak didukung.
+ Penggunaan kembali hasil kueri tidak didukung.
+ Dalam kelompok kerja dengan SSE-KMS, enkripsi CSE-KMS diaktifkan, Anda tidak dapat menjalankan operasi tulis seperti`INSERT`,,, atau pada Tabel S3. `UPDATE` `DELETE` `MERGE`
+ Dalam kelompok kerja dengan opsi S3 Requester Pays diaktifkan, Anda tidak dapat menjalankan operasi DMLpada Tabel S3.

## Kueri Tabel S3 dari Athena
<a name="gdc-register-s3-table-prereq-setup"></a>

**Selesaikan langkah-langkah prasyarat ini sebelum Anda menanyakan Tabel S3 di Athena**

1. Buat ember meja S3. Untuk informasi selengkapnya, lihat [Membuat bucket tabel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. 

1. Pastikan integrasi bucket meja Anda berhasil. AWS Glue Data Catalog Untuk izin dan langkah penyiapan yang diperlukan, lihat [Prasyarat untuk integrasi Tabel S3 dan Mengaktifkan integrasi Tabel S3](https://docs.aws.amazon.com/glue/latest/dg/s3tables-catalog-prerequisites.html) [dengan Katalog Data Glue di Panduan](https://docs.aws.amazon.com/glue/latest/dg/enable-s3-tables-catalog-integration.html) Pengembang. AWS Glue 

1. Untuk prinsipal yang Anda gunakan untuk menjalankan kueri dengan Athena, berikan izin pada katalog Tabel S3 menggunakan salah satu pendekatan berikut: 

   **Opsi 1: Gunakan izin IAM**

   Saat menggunakan kontrol akses IAM, prinsipal Anda memerlukan izin pada AWS Glue Data Catalog sumber daya dan sumber daya Amazon S3 Tabel.

   Daftar berikut berisi semua `s3tables` izin yang diperlukan untuk melakukan operasi DDL atau DHTML yang didukung terhadap Tabel S3 Anda di Athena:
   + `s3tables:GetTableBucket`
   + `s3tables:GetNamespace`
   + `s3tables:GetTable`
   + `s3tables:GetTableData`
   + `s3tables:PutTableData`
   + `s3tables:ListNamespaces`
   + `s3tables:ListTables`
   + `s3tables:DeleteNamespace`
   + `s3tables:DeleteTable`
   + `s3tables:CreateNamespace`
   + `s3tables:CreateTable`
   + `s3tables:UpdateTableMetadataLocation`

   Terapkan izin ini ke bucket tabel S3 tertentu dan sumber daya Tabel S3 atau gunakan `*` sebagai sumber daya untuk memberikan akses ke semua bucket dan tabel tabel di akun Anda. Izin ini dapat digabungkan dengan kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)terkelola untuk mengaktifkan fungsionalitas lengkap.

   **Opsi 2: Gunakan izin Lake Formation**

   Atau, untuk mengaktifkan kontrol akses berbutir halus, Anda dapat memberikan izin Lake Formation pada katalog Tabel S3, baik melalui konsol Lake Formation atau. AWS CLI Ini memerlukan pendaftaran bucket tabel S3 Anda sebagai lokasi data Lake Formation. Untuk informasi selengkapnya, lihat [Membuat katalog Tabel Amazon S3 AWS Glue Data Catalog di Panduan](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) Pengembang Lake Formation.

------
#### [ Konsol Manajemen AWS ]

   1. Buka AWS Lake Formation konsol di [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) dan masuk sebagai administrator danau data. Untuk informasi selengkapnya tentang cara membuat administrator data lake, lihat [Membuat administrator data lake](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin).

   1. **Di panel navigasi, pilih **Izin data** lalu pilih Hibah.** 

   1. Pada halaman **Izin Hibah**, di bawah **Prinsipal**, pilih prinsipal yang ingin Anda gunakan untuk mengirimkan kueri dari Athena.

   1. Di bawah **LF-tag atau sumber katalog, pilih Sumber daya Katalog** **Data Bernama**.

   1. Untuk **Katalog**, pilih katalog data lem yang Anda buat dari integrasi bucket meja Anda. Misalnya *<accoundID>* ,:s3tablescatalog/. *amzn-s3-demo-bucket*

   1. Untuk **izin Katalog**, pilih **Super**.

   1. Pilih**Izin**.

------
#### [ AWS CLI ]

   Jalankan perintah berikut dengan peran administrator danau data Lake Formation untuk memberikan akses ke kepala sekolah yang Anda gunakan untuk mengirimkan kueri dari Athena. 

   ```
   aws lakeformation grant-permissions \
   --region <region (Example,us-east-1)> \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "<user or role ARN (Example, arn:aws:iam::<Account ID>:role/ExampleRole>"
       },
       "Resource": {
           "Catalog": {
               "Id":"<Account ID>:s3tablescatalog/amzn-s3-demo-bucket"
           }
       },
       "Permissions": ["ALL"]
   }'
   ```

------

**Kirim kueri untuk Tabel S3**

1. Kirim `CREATE DATABASE` kueri dari Athena dengan pengguna/peran yang diberikan di atas. Dalam contoh ini, `s3tablescatalog` adalah Katalog Data Glue induk yang dibuat dari integrasi dan ` s3tablescatalog/amzn-s3-demo-bucket` merupakan Katalog Data Glue anak yang dibuat untuk setiap bucket tabel S3. Ada dua cara di mana Anda dapat menanyakan.

------
#### [ Option 1 ]

   Tentukan anak Glue Data Catalog (`s3tablescatalog/amzn-s3-demo-bucket`) langsung dari konsol atau AWS CLI.

   **Menggunakan Konsol Manajemen AWS**

   1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Di editor kueri, masukkan kueri seperti`CREATE DATABASE test_namespace`.

   **Menggunakan AWS CLI**

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \ 
   --query-string 'CREATE DATABASE `test_namespace`' \ 
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket"}' \
   --work-group "primary"
   ```

------
#### [ Option 2 ]

   Buat katalog data Athena dari Katalog Data Glue anak di konsol Athena dan tentukan sebagai katalog dalam kueri. Untuk informasi selengkapnya, lihat [Daftarkan katalog bucket tabel S3 sebagai sumber data Athena](#gdc-register-s3-table-console-steps).

------

1. Dengan database yang Anda buat pada langkah sebelumnya, gunakan `CREATE TABLE` untuk membuat tabel. Contoh berikut membuat tabel dalam *`test_namespace`* database yang sebelumnya Anda buat di katalog `s3tablescatalog/amzn-s3-demo-bucket` Glue.

------
#### [ Konsol Manajemen AWS ]

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Untuk **Database**, pilih **test\$1namespace**.

   1. Di editor kueri, jalankan kueri berikut.

      ```
      CREATE TABLE daily_sales (
              sale_date date,
              product_category
              string, sales_amount double)
      PARTITIONED BY (month(sale_date))
      TBLPROPERTIES ('table_type' = 'iceberg')
      ```

------
#### [ AWS CLI ]

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \
   --query-string "CREATE TABLE daily_sales (
           sale_date date,
           product_category
           string, sales_amount double)
   PARTITIONED BY (month(sale_date))
   TBLPROPERTIES ('table_type' = 'iceberg')" \
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket", "Database":"test_namespace"}' \
   --work-group "primary"
   ```

------

1. Masukkan data ke dalam tabel yang Anda buat pada langkah sebelumnya.

------
#### [ Konsol Manajemen AWS ]

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Untuk **Database**, pilih **test\$1namespace**.

   1. Di editor kueri, jalankan kueri berikut.

      ```
      INSERT INTO daily_sales
      VALUES 
          (DATE '2024-01-15', 'Laptop', 900.00),
          (DATE '2024-01-15', 'Monitor', 250.00),
          (DATE '2024-01-16', 'Laptop', 1350.00),
          (DATE '2024-02-01', 'Monitor', 300.00);
      ```

------
#### [ AWS CLI ]

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \
   --query-string "INSERT INTO \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   VALUES 
   (DATE '2024-01-15', 'Laptop', 900.00),
   (DATE '2024-01-15', 'Monitor', 250.00),
   (DATE '2024-01-16', 'Laptop', 1350.00),
   (DATE '2024-02-01', 'Monitor', 300.00)"\ 
   --work-group "primary"
   ```

------

1. Setelah memasukkan data ke dalam tabel, Anda dapat menanyakannya.

------
#### [ Konsol Manajemen AWS ]

   1. Di navigasi kiri, untuk **nama sumber data**, pilih **AwsDataCatalog**.

   1. Untuk **Katalog**, pilih ***amzn-s3-demo-bucket*s3tablescatalog/**.

   1. Untuk **Database**, pilih **test\$1namespace**.

   1. Di editor kueri, jalankan kueri berikut.

      ```
      SELECT
          product_category,
          COUNT(*) AS units_sold,
          SUM(sales_amount) AS total_revenue,
          AVG(sales_amount) AS average_price
      FROM
          daily_sales
      WHERE
          sale_date BETWEEN DATE '2024-02-01' 
                       AND DATE '2024-02-29'
      GROUP BY
          product_category
      ORDER BY
          total_revenue DESC
      ```

------
#### [ AWS CLI ]

   Jalankan perintah berikut.

   ```
   aws athena start-query-execution \
   --query-string "SELECT product_category,
       COUNT(*) AS units_sold,
       SUM(sales_amount) AS total_revenue,
       AVG(sales_amount) AS average_price
   FROM \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   WHERE sale_date BETWEEN DATE '2024-02-01' AND DATE '2024-02-29'
   GROUP BY product_category
   ORDER BY total_revenue DESC"\
   --work-group "primary"
   ```

------

## Buat Tabel S3 di Athena
<a name="gdc-create-s3-tables-athena"></a>

Athena mendukung pembuatan tabel di ruang nama Tabel S3 yang ada atau ruang nama yang dibuat di Athena dengan pernyataan. `CREATE DATABASE` Untuk membuat Tabel S3 dari Athena, sintaksnya sama seperti saat [Anda membuat tabel Iceberg biasa](querying-iceberg-creating-tables.md) kecuali Anda tidak menentukan, seperti yang ditunjukkan `LOCATION` pada contoh berikut.

```
CREATE TABLE
[db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] )
[PARTITIONED BY (col_name | transform, ... )]
[TBLPROPERTIES ([, property_name=property_value] )]
```

Anda juga dapat membuat Tabel S3 menggunakan pernyataan CREATE TABLE AS SELECT (CTAS). Untuk informasi selengkapnya, lihat [CTAS untuk Tabel S3](#ctas-s3-tables).

## Daftarkan katalog bucket tabel S3 sebagai sumber data Athena
<a name="gdc-register-s3-table-console-steps"></a>

Untuk mendaftarkan katalog bucket tabel S3 dengan konsol Athena, lakukan langkah-langkah berikut.

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Di panel navigasi, pilih **Sumber data dan katalog**.

1. Pada halaman **Sumber data dan katalog**, pilih **Buat sumber data**.

1. Untuk **Pilih sumber data**, pilih **Amazon S3** -. AWS Glue Data Catalog

1. Di **AWS Glue Data Catalog**bagian ini, untuk **Akun sumber data**, pilih **AWS Glue Data Catalog di akun ini**.

1. Untuk **Buat tabel atau daftarkan katalog**, pilih **Daftarkan AWS Glue Katalog baru**.

1. Di bagian **Rincian sumber data****, untuk nama sumber data**, masukkan nama yang ingin Anda gunakan untuk menentukan sumber data dalam kueri SQL Anda atau gunakan nama default yang dihasilkan.

1. Untuk **Katalog**, pilih **Jelajahi** untuk mencari daftar AWS Glue katalog di akun yang sama. [Jika Anda tidak melihat katalog yang ada, buat katalog di AWS Glue konsol.](https://console.aws.amazon.com/glue/) 

1. **Dalam kotak dialog **Jelajahi AWS Glue katalog**, pilih katalog yang ingin Anda gunakan, lalu pilih Pilih.**

1. (Opsional) Untuk **Tag**, masukkan key/value pasangan apa pun yang ingin Anda kaitkan dengan sumber data.

1. Pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, verifikasi bahwa informasi yang Anda masukkan sudah benar, lalu pilih **Buat sumber data**.

## CTAS untuk Tabel S3
<a name="ctas-s3-tables"></a>

Amazon Athena sekarang mendukung operasi CREATE TABLE AS SELECT (CTAS) untuk Tabel S3. Fitur ini memungkinkan Anda membuat Tabel S3 baru berdasarkan hasil kueri SELECT. 

Saat membuat kueri CTAS untuk Tabel S3, ada beberapa perbedaan penting dibandingkan dengan tabel Athena standar:
+ Anda harus menghilangkan properti lokasi karena Tabel S3 secara otomatis mengelola lokasi penyimpanannya sendiri.
+ `table_type`Properti defaultnya`ICEBERG`, jadi Anda tidak perlu menentukannya secara eksplisit dalam kueri Anda.
+ Jika Anda tidak menentukan format, sistem secara otomatis menggunakan `PARQUET` sebagai format default untuk data Anda.
+ Semua properti lainnya mengikuti sintaks yang sama seperti tabel Iceberg biasa.

Sebelum Anda membuat Tabel S3 menggunakan CTAS, pastikan Anda memiliki izin yang diperlukan yang dikonfigurasi di IAM atau. AWS Lake Formation Secara khusus, Anda memerlukan izin untuk membuat tabel di katalog Tabel S3. Tanpa izin ini, operasi CTAS Anda akan gagal.

**catatan**  
Jika kueri CTAS gagal, Anda mungkin harus menghapus tabel menggunakan [API Tabel S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-delete.html) sebelum mencoba menjalankan kembali kueri Anda. Anda tidak dapat menggunakan `DROP TABLE` pernyataan Athena untuk menghapus tabel yang sebagian dibuat oleh kueri. 

**Contoh**

```
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name"
WITH (
    format = 'PARQUET'
)
AS SELECT *
FROM source_table;
```