← all releases

CalCOFI release v2026.08.06

2026-08-06 · 19 tables · 255,137,845 rows · 1.60 GB

tablerowssize
cruise.parquet69114 KB
dataset_taxon.parquet1,90745 KB
dataset.parquet1510 KB
grid.parquet218100 KB
lookup.parquet262 KB
measurement_type.parquet19812 KB
obs/ 15 parts20,088,748151.1 MB
obs_attribute.parquet452,6821.7 MB
obs_ctd_full/ supplemental 97 parts212,444,2871017.9 MB
obs_mets_full/ supplemental 50 parts19,936,073248.0 MB
obs.parquet20,088,748147.8 MB
region.parquet41 KB
sample_measurement.parquet588,9861.9 MB
sample.parquet1,460,01921.0 MB
ship.parquet492 KB
spatial_attribute.parquet148,461921 KB
spatial.parquet13,20645.3 MB
taxon_group.parquet1542 KB
taxon.parquet2,12166 KB

Sidecars

Machine-readable descriptions of this release.

filesize
RELEASE_NOTES.md2 KB
catalog.json2 KB
erd.mmd8 KB
index.html10 KB
metadata.json122 KB
relationships.json9 KB
test_results.json5 KB
Why obs appears twice. Each is published both as a Hive-partitioned directory and as a single .parquet file, on purpose — they are the same rows.

The partitioned form lets DuckDB, R and Python skip whole partitions when you filter on the partition column, so it is the faster choice for most analysis. The single-file form exists because plain HTTPS has no directory listing: browser DuckDB-WASM (which powers calcofi.io/db-query) and other HTTPS-only consumers cannot expand a /**/*.parquet glob against cloud storage, so they need one addressable object. Removing either breaks a real consumer.
Read directly with DuckDB — no download needed. A single-file table:
SELECT * FROM read_parquet('https://storage.googleapis.com/calcofi-db/ducklake/releases/v2026.08.06/parquet/sample.parquet') LIMIT 10;

A partitioned table (note the /**/*.parquet glob and hive_partitioning, which turns the directory names into a real column):
SELECT * FROM read_parquet('https://storage.googleapis.com/calcofi-db/ducklake/releases/v2026.08.06/parquet/obs_ctd_full/**/*.parquet', hive_partitioning = true) LIMIT 10;