Skip to content

v0.4.4: Native DuckDB integration

Choose a tag to compare

@bintocher bintocher released this 26 Mar 23:12
· 16 commits to main since this release

Native DuckDB integration

Register QVD files as DuckDB tables with a single function call — then query with SQL. No manual conversions needed.

import qvd, duckdb

conn = duckdb.connect()

# Single file
qvd.register_duckdb(conn, "sales", "sales.qvd")

# All QVD files from a folder
tables = qvd.register_duckdb_folder(conn, "/data/qvd/")

# Multiple folders with glob
tables = qvd.register_duckdb_folder(conn, ["/data/sales/", "/data/crm/"],
                                     glob="client_*.qvd", recursive=True)

# Query with SQL — JOINs across QVD tables
conn.sql("SELECT * FROM sales JOIN customers ON ...").show()

New Python functions

  • register_duckdb(conn, name, path) — register single QVD as DuckDB table
  • register_duckdb_filtered(conn, name, path, col, index, select) — with streaming EXISTS filter
  • register_duckdb_folder(conn, paths, recursive, glob, max_file_size_mb):
    • Single path or list of paths
    • recursive=True — scan subdirectories
    • glob="prefix_*.qvd" — file pattern matching
    • max_file_size_mb=500 — skip files over limit (default 500MB)
    • Errors are warnings, not crashes

Tested: 405 QVD files registered as DuckDB tables, cross-table JOINs verified.