Iceberg-Funktionen
Die iceberg-Erweiterung stellt die folgenden Funktionen bereit:
| Funktion | Beschreibung |
|---|---|
iceberg_scan(source) |
Liest eine Iceberg-Tabelle von einem Pfad. |
iceberg_metadata(source) |
Gibt die Manifest-Einträge einer Iceberg-Tabelle zurück. |
iceberg_snapshots(source) |
Gibt die Snapshots einer Iceberg-Tabelle zurück. |
iceberg_table_properties(table) |
Gibt alle Eigenschaften der angegebenen Tabelle zurück. |
iceberg_schema_properties(schema) |
Gibt alle Eigenschaften des angegebenen Schemas zurück. |
set_iceberg_schema_properties(schema, properties) |
Setzt Eigenschaften auf dem angegebenen Schema. |
remove_iceberg_schema_properties(schema, property_list) |
Entfernt Eigenschaften vom angegebenen Schema. |
iceberg_to_ducklake(iceberg_catalog, ducklake_catalog) |
Kopiert die Iceberg-Metadaten eines Katalogs in einen DuckLake-Katalog. |
Die Beispiele auf dieser Seite verwenden die Datei iceberg_data.zip; laden Sie sie herunter und entpacken Sie sie, um die Beispiele auszuführen.
iceberg_scan
Die Funktion iceberg_scan liest eine Iceberg-Tabelle von einem Pfad, ohne dass ein angehängter Katalog erforderlich ist:
SELECT count(*)FROM iceberg_scan('data/iceberg/lineitem_iceberg', allow_moved_paths = true);| count_star() |
|---|
| 51793 |
Der Pfad kann auch direkt auf eine Metadatendatei oder auf einen Objektspeicher wie S3 oder Azure Blob Storage zeigen. Die von dieser Funktion akzeptierten Parameter finden Sie auf der Seite Iceberg-Optionen.
iceberg_metadata
Um auf Iceberg-Metadaten zuzugreifen, können Sie die Funktion iceberg_metadata verwenden:
SELECT *FROM iceberg_metadata('data/iceberg/lineitem_iceberg', allow_moved_paths = true);| manifest_path | manifest_sequence_number | manifest_content | status | content | file_path | file_format | record_count |
|---|---|---|---|---|---|---|---|
| lineitem_iceberg/metadata/10eaca8a-1e1c-421e-ad6d-b232e5ee23d3-m1.avro | 2 | DATA | ADDED | EXISTING | lineitem_iceberg/data/00041-414-f3c73457-bbd6-4b92-9c15-17b241171b16-00001.parquet | PARQUET | 51793 |
| lineitem_iceberg/metadata/10eaca8a-1e1c-421e-ad6d-b232e5ee23d3-m0.avro | 2 | DATA | DELETED | EXISTING | lineitem_iceberg/data/00000-411-0792dcfe-4e25-4ca3-8ada-175286069a47-00001.parquet | PARQUET | 60175 |
iceberg_snapshots
Um die Snapshots einer Iceberg-Tabelle anzuzeigen, verwenden Sie die Funktion iceberg_snapshots:
SELECT *FROM iceberg_snapshots('data/iceberg/lineitem_iceberg');| sequence_number | snapshot_id | timestamp_ms | manifest_list |
|---|---|---|---|
| 1 | 3776207205136740581 | 2023-02-15 15:07:54.504 | lineitem_iceberg/metadata/snap-3776207205136740581-1-cf3d0be5-cf70-453d-ad8f-48fdc412e608.avro |
| 2 | 7635660646343998149 | 2023-02-15 15:08:14.73 | lineitem_iceberg/metadata/snap-7635660646343998149-1-10eaca8a-1e1c-421e-ad6d-b232e5ee23d3.avro |
iceberg_snapshotsnimmt wederallow_moved_paths,snapshot_from_idnochsnapshot_from_timestampals Parameter entgegen.
Metadatenoperationen auf angehängten Katalogen
Die Funktionen iceberg_metadata und iceberg_snapshots können auch mit einem angehängten Iceberg-Katalog über einen vollständig qualifizierten Pfad verwendet werden, z. B.:
SELECT * FROM iceberg_metadata(my_datalake.default.t)
-- OrSELECT * FROM iceberg_snapshots(my_datalake.default.t)Diese Funktionalität ermöglicht dem Benutzer Time Travel.
-- Using a snapshot idSELECT * FROM my_datalake.default.t AT (VERSION => ⟨SNAPSHOT_ID⟩)
-- Or using a timestampSELECT * FROM my_datalake.default.t AT (TIMESTAMP => TIMESTAMP '2025-09-22 12:32:43.217')Funktionen für Tabelleneigenschaften
DuckDB stellt Funktionen bereit, um Iceberg-Tabelleneigenschaften anzuzeigen und zu ändern:
| Funktion | Beschreibung |
|---|---|
iceberg_table_properties(table) |
Gibt alle Eigenschaften der angegebenen Tabelle zurück. |
Sie können ALTER TABLE ... SET und ALTER TABLE ... RESET verwenden, um Tabelleneigenschaften zu ändern
-- View table propertiesSELECT *FROM iceberg_table_properties(iceberg_catalog.default.my_table);
-- Set table propertiesALTER TABLE iceberg_catalog.default.my_table SET ( 'write.update.mode'='merge-on-read', 'write.delete.mode'='merge-on-read', 'format-version'=3);
-- Remove table propertiesALTER TABLE iceberg_catalog.default.my_table RESET ( 'write.update.mode', 'owner');Funktionen für Schemaeigenschaften
Iceberg-Kataloge erlauben beliebige Schlüssel-Wert-Eigenschaften auf Schema- (Namespace-)Ebene. Diese Eigenschaften dienen typischerweise dazu, Besitz, Beschreibungen, Standard-Speicherorte oder andere Metadaten festzuhalten, die für jede Tabelle in einem Schema gelten.
| Funktion | Beschreibung |
|---|---|
iceberg_schema_properties(schema) |
Gibt alle Eigenschaften des angegebenen Schemas zurück. |
set_iceberg_schema_properties(schema, properties) |
Setzt Eigenschaften auf dem angegebenen Schema. |
remove_iceberg_schema_properties(schema, property_list) |
Entfernt Eigenschaften vom angegebenen Schema. |
-- Set schema propertiesCALL set_iceberg_schema_properties(iceberg_catalog.default, { 'owner': 'analytics-team', 'description': 'Default analytics schema'});
-- Read schema propertiesSELECT * FROM iceberg_schema_properties(iceberg_catalog.default);
-- Remove schema propertiesCALL remove_iceberg_schema_properties( iceberg_catalog.default, ['description']);Schemaeigenschaften werden über den Iceberg REST Catalog geschrieben, sodass jede andere Iceberg-fähige Engine, die am selben Katalog hängt, die Änderungen sofort sieht. remove_iceberg_schema_properties gibt die Anzahl der verbleibenden Schemaeigenschaften zurück.
iceberg_to_ducklake
Die DuckDB-iceberg-Erweiterung stellt eine Funktion bereit, um eine reine Metadatenkopie der Iceberg-Metadaten nach DuckLake vorzunehmen. Damit können Benutzer Iceberg-Tabellen so abfragen, als wären sie DuckLake-Tabellen.
-- Given that we have an Iceberg catalog attached aliased to iceberg_datalakeATTACH 'ducklake:my_ducklake.ducklake' AS my_ducklake;
CALL iceberg_to_ducklake('iceberg_datalake', 'my_ducklake');Es ist außerdem möglich, eine Menge von Tabellen über den Parameter skip_tables zu überspringen.
CALL iceberg_to_ducklake('iceberg_datalake', 'my_ducklake', skip_tables := ['table_to_skip']);