zarr

Zarr-Array-Stores (v2 und v3) mit SQL abfragen — xarray-konforme Datensätze als Tabellen lesen

Maintainer: alxmrs, d33bs

Installation und Laden

INSTALL zarr FROM community;
LOAD zarr;

Beispiel

INSTALL zarr FROM community;
LOAD zarr;
-- Read a local Zarr store as a table
SELECT time, lat, lon, temperature
FROM read_zarr('path/to/store.zarr')
LIMIT 10;
-- Inspect and query a multiscale OME-Zarr bioimage
SELECT name, dims, shape
FROM read_zarr_metadata('image.ome.zarr');
SELECT c, AVG("0") AS mean_intensity
FROM read_zarr('image.ome.zarr', array_path = '0')
GROUP BY c;

Über zarr

Die Erweiterung duckdb-zarr stellt Zarr-Array-Stores als SQL-Tabellen bereit und folgt der xarray-Dimensionskonvention, wie sie in Klimawissenschaft, Geodaten und Bioimaging verwendet wird.

Funktionen

  • read_zarr(path) — alle Zeilen eines Single-Group-Zarr-Stores scannen.
  • read_zarr(path, dims=['time','lat','lon']) — eine Dim-Gruppe aus einem Multi-Group-Store wählen (dims ist eine Liste von Dimensionsnamen).
  • read_zarr_metadata(path) — Array-Namen, dtypes, Shapes und Rollen inspizieren.
  • read_zarr_groups(path) — die verschiedenen Dimensionsgruppen eines Stores aufzählen.

Automatische Pfadumleitung

Jeder Pfad, der auf .zarr endet, wird automatisch an read_zarr geleitet:

SELECT * FROM 'era5.zarr' LIMIT 5;
SELECT * FROM 'https://example.org/data.zarr' LIMIT 5;

Unterstützte Formate

  • Zarr v2 und v3
  • Codecs: gzip, zstd, blosc, crc32c, sharding, transpose, bytes (big/little endian)
  • CF-Konventionen: gepackte Ganzzahlen mit scale_factor/add_offset, Null-Maskierung über _FillValue/missing_value
  • Lokales Dateisystem, HTTP/HTTPS, S3, GCS und Azure Blob Storage. Entfernte Stores müssen konsolidierte Metadaten mitführen — ein Zarr-v2-Objekt .zmetadata oder einen Zarr-v3-Block consolidated_metadata —, weil Objektspeicher keine Verzeichnisse listen können. S3-/GCS-/Azure-Anmeldedaten werden aus DuckDBs Secrets Manager gelesen — CREATE SECRET ... TYPE S3 usw.

Bioimage und OME-Zarr

OME-Zarr-Bilder enthalten häufig mehrere Auflösungsstufen und verschachtelte Label- Arrays. Nutzen Sie read_zarr_metadata, um store-relative Array-Pfade zu entdecken, und übergeben Sie array_path, um eine Stufe oder ein Label-Bild zu wählen:

SELECT name, dims, shape, dtype
FROM read_zarr_metadata('image.ome.zarr');
SELECT c, AVG("0") AS mean_intensity
FROM read_zarr('image.ome.zarr', array_path = '0')
WHERE y BETWEEN 100 AND 199
AND x BETWEEN 200 AND 299
GROUP BY c;
SELECT "labels/nuclei/0" AS label, COUNT(*) AS pixels
FROM read_zarr('image.ome.zarr', array_path = 'labels/nuclei/0')
WHERE "labels/nuclei/0" > 0
GROUP BY label;

Hinzugefügte Funktionen

function_name function_type description comment examples
read_zarr table NULL NULL
read_zarr_groups table NULL NULL
read_zarr_metadata table NULL NULL

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

Diese Erweiterung fügt keine Typen hinzu.

Hinzugefügte Einstellungen

Diese Erweiterung fügt keine Einstellungen hinzu.