

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Registrieren Sie Bucket-Kataloge von S3-Tabellen und fragen Sie Tabellen von Athena ab
<a name="gdc-register-s3-table-bucket-cat"></a>

Tabellen-Buckets für Amazon S3 sind ein Bucket-Typ in Amazon S3, der speziell zum Speichern von Tabellendaten in Apache-Iceberg-Tabellen entwickelt wurde. Tabellen-Buckets automatisieren Tabellenverwaltungsaufgaben wie Komprimierung, Snapshot-Verwaltung und Garbage Collection, um die Abfrageleistung kontinuierlich zu optimieren und die Kosten zu minimieren. Egal, ob Sie gerade erst anfangen oder Tausende von Tabellen in Ihrer Iceberg-Umgebung haben, Tabellen-Buckets vereinfachen Data Lakes in jeder Größenordnung. Weitere Informationen finden Sie unter [Tabellen-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

## Überlegungen und Einschränkungen
<a name="gdc-register-s3-table-consideration"></a>
+ Alle DDL-Operationen, die für Iceberg-Tabellen unterstützt werden, werden für S3-Tabellen unterstützt, mit den folgenden Ausnahmen:
  + `ALTER TABLE RENAME`, `CREATE VIEW` und `ALTER DATABASE` werden nicht unterstützt.
  + `OPTIMIZE` und `VACUUM` – Sie können die Komprimierung und die Snapshot-Verwaltung in S3 verwalten. Weitere Informationen finden Sie unter [Wartungsdokumentation für S3-Tabellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html).
+ DDL-Abfragen auf S3-Tabellen, die als Athena-Datenquellen registriert sind, werden nicht unterstützt.
+ Die Wiederverwendung von Abfrageergebnissen wird nicht unterstützt.
+ In Arbeitsgruppen mit aktivierter SSE-KMS- und CSE-KMS-Verschlüsselung können Sie keine Schreibvorgänge wie `INSERT`, `UPDATE`, `DELETE` oder `MERGE` für S3-Tabellen ausführen.
+ In Arbeitsgruppen, in denen die Option „Zahlung durch den S3-Anforderer“ aktiviert ist, können Sie keine DML-Operationen für S3-Tabellen ausführen.

## S3-Tabellen von Athena abfragen
<a name="gdc-register-s3-table-prereq-setup"></a>

**Diese erforderlichen Schritte vor der Arbfrage von S3-Tabellen in Athena ausführen**

1. Erstellen eines S3-Tabellen-Buckets. Weitere Informationen erhalten Sie unter [Erstellen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html) im Benutzerhandbuch für Amazon Simple Storage Service. 

1. Stellen Sie sicher, dass die Integration Ihrer Tabellen-Buckets mit AWS Glue Data Catalog erfolgreich ist. Informationen zu den erforderlichen Berechtigungen und Einrichtungsschritten finden Sie unter [Voraussetzungen für die Integration von S3 Tables](https://docs.aws.amazon.com/glue/latest/dg/s3tables-catalog-prerequisites.html) und [Aktivieren der Integration von S3 Tables mit Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/enable-s3-tables-catalog-integration.html) im AWS Glue Entwicklerhandbuch.

1. Erteilen Sie für den Prinzipal, den Sie zum Ausführen von Abfragen mit Athena verwenden, Berechtigungen für den S3-Tabellenkatalog mit einem der folgenden Ansätze: 

   **Option 1: Verwenden Sie IAM-Berechtigungen**

   Wenn Sie die IAM-Zugriffskontrolle verwenden, benötigt Ihr Principal Berechtigungen sowohl für AWS Glue Data Catalog Ressourcen als auch für Amazon S3 Tables-Ressourcen.

   Die folgende Liste enthält alle `s3tables` Berechtigungen, die für die Ausführung unterstützter DDL- oder DML-Operationen für Ihre S3-Tabellen in Athena erforderlich sind:
   + `s3tables:GetTableBucket`
   + `s3tables:GetNamespace`
   + `s3tables:GetTable`
   + `s3tables:GetTableData`
   + `s3tables:PutTableData`
   + `s3tables:ListNamespaces`
   + `s3tables:ListTables`
   + `s3tables:DeleteNamespace`
   + `s3tables:DeleteTable`
   + `s3tables:CreateNamespace`
   + `s3tables:CreateTable`
   + `s3tables:UpdateTableMetadataLocation`

   Wenden Sie diese Berechtigungen auf bestimmte S3-Tabellen-Bucket- und S3-Tabellenressourcen an oder verwenden Sie `*` sie als Ressource, um Zugriff auf alle Tabellen-Buckets und Tabellen in Ihrem Konto zu gewähren. Diese Berechtigungen können mit der [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)verwalteten Richtlinie kombiniert werden, um die vollständige Funktionalität zu ermöglichen.

   **Option 2: Verwenden Sie Lake Formation Formation-Berechtigungen**

   Um eine differenzierte Zugriffskontrolle zu ermöglichen, können Sie Lake Formation Formation-Berechtigungen für den S3-Tabellenkatalog gewähren, entweder über die Lake Formation Formation-Konsole oder. AWS CLI Dazu müssen Sie Ihre S3-Tabellen-Buckets als Lake Formation Formation-Datenstandort registrieren. Weitere Informationen finden Sie unter [Erstellen eines Amazon S3 S3-Tables-Katalogs AWS Glue Data Catalog im](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) Lake Formation Developer Guide.

------
#### [ AWS-Managementkonsole ]

   1. Öffnen Sie die AWS Lake Formation Konsole unter [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) und melden Sie sich als Data Lake-Administrator an. Weitere Informationen zum Erstellen eines Data-Lake-Administrators finden Sie unter [Create a data lake administrator (Data-Lake-Administrator erstellen)](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin).

   1. Wählen Sie im Navigationsbereich **Data permissions (Datenberechtigungen)** und dann **Grant (Erteilen)** aus. 

   1. Wählen Sie auf der Seite **Berechtigungen erteilen** unter **Princizale** den Prinzipal aus, den Sie verwenden möchten, um eine Anfrage von Athena einzureichen.

   1. Wählen Sie unter **LF-Tags or catalog resources (LF-Tags oder Katalogressourcen)** die Option **Named Data Catalog resources (Benannte Datenkatalogressourcen)**.

   1. Wählen Sie für **Catalogs (Kataloge)** einen Glue-Datenkatalog, den Sie im Rahmen der Integration Ihres Tabellen-Buckets erstellt haben. Zum Beispiel :s3tablescatalog/{{<accoundID>}}. {{amzn-s3-demo-bucket}}

   1. Wählen Sie für **Katalogberechtigungen** die Option **Super aus.**

   1. Wählen Sie **Grant (Erteilen)**.

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

   Führen Sie den folgenden Befehl mit der Data Lake-Administratorrolle für Lake Formation aus, um Zugriff auf den Prinzipal zu gewähren, den Sie zum Einreichen von Abfragen von Athena verwenden. 

   ```
   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"]
   }'
   ```

------

**Abfragen für S3-Tabellen einreichen**

1. Reichen Sie eine `CREATE DATABASE`-Anfrage von Athena mit dem oben gewährten Benutzer/der oben gewährten Rolle ein. In diesem Beispiel ist `s3tablescatalog` der übergeordnete Glue-Datenkatalog erstellt aus der Integration und ` s3tablescatalog/{{amzn-s3-demo-bucket}}` ist der untergeordnete Glue-Datenkatalog, der für jeden S3-Tabellen-Bucket erstellt wurde. Es gibt zwei Möglichkeiten, Abfragen durchzuführen.

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

   Geben Sie den untergeordneten Glue-Datenkatalog (`s3tablescatalog/{{amzn-s3-demo-bucket}}`) direkt von der Konsole aus an oder AWS CLI.

   **Verwenden AWS-Managementkonsole**

   1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. Wählen Sie in der linken Navigationsleiste für **Datenquellenname** die Option **AwsDataCatalog**.

   1. Wählen Sie für **Catalog** die Option **{{amzn-s3-demo-bucket}}s3tablescatalog/** aus.

   1. Geben Sie im Abfrage-Editor eine Abfrage ein wie `CREATE DATABASE {{test_namespace}}`.

   **Verwenden AWS CLI**

   Führen Sie den folgenden Befehl aus.

   ```
   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 ]

   Erstellen Sie den Athena-Datenkatalog aus dem untergeordneten Glue-Datenkatalog in der Athena-Konsole und geben Sie ihn als Katalog in der Abfrage an. Weitere Informationen finden Sie unter [S3-Tabellen-Bucket-Kataloge als Athena-Datenquellen registrieren](#gdc-register-s3-table-console-steps).

------

1. Verwenden Sie die Datenbank, die Sie im vorherigen Schritt erstellt haben, und erstellen Sie mit `CREATE TABLE` eine Tabelle. Das folgende Beispiel erstellt eine Tabelle in der {{`test_namespace`}}-Datenbank, die Sie zuvor im `s3tablescatalog/{{amzn-s3-demo-bucket}}`-Glue-Katalog erstellt haben.

------
#### [ AWS-Managementkonsole ]

   1. Wählen Sie in der linken Navigationsleiste für **Datenquellenname** die Option **AwsDataCatalog**.

   1. Wählen Sie für **Catalog** die Option **{{amzn-s3-demo-bucket}}s3tablescatalog/** aus.

   1. Wählen Sie für **Datenbank** die Option **test\_namespace** aus.

   1. Führen Sie im Abfrage-Editor die folgende Abfrage aus.

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

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

   Führen Sie den folgenden Befehl aus.

   ```
   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. Fügen Sie Daten in die Tabelle ein, die Sie im vorherigen Schritt erstellt haben.

------
#### [ AWS-Managementkonsole ]

   1. Wählen Sie in der linken Navigationsleiste für **Datenquellenname** die Option. **AwsDataCatalog**

   1. Wählen Sie für **Catalog** die Option **{{amzn-s3-demo-bucket}}s3tablescatalog/** aus.

   1. Wählen Sie für **Datenbank** die Option **test\_namespace** aus.

   1. Führen Sie im Abfrage-Editor die folgende Abfrage aus.

      ```
      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 ]

   Führen Sie den folgenden Befehl aus.

   ```
   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. Nachdem Sie Daten in die Tabelle eingefügt haben, können Sie sie abfragen.

------
#### [ AWS-Managementkonsole ]

   1. Wählen Sie in der linken Navigationsleiste für **Datenquellenname** die Option. **AwsDataCatalog**

   1. Wählen Sie für **Catalog** die Option **{{amzn-s3-demo-bucket}}s3tablescatalog/** aus.

   1. Wählen Sie für **Datenbank** die Option **test\_namespace** aus.

   1. Führen Sie im Abfrage-Editor die folgende Abfrage aus.

      ```
      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 ]

   Führen Sie den folgenden Befehl aus.

   ```
   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"
   ```

------

## S3-Tabellen in Athena erstellen
<a name="gdc-create-s3-tables-athena"></a>

Athena unterstützt das Erstellen von Tabellen in vorhandenen S3-Tabellen-Namespaces oder in Athena erstellten Namespaces mit `CREATE DATABASE`-Anweisungen. Um eine S3-Tabelle aus Athena zu erstellen, ist die Syntax dieselbe wie beim [Erstellen einer regulären Iceberg-Tabelle](querying-iceberg-creating-tables.md), außer dass Sie `LOCATION` nicht angeben, wie im folgenden Beispiel gezeigt.

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

Sie können S3-Tabellen auch mit Anweisungen CREATE TABLE AS SELECT (CTAS) erstellen. Weitere Informationen finden Sie unter [CTAS für S3-Tabellen](#ctas-s3-tables).

## S3-Tabellen-Bucket-Kataloge als Athena-Datenquellen registrieren
<a name="gdc-register-s3-table-console-steps"></a>

Um S3-Tabellen-Bucket-Kataloge in der Athena-Konsole zu registrieren, führen Sie die folgenden Schritte aus.

1. Öffnen Sie die Athena-Konsole unter [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Wählen Sie im Navigationsbereich **Datenquellen und Kataloge** aus.

1. Wählen Sie auf der Seite **Datenquellen und Kataloge** die Option **Datenquellen erstellen** aus.

1. Wählen Sie für **Eine Datenquelle auswählen** die Option **Amazon S3 - AWS Glue Data Catalog**.

1. Wählen Sie im **AWS Glue Data Catalog**-Abschnitt für **Datenquellenkonto** die Option **AWS Glue Data Catalog in diesem Konto**.

1. Wählen **Sie für Tabelle erstellen oder Katalog registrieren die Option Neuen Katalog** **registrieren aus. AWS Glue **

1. Geben Sie im Abschnitt **Datenquellendetails** für **Datenquellenname** den Namen ein, den Sie verwenden möchten, um die Datenquelle in Ihren SQL-Abfragen anzugeben, oder verwenden Sie den generierten Standardnamen.

1. Wählen Sie unter **Katalog** die Option **Durchsuchen** aus, um nach einer Liste von AWS Glue Katalogen im selben Konto zu suchen. Wenn Ihnen keine Kataloge angezeigt werden, erstellen Sie einen in der [AWS Glue -Konsole](https://console.aws.amazon.com/glue/). 

1. **Wählen **Sie im Dialogfeld „ AWS Glue Kataloge durchsuchen**“ den Katalog aus, den Sie verwenden möchten, und klicken Sie dann auf „Auswählen“.**

1. (Optional) Geben Sie unter **Tags** alle key/value Paare ein, die Sie der Datenquelle zuordnen möchten.

1. Wählen Sie **Weiter** aus.

1. Überprüfen Sie auf der Seite **Überprüfen und erstellen** die Richtigkeit der eingegebenen Informationen und wählen Sie dann **Datenquelle erstellen**.

## CTAS für S3-Tabellen
<a name="ctas-s3-tables"></a>

Amazon Athena unterstützt jetzt Operationen CREATE TABLE AS SELECT (CTAS) für S3-Tabellen. Mit dieser Feature können Sie neue S3-Tabellen auf der Grundlage der Ergebnisse einer SELECT-Abfrage erstellen. 

Bei der Erstellung einer CTAS-Abfrage für eine S3-Tabelle gibt es einige wichtige Unterschiede zu Standard-Athena-Tabellen:
+ Sie müssen die Speicherort-Eigenschaft weglassen, da S3-Tabellen ihre eigenen Speicherorte automatisch verwalten.
+ Die `table_type`-Eigenschaft ist standardmäßig auf `ICEBERG`, sodass Sie sie in Ihrer Abfrage nicht explizit angeben müssen.
+ Wenn Sie kein Format angeben, verwendet das System automatisch `PARQUET` als Standardformat für Ihre Daten.
+ Alle anderen Eigenschaften folgen derselben Syntax wie normale Iceberg-Tabellen.

Bevor Sie S3-Tabellen mithilfe von CTAS erstellen, stellen Sie sicher, dass Sie die erforderlichen Berechtigungen in IAM oder konfiguriert haben. AWS Lake Formation Insbesondere benötigen Sie Berechtigungen, um Tabellen im S3-Taballen-Katalog zu erstellen. Ohne diese Berechtigungen schlagen Ihre CTAS-Operationen fehl.

**Anmerkung**  
Wenn Ihre CTAS-Abfrage fehlschlägt, müssen Sie möglicherweise Ihre Tabelle mithilfe der [S3 Tabellen-API](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-delete.html) löschen, bevor Sie versuchen, Ihre Abfrage erneut auszuführen. Sie können die `DROP TABLE`-Athena-Anweisungen nicht verwenden, um die Tabelle zu entfernen, die teilweise durch die Abfrage erstellt wurde. 

**Beispiel**

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