Try DuckDB Transformations in Beta for Free Until July 1st
We've released DuckDB Transformations in beta, offering a faster and more cost-effective alternative to traditional SQL transformations for many workloads.
DuckDB is now available as a new transformation backend in Keboola. It is an in-process analytical database optimized for OLAP workloads, designed for fast query execution on aggregations, joins, and analytical queries on datasets up to ~50 GB.
Why try it
Cost: Credit-based pricing with four backend sizes. Starts at 2 credits per hour for XSmall, up to 18 credits per hour for Large. Free during beta until July 1, 2026.
Familiar SQL: Write standard SQL with DuckDB-specific enhancements like GROUP BY ALL, EXCLUDE for column selection, and ASOF joins. Most Snowflake SQL translates with minimal changes.
Key features
Block-based orchestration: Organize transformations into consecutive blocks. Blocks execute in order. Scripts within each block run in parallel when dependencies allow.
Automatic dependency detection: DuckDB analyzes your SQL using SQLGlot and builds a DAG to optimize execution order automatically.
Parquet optimization: Enable "Use parquet for input tables" in your configuration for better performance and lower memory usage compared to CSV.
Flexible backend sizes: Choose from four sizes (8 GB to 113.6 GB memory). Dynamic backends let you adjust size as needed. Not available on Free/PAYG plans.
Data type inference: Toggle "Infer input table data types" to automatically detect column types from input tables. Reduces manual schema definition work.
Version control: Use latest to always run the most recent DuckDB version, or pin to a specific version (e.g. 1.5.2, 1.4.4) for stability.
Debugging tools: Four sync actions available: syntax check, lineage visualization, execution plan visualization, and expected input tables preview.
Migrating from Snowflake
Most Snowflake SQL works in DuckDB with minor adjustments. Key differences:
| Snowflake | DuckDB |
|---|---|
QUALIFY | ROW_NUMBER() OVER (...) WHERE |
NVL(a, b) | COALESCE(a, b) |
IFF(cond, a, b) | CASE WHEN cond THEN a ELSE b END |
DATEADD(day, 7, date) | date + INTERVAL '7 days' |
ARRAY / OBJECT | LIST / STRUCT |
Case sensitivity: DuckDB converts unquoted table names to lowercase. Columns are always case-sensitive regardless of quoting. Use consistent lowercase naming to avoid issues.
Use the Transformation Migration component (keboola.app-transformation-migration) to automatically convert existing Snowflake transformations to DuckDB. For step-by-step instructions, see the Transformation Migration documentation.
Get started
- Create a new transformation and select DuckDB from the transformation type menu.
- Start with the Small backend (default, 16 GB memory) for most use cases.
- Scale up to Medium or Large as needed.
Beta ends July 1, 2026. Set up your transformations now and have them running smoothly before billing begins.
For detailed configuration options, syntax reference, and best practices, see the DuckDB Transformations documentation.
No migration needed for existing DuckDB transformations.