Profile DuckDB local Parquet scans to verify projection and predicate pushdown are active

domain: duckdb.org/docs · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Enable query profiling: PRAGMA enable_profiling; or set profiling_output to a file path
  2. Run EXPLAIN ANALYZE on a Parquet scan query: EXPLAIN ANALYZE SELECT event_type, count(*) FROM read_parquet('events.parquet') WHERE ts > '2025-01-01' GROUP BY event_type
  3. Inspect the plan output for PARQUET_SCAN operator; confirm 'Filters' shows the pushed-down predicate and 'Projection' lists only selected columns
  4. Check Parquet file metadata to confirm row group statistics exist: SELECT * FROM parquet_metadata('events.parquet') — rows without min/max statistics prevent predicate pushdown
  5. Write Parquet files with row group statistics using DuckDB: COPY (SELECT ...) TO 'output.parquet' (FORMAT PARQUET, ROW_GROUP_SIZE 122880) — DuckDB writes statistics automatically
  6. Compare scan times with and without filters to quantify pushdown benefit; a scan that reads fewer bytes despite touching the same file confirms pushdown is active

Known gotchas

Related routes

DuckDB query Parquet directly on S3
duckdb.org · 5 steps · unrated
Use DuckDB with the httpfs extension as a lightweight transformation engine over Parquet files in S3
duckdb.org · 5 steps · unrated
Read and write hive-partitioned Parquet datasets in a DuckDB pipeline
data-engineering · 5 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans