r/DuckDB

I built a SQL Workbench-like DuckDB Playground
▲ 7 r/DuckDB

I built a SQL Workbench-like DuckDB Playground

There are many SQL playgrounds out there, but I wanted something closer to a workbench experience in the browser. The Dataslope DuckDB Playground lets you experiment with DuckDB in a more workbench-like environment. It's completely free and doesn't require a sign-in.

I'd love any feedback or feature requests.

u/Creative_Sugar-33 — 17 hours ago
▲ 22 r/DuckDB

Duckle: Talend for the DuckDB Era!

For years, Talend set the standard for visual ETL with drag-and-drop pipelines, reusable components, and enterprise-grade data integration.

Today’s data stack looks very different.

Teams are building on DuckDB, Parquet, Apache Arrow, and local-first processing to create faster, simpler, and more efficient data pipelines.

Duckle is built for this new generation of data engineering.

Duckle leverages DuckDB’s vectorized execution engine to deliver high-performance ETL through an intuitive visual designer.

Why teams must take a closer look:

  • Visual drag-and-drop pipeline designer
  • DuckDB-native execution
  • SQL-first transformations
  • Python API for developer workflows
  • Hundreds of connectors, transforms, and destinations

If you’ve ever thought, “I wish Talend were built for the modern analytics stack,” Duckle is worth exploring.

The platform is designed with production use in mind, making it suitable not only for prototypes and proof-of-concepts but also for real-world data pipelines. If you’re evaluating a modern alternative to traditional ETL platforms, it’s a compelling option to test with your production workloads and see how it fits your environment.

The future of data integration is about combining the simplicity of visual development with the performance of modern analytics engines. Duckle brings those ideas together in a way that feels both familiar and refreshingly modern.

Check out the Github Repository — https://github.com/slothflowlabs/duckle

Peek Through Images -

https://preview.redd.it/8k0bdafugpjh1.png?width=800&format=png&auto=webp&s=1e8446ab50d4ceb4ef7536337781e5591d77fead

https://preview.redd.it/ikittaewgpjh1.png?width=800&format=png&auto=webp&s=b8f9310ca0aba3dbbfc4f0912147776894fe54fe

https://preview.redd.it/i61a3z4xgpjh1.png?width=800&format=png&auto=webp&s=2f2ed9d095b98636a20644f44590d4b304e9f49f

https://preview.redd.it/4nlkxcrxgpjh1.png?width=800&format=png&auto=webp&s=de68852423d2c5f6f175b12aa2bbaeab6ff6e451

https://preview.redd.it/4woxkbuygpjh1.png?width=799&format=png&auto=webp&s=137ef1f40fcebb9f72ab0c130d6007e312068a38

https://preview.redd.it/0jxvqgmzgpjh1.png?width=799&format=png&auto=webp&s=a2b593da537624d12af8b9e7741c14c64d963f45

reddit.com
u/FickleAnt4399 — 4 days ago
▲ 59 r/DuckDB+4 crossposts

how I learned why you shouldn't name an alias the same as the original column name

I wrote a query last week that ran fine on Postgres and DuckDB, and hard-errored on ClickHouse and BigQuery - this sent me down a rabbit hole for most of the day.

Here's what I had:
```
SELECT term, MAX(ranking_page_count) AS ranking_page_count
FROM ranked
GROUP BY term
HAVING MAX(ranking_page_count) >= 2
```

The CTE already had a column called ranking_page_count. I aliased MAX() of it to the same name, because why not, and then used that name again in HAVING.

So which one does HAVING actually filter by? Turns out that's a matter of opinion.

In Postgres, HAVING can’t see SELECT aliases at all. So it reads the column directly and lands on the same max anyway - no error, right answer.

DuckDB does let you use aliases in HAVING, but only as a fallback, and it won't put one inside an aggregate, so this also runs. This is the one that got me, since DuckDB is where I test locally.

BigQuery gives the alias priority over the column. So it read my query as MAX(MAX(...)) and gave the error "aggregations of aggregations are not allowed"

ClickHouse just swaps aliases in everywhere, so it gave code 184 illegal aggregation. it even fails when the alias isn't shadowing anything.

The thing that finally made it click for me was processing order. FROM, WHERE, GROUP BY, HAVING, then SELECT, then ORDER BY. Aliases get created in SELECT, so when HAVING runs the alias doesn't exist yet. That's why Postgres says no, and why everything else here is a vendor extension rather than four equally valid readings.

ORDER BY is the only clause that runs after SELECT, which is why it's the only clause where nobody argues.

What actually worries me is that it can go completely silent. Drop the aggregate from the alias and the loud error disappears:
```
SELECT term, ranking_page_count * 10 AS ranking_page_count
FROM ranked
GROUP BY term, ranking_page_count
HAVING MAX(ranking_page_count) > 4
```

Postgres and DuckDB filter on `ranking_page_count`
BigQuery and ClickHouse filter on `ranking_page_count * 10`
I get 1 row from the first two and 4 rows from the other two, and not one of them raises an error about it.

That's the version that ends up on a dashboard.

ok fine, I learned my lesson and won't name an aggregate after the column it aggregates...

If you work across different engines, this is your reminder to go check 🥲

reddit.com
u/uncertainschrodinger — 6 days ago
▲ 19 r/DuckDB+4 crossposts

I built an open-source SQL client with Flutter over the past 3 years

About 3 years ago I started learning Flutter, so I tried to build a small SQL client as a practice project. I just kept working on it in my spare time. After about 3 years, it slowly became a usable desktop app.

Now I open sourced it:

https://github.com/sjjian/openhare

This project is mainly for me to learn Flutter desktop development.

If anyone is interested you can take a look. Feedback is welcome. And if you think it is interesting, maybe give it a ⭐ on GitHub.

Thanks.

u/Smooth_Constant_8170 — 9 days ago
▲ 35 r/DuckDB

sql.garden - An infinite canvas for your data

Hi all,

Long time lurker and DuckDB fan. I have been working on a little side project over the last few months to solve a niche I had at work and has been a fun side quest into build a data exploration tool. I am an engineer at a financial services company and continually need to query across many data sources and files for various reporting and analytical needs. Outside of automation processes a lot of triage work is stitching together disconnected data sources to investigate issues or explore ideas.

DuckDB has been my go to tool for this stuff since early 2024 when I first found out about it. I had an idea that it would be cool to have a Figma-like editor for managing and exploring data and using sql / charting mechanics across these sources to aid in data discovery/exploration. The idea is somewhere muddled in data analytics, after engineering but before standardized reporting.

Day to day I primarily use Beekeeper studio and a laundry list of reports and scripts that help with my day job. I found that I was leaving a lot of tabs open for queries or folders of scripts that are contextually adjacent for whatever I was exploring in the moment, but not super useful after that problem or idea had been solved. So I built this tool to explore that idea for myself.

----

I built this tool as a website and a desktop app to work local first and without any analytics or tracking. I just want this to be a tool people reach for if they find it useful. I am a developer in my day job and love tinkering with stuff like this in my free time, so I will be continuing to chip away and add features as I dog food it myself. I have been using it daily at my job now for a little over 2 months, and just got around to hosting and polishing some QoL items. This app is still very alpha but pleasantly capable for what currently exists.

My primary selling point is: I am building this for myself for free and have no business motivation or anything around it. No pay walls, no freemium features. In the current age of ai I can just build the tool I want, use it, and continually make it better as time goes on instead of wishing or waiting for a business to provide that for me.

let me know if you give it a try and reach out if you have any questions / suggestions about anything/

Website: https://sql.garden

Online playground: https://sql.garden/sandbox/

Github: https://github.com/immannino/sql.garden

---

Quick features:

  • Infinite canvas SQL workspace — drag, arrange, and connect query nodes like a Figma board, not a boring tab interface
  • DuckDB-powered — runs fully local, no server, no account. Desktop app (Mac/Windows) or browser sandbox
  • Query nodes with CodeMirror editor, syntax highlighting, schema autocomplete, auto-refresh intervals, and fullscreen editing mode
  • Chart nodes — 19 chart types (bar, line, area, scatter, pie, heatmap, sankey, waterfall, boxplot, and more) powered by Observable Plot. Wire a chart to a query node or write SQL directly in the chart
  • Lineage arrows — visual connectors between query → chart nodes so your data pipeline is actually visible
  • Import everything — CSV, Parquet, JSON, SQLite, S3/R2/MinIO, paste raw data, or fetch from a URL
  • Canvas tabs — multiple named canvases in one session, like browser tabs for your analysis
  • Markdown nodes — annotate your canvas with rich text and headers
  • Section nodes — visually group related nodes into labeled containers
  • Ingest nodes — run SQL on a schedule (synthetic data generator) or poll a URL on an interval
  • MCP server built-in — Claude, Cursor, Windsurf can build dashboards on your canvas via tool calls
  • SQLite + PostgreSQL + MySQL connections — attach external databases and query them alongside local data
  • Export — CSV, JSON, Parquet from any query result
  • Node export/import — share canvas layouts as .sql.garden.json packs, importable via a sqlgarden:// deep link
  • Learning track — built-in interactive SQL tutorial (8 chapters, e-commerce dataset, SELECT through CTEs and window functions)
  • Undo/redo, multi-select, alignment tools, duplicate, color-coding
  • 100% local-first — your data never leaves your machine
reddit.com
u/TheGoodBarn — 14 days ago
▲ 16 r/DuckDB

I built a self-hosted Unified Agentic AI + Business Intelligence platform on DuckDB and Postgres — v1.0.0, source-available

I'm the author. Sharing because the self-hosted BI space is thin and this might be useful to someone here.

AgentSwarms is a BI and agent platform you run yourself — one Docker container plus a Supabase (Postgres) project. No SaaS tier, no telemetry, no call-home.

The data side:

  • 22 database/warehouse connectors (Postgres, MySQL, Snowflake, BigQuery, Databricks, Redshift, Synapse, Trino, Athena, ClickHouse, and more) queried in place, read-only
  • DuckDB as the engine — DuckDB-Wasm in the browser and DuckDB server-side, so local datasets behave identically in both
  • A semantic layer — define dimensions and metrics once; the BI engine and any AI agent query the same definitions, so "revenue" computes one way
  • Data prep flows (joins, filters, derived columns) that push down into the warehouse where possible
  • An AI analyst that writes and runs SQL against your own model keys, constrained by the semantic layer and a table allow-list
  • Scheduled refreshes, data alerts, and dashboards you can embed

Governance, since that's usually the blocker for self-hosted tools: RLS on every table, read-only SQL enforcement (including data-modifying CTEs — WITH d AS (DELETE ...) SELECT was a real bug I fixed), a hash-chained audit log, per-user and per-group spend caps, and full cost traces per query.

Honest limitations: no SOC 2, no third-party pentest, no upgrade guide between versions yet, and rate limits are per-process so multiply by replica count. It's source-available under the Elastic License 2.0 — use it, modify it, run it for yourself and clients; don't resell it as a hosted service. That's not OSI open source and I'm not going to pretend otherwise.

Repo: github.com/AgentSwarms-fyi/agentswarms

Happy to answer anything about the architecture, and genuinely interested in what's missing for your stac

u/Outside-Risk-8912 — 14 days ago