Query Parquet Files with SQL — No Database Required
SQL on files, not databases
The fastest way to answer a question about a Parquet file is usually a SQL query — but standing up a database, defining a table and importing the data turns a 30-second question into a 30-minute chore. DuckDB removed the import step: it queries files in place. DuckDB-WASM goes further and removes the install step, running the whole engine inside your browser.
The SQL Workbench on this site is exactly that: drop files, write SQL, get results. Nothing is uploaded.
Recipes
Row count and quick profile
SELECT count(*) FROM 'events.parquet';
SUMMARIZE SELECT * FROM 'events.parquet';
Top-N aggregation
SELECT user_id, count(*) AS events
FROM 'events.parquet'
GROUP BY user_id
ORDER BY events DESC
LIMIT 20;
Join Parquet with CSV
SELECT r.name, sum(s.amount) AS revenue
FROM 'sales.parquet' s
JOIN 'regions.csv' r ON s.region_id = r.id
GROUP BY r.name;
Export the answer
Run the query, then click Download CSV — or convert the whole file with the Parquet to CSV converter if you need everything.
When to graduate to a real database
Browser SQL shines for exploration and one-off analysis. Once you need scheduled queries, concurrent users or data that exceeds your machine's memory for a single result set, move the same SQL to DuckDB on a server or a warehouse — the dialect carries over unchanged.
Frequently asked questions
- Do I need to create tables or import data first?
- No. Dropped files are queryable immediately by filename — SELECT * FROM 'sales.parquet' just works. There is no import step because DuckDB reads the file by reference.
- Can I join a Parquet file with a CSV file?
- Yes. Register both files and join them in one query: SELECT … FROM 'sales.parquet' s JOIN 'regions.csv' r ON s.region_id = r.id.
- What SQL features are available?
- The full DuckDB dialect: window functions, CTEs, aggregates, string and date functions, JSON functions, PIVOT and more. If it runs in DuckDB, it runs here.