Query Open-Meteo OM arrays with selective reads and geographic coordinates
Compatibility Matrix
This table covers all DuckDB releases that have not reached end-of-life, including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 |
|---|---|---|---|---|---|
| Linux AMD64 | |||||
| Linux ARM64 | |||||
| macOS AMD64 | |||||
| macOS ARM64 | |||||
| Windows AMD64 | |||||
| Windows ARM64 | |||||
| WebAssembly |
Installing and Loading
INSTALL duckomo FROM community;
LOAD duckomo;
Example
LOAD duckomo;
SELECT DISTINCT function_name
FROM duckdb_functions()
WHERE function_name IN ('read_om', 'read_om_raw', 'read_om_regions', 'om_grid_info')
ORDER BY function_name;
About duckomo
DuckOMO reads Float32 arrays in Open-Meteo OM v3 files as SQL tables. It supports selective value reads, geographic coordinates, explicitly declared semantic axes, polygon regions, and nearest-point sampling. Local files need no HTTPFS dependency. HTTP(S) and S3 reads use DuckDB's official httpfs extension: INSTALL httpfs; LOAD httpfs;
DuckDB 2.0.0 compatibility and release artifacts have been verified on Linux glibc x86_64/ARM64 and macOS Intel/Apple Silicon. Separate source compatibility checks also cover DuckDB 1.5.4, 1.5.5, and 1.5.6.
This source version is a prerelease. Async remote I/O remains experimental and has not shown a consistent speedup. Experimental cross-batch prefetch is disabled by default; some first local queries exceed the project's performance target. Grid validation is limited to the documented objects and domains; it does not establish support for every OM file or grid. See https://github.com/chorust/duckomo for supported inputs and examples.
Added Functions
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| duckomo_last_scan_metrics | table | NULL | NULL | |
| om_grid_info | table | NULL | NULL | |
| read_om | table | NULL | NULL | |
| read_om_raw | table | NULL | NULL | |
| read_om_regions | table | NULL | NULL |
Overloaded Functions
This extension does not add any function overloads.
Added Types
This extension does not add any types.
Added Settings
| name | description | input_type | scope | aliases | typed_value |
|---|---|---|---|---|---|
| duckomo_async_io | Read merged remote OM ranges concurrently (DuckDB 2.0 only) | BOOLEAN | GLOBAL | [] | true |
| duckomo_async_max_inflight | Maximum concurrent remote OM reads per worker | UBIGINT | GLOBAL | [] | 8 |
| duckomo_async_prefetch_batches | Experimental remote full-scan prefetch window (1 disables cross-batch reads) | UBIGINT | GLOBAL | [] | 1 |
| duckomo_max_threads | Maximum workers used by read_om (0 uses DuckDB's thread limit) | BIGINT | GLOBAL | [] | 0 |
| duckomo_remote_max_request | Maximum bytes of one merged remote OM read | UBIGINT | GLOBAL | [] | 65536 |
| duckomo_remote_merge | Merge nearby remote OM reads (local files ignore this) | BOOLEAN | GLOBAL | [] | true |
| duckomo_remote_merge_gap | Maximum gap in bytes merged into one remote OM read | UBIGINT | GLOBAL | [] | 4096 |
| duckomo_revalidate_metadata | Re-read every OM variable before scanning (slower; detects metadata changes after bind) | BOOLEAN | GLOBAL | [] | false |
| temp_directory | Set the directory to which temporary files are written. | VARCHAR | GLOBAL | [] | post.db.tmp |