

 Amazon Redshift unterstützt die Verwendung von Python-UDFs nach dem 30. Juni 2026 nicht mehr. Wir werden damit beginnen, es schrittweise durchzusetzen. Weitere Informationen zum Ende der Lebensdauer von Python und zu den Migrationsoptionen finden Sie im [ Blogbeitrag](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/), der am 30. Juni 2025 veröffentlicht wurde. 

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.

# Funktionen von Apache Iceberg v3 in Amazon Redshift
<a name="iceberg-v3-features"></a>

Amazon Redshift unterstützt Apache Iceberg v3-Tabellen. Iceberg v3 führt Standardspaltenwerte, Zeilenabstammungsverfolgung und Löschvektoren ein. Sie können neue v3-Tabellen erstellen oder bestehende v2-Tabellen auf Version 3 aktualisieren.

Iceberg v3-Tabellen verwenden dieselbe SQL-Syntax für Abfragen und DML-Operationen (INSERT, DELETE, UPDATE, MERGE) wie v2-Tabellen. Die auf dieser Seite beschriebenen Funktionen sind spezifisch für Iceberg v3.

## Eine Iceberg v3-Tabelle erstellen
<a name="iceberg-v3-creating"></a>

Um eine Iceberg v3-Tabelle zu erstellen, geben Sie `'format-version'='3'` in der TABLE PROPERTIES-Klausel Folgendes an:

```
CREATE TABLE {{external_schema}}.{{table_name}} (
  column_name data_type [DEFAULT literal_value] [, ...]
)
USING ICEBERG
LOCATION 's3://{{your-bucket-name}}/{{prefix}}/'
[PARTITIONED BY [[column_name | transform_function]], ...]
TABLE PROPERTIES ('format-version'='3'
    [, 'compression_type'='{{compression_value}}']);
```

Beispiel:

```
CREATE TABLE my_schema.orders (
  id int,
  status varchar DEFAULT 'pending',
  priority int DEFAULT 0
)
USING ICEBERG
LOCATION 's3://amzn-s3-demo-bucket/orders/'
TABLE PROPERTIES ('format-version'='3');
```

Wenn Sie keine Formatversion angeben, erstellt Amazon Redshift die Tabelle als Iceberg v2.

## Upgrade von v2 auf v3
<a name="iceberg-v3-upgrading"></a>

Sie können eine bestehende Iceberg v2-Tabelle auf Version 3 aktualisieren:

```
ALTER TABLE {{iceberg_table}}
SET TABLE PROPERTIES ('format-version' = '3');
```

Das Aktualisieren der Formatversion ist ein reiner Metadaten-Vorgang. Bestehende Datendateien werden nicht neu geschrieben. Bestehende v2-Dateien zum positionellen Löschen bleiben gültig und werden beim Lesen angewendet. Beim ersten Schreibvorgang nach einem Upgrade werden Zeilenherkunftswerte für die gesamte Tabelle generiert. Bei nachfolgenden DELETE-, UPDATE- oder MERGE-Vorgängen führt Amazon Redshift positionelle Löschungen der Version 2 in Löschvektoren für die von dem Vorgang betroffenen Datendateien zusammen.

**Wichtig**  
Lesen Sie vor dem Upgrade auf Iceberg v3 den [Einschränkungen](#iceberg-v3-limitations) Abschnitt, da einige Funktionen für v3-Tabellen noch nicht unterstützt werden. Da ein Downgrade von Version 3 auf Version 2 nicht unterstützt wird, stellen Sie sicher, dass sich die nicht unterstützten Funktionen nicht auf Ihre Workloads auswirken, bevor Sie mit dem Upgrade fortfahren.

## Einschränkungen
<a name="iceberg-v3-limitations"></a>
+ Sie können Iceberg v3 nur auf Amazon Redshift Serverless-Clustern (mit Ausnahme des Clusters mit 4 RPU) und auf bereitgestellten Clustern verwenden, die RG-Instance-Typen verwenden.
+ Sie können in Iceberg v3-Tabellen keine komplexen Typen (Struktur, Liste, Map, Variante) lesen oder schreiben.
+ Sie können die folgenden Datentypen in Iceberg v3-Tabellen nicht verwenden: struct, list, map, variant, geometry, geography, binary, uuid, time, timestamp\_ns, timestamptz\_ns und unknown.
+ Sie können keine Iceberg v3-Tabellen verwenden, die Gleichheitslöschungen enthalten.
+ Sie können keine materialisierten Ansichten für Iceberg v3-Tabellen erstellen.
+ Nach dem Upgrade einer Tabelle auf Version 3 wird der `timestamptz` Typ von Iceberg dem Amazon Redshift TIMESTAMPTZ-Typ statt TIMESTAMP (in Version 2 verwendet) zugeordnet. Daher geben Ihre Abfragen Zeitstempel zurück, die Zeitzoneninformationen enthalten.

## Standardwerte für Spalten
<a name="iceberg-v3-default-values"></a>

Standardspaltenwerte werden nur für Iceberg v3-Tabellen unterstützt. Amazon Redshift gibt einen Fehler zurück, wenn Sie einen Standardwert für eine Iceberg v2-Tabelle angeben.

Standardwerte geben einen Literalwert an, auf den eine Spalte zurückgreift, wenn kein expliziter Wert vorhanden ist. Auf diese Weise können Sie einer vorhandenen Tabelle neue Spalten hinzufügen, ohne die Datendateien neu schreiben zu müssen. Beim Lesen zuvor geschriebener Datendateien wird automatisch der Standardwert für die neue Spalte zurückgegeben. Der Standardwert wird auch geschrieben, wenn eine DML-Anweisung die Spalte auslässt oder DEFAULT als Wert angibt.

Nur Literalwerte werden als Standardwerte unterstützt. Verschachtelte Datentypen unterstützen keine Standardwerte.

CREATE TABLE AS SELECT erbt keine Standardspaltenwerte aus der Quelltabelle. Um Standardwerte für die neue Tabelle zu definieren, verwenden Sie nach der Erstellung ALTER TABLE ALTER COLUMN SET DEFAULT.

### Definieren von Standardwerten bei der Tabellenerstellung
<a name="iceberg-v3-default-values-create"></a>

```
CREATE TABLE {{external_schema}}.{{table_name}} (
  column_name data_type DEFAULT literal_value [, ...]
)
USING ICEBERG
LOCATION '...'
TABLE PROPERTIES ('format-version'='3');
```

### Hinzufügen einer Spalte mit einem Standard
<a name="iceberg-v3-default-values-add-column"></a>

```
ALTER TABLE {{iceberg_table}}
ADD COLUMN column_name data_type DEFAULT literal_value;
```

Bestehende Datendateien geben den Standardwert für die neu hinzugefügte Spalte zurück, ohne dass die Daten neu geschrieben werden müssen.

### Einen Standard ändern oder entfernen
<a name="iceberg-v3-default-values-change"></a>

```
ALTER TABLE {{iceberg_table}}
ALTER COLUMN column_name SET DEFAULT literal_value;

ALTER TABLE {{iceberg_table}}
ALTER COLUMN column_name DROP DEFAULT;
```

SET DEFAULT ändert den Standardwert einer vorhandenen Spalte. Die neue Standardeinstellung gilt für Datendateien, die nach der Änderung geschrieben wurden. Bestehende Datendateien verwenden weiterhin die vorherige Standardeinstellung.

DROP DEFAULT entfernt den Standardwert aus einer Spalte. Nach diesem Vorgang wenden neue Schreibvorgänge keinen Standardwert mehr für die Spalte an. Datendateien, die die Spalte nicht enthalten, geben weiterhin den ursprünglichen Standardwert der Spalte zurück.

### INSERT-Verhalten
<a name="iceberg-v3-default-values-insert"></a>

Wenn Zeilen eingefügt werden, ohne eine Spalte mit einem Standardwert anzugeben, wird der Standardwert in die Datendatei geschrieben.

### SHOW TABLE
<a name="iceberg-v3-default-values-show-table"></a>

SHOW TABLE zeigt Standardwerte in der Ausgabe an.

## Herkunft der Zeilen
<a name="iceberg-v3-row-lineage"></a>

Die Zeilenabstammung wird nur für Iceberg v3-Tabellen unterstützt. Es bietet zwei Pseudospalten, die die Zeilenidentität und den Änderungsverlauf verfolgen. Diese Spalten werden automatisch von Amazon Redshift verwaltet. Sie legen ihre Werte nicht fest.

### Pseudo-columns
<a name="iceberg-v3-row-lineage-columns"></a>


| Spalte | Datentyp | Description | 
| --- | --- | --- | 
| \_row\_id | BIGINT | Identifiziert jede Zeile in der Tabelle eindeutig. Wird bei Schreibvorgängen automatisch zugewiesen. | 
| \_last\_updated\_sequence\_number | BIGINT | Die Snapshot-Sequenznummer des letzten Schreibvorgangs, durch den die Zeile geändert wurde. | 

### Die Herkunft der Zeilen wird abgefragt
<a name="iceberg-v3-row-lineage-querying"></a>

Zeilen- und Abstammungsspalten müssen in der SELECT-Liste explizit benannt werden. Sie sind nicht in SELECT\* enthalten.

```
SELECT _row_id, _last_updated_sequence_number, *
FROM my_schema.my_iceberg_v3_table;
```

Sie können Zeilenstammspalten in den Klauseln WHERE, ORDER BY, GROUP BY und JOIN verwenden:

```
SELECT *
FROM my_schema.my_iceberg_v3_table
WHERE _last_updated_sequence_number >= 3
ORDER BY _row_id;
```

### Verhalten bei Nicht-V3-Tabellen
<a name="iceberg-v3-row-lineage-non-v3"></a>

Wenn Sie eine Tabelle abfragen, die nicht von Iceberg v3 stammt, `_row_id` und geben Sie NULL zurück. `_last_updated_sequence_number`

### Verhalten nach dem Upgrade von v2 auf v3
<a name="iceberg-v3-row-lineage-upgrade"></a>

Bei Tabellen, die von Iceberg v2 auf v3 aktualisiert wurden, sind die Zeilenabstammungswerte für Daten vor dem Upgrade nicht sofort verfügbar. Beide `_row_id` `_last_updated_sequence_number` geben bis zum ersten Schreibvorgang nach dem Upgrade, der Zeilenherkunftswerte für die gesamte Tabelle generiert, NULL zurück. Dies ist ein reiner Metadaten-Vorgang, bei dem vorhandene Datendateien nicht neu geschrieben werden.

### Verhalten beim Schreiben
<a name="iceberg-v3-row-lineage-writes"></a>

Die Zeilenabstammung wird bei allen Schreibvorgängen (INSERT, CTAS, UPDATE, MERGE) automatisch von Amazon Redshift aufgefüllt. Jede Zeile erhält ein Unikat `_row_id` und `_last_updated_sequence_number` gibt die Snapshot-Sequenznummer des Commits wieder, der die Zeile geschrieben hat.

### Einschränkungen
<a name="iceberg-v3-row-lineage-limitations"></a>
+ Spalten zur Zeilenherkunft sind in SELECT \* nicht enthalten.
+ Die Zeilenabstammung wird für Iceberg v2 oder frühere Tabellen nicht unterstützt.
+ Pre-upgrade Daten in Tabellen, die von v2 auf v3 aktualisiert wurden, geben für beide Pseudospalten bis zum ersten Schreibvorgang nach dem Upgrade NULL zurück.

## Vektoren zum Löschen
<a name="iceberg-v3-deletion-vectors"></a>

Löschvektoren sind der Mechanismus, den Iceberg v3 verwendet, um Löschungen auf Zeilenebene zu verfolgen. Sie ersetzen die von Iceberg v2 verwendeten positionsbezogenen Löschdateien.

Wenn Sie DELETE, UPDATE oder MERGE für eine Iceberg v3-Tabelle ausführen, zeichnet Amazon Redshift gelöschte Zeilenpositionen in Löschvektoren auf, anstatt separate Dateien zum Löschen von Positionen zu schreiben. Dies wird automatisch behandelt. Es sind keine Änderungen an der SQL-Syntax erforderlich.

### Wie funktionieren Löschvektoren
<a name="iceberg-v3-deletion-vectors-how"></a>

Ein Löschvektor ist eine komprimierte Bitmap, die aufzeichnet, welche Zeilenpositionen in einer Datendatei gelöscht wurden. Löschvektoren werden in Puffin-Dateien am selben S3-Speicherort wie die Tabellendaten gespeichert. Jede Datendatei hat höchstens einen Löschvektor.

Beim Lesen einer Iceberg v3-Tabelle wendet Amazon Redshift automatisch Löschvektoren an, um gelöschte Zeilen aus den Abfrageergebnissen auszuschließen.

### Vorteile gegenüber positionellen Löschdateien
<a name="iceberg-v3-deletion-vectors-benefits"></a>
+ Löschvektoren sind kompakter als positionelle Löschdateien.
+ Ein einziger Löschvektor pro Datendatei vermeidet die Anhäufung vieler kleiner Löschdateien.
+ Nachfolgende Löschvorgänge in derselben Datendatei erzeugen einen neuen Löschvektor, der die vorherigen Löschungen mit den neu gelöschten Positionen zusammenführt, sodass ein einziger Löschvektor pro Datendatei erhalten bleibt.
+ Da Löschvektoren kompakter sind und das Ansammeln vieler kleiner Dateien vermeiden, sind Lese- und Schreibvorgänge schneller als bei Iceberg v2-Dateien zum positionellen Löschen.

### Verhalten nach dem Upgrade von v2 auf v3
<a name="iceberg-v3-deletion-vectors-upgrade"></a>

Nach dem Upgrade einer Tabelle von Iceberg v2 auf v3 bleiben vorhandene Dateien zum positionellen Löschen von Version 2 gültig und werden beim Lesen angewendet. Bei nachfolgenden Schreibvorgängen (DELETE, UPDATE oder MERGE) führt Amazon Redshift bestehende positionelle Löschvorgänge in Version 2 zu Löschvektoren zusammen, wie in der Iceberg-Spezifikation definiert.

### Einschränkungen
<a name="iceberg-v3-deletion-vectors-limitations"></a>
+ Löschvektoren werden für Iceberg v2 oder frühere Tabellen nicht unterstützt.
+ Iceberg v3-Tabellen können für neue Schreibvorgänge nicht auf positionale Löschdateien zurückgreifen. Das bedeutet, dass Iceberg v3-Tabellen zwar vorhandene Dateien zum positionellen Löschen lesen können, aber keine neuen Dateien zum Löschen von Positionen hinzugefügt werden können. Stattdessen können Iceberg v3-Tabellen nur mithilfe von Löschvektoren neue Löschvorgänge hinzufügen.