Your data lifecycle
with dynamic SQL

Work on top of your databases' dialect with no meta language or confusing layer of abstraction.

SQL with Pythonistic powers

Blacksmith exposes a Python / Django-syntax like templating-language when working with SQL files. This is a convenient way to generate SQL dynamically interpolating the template with contextual data and returning the compiled SQL file.

Discover Transformation syntax
{% if order %}
INSERT INTO orders (id, amount, user_id, created_at)
    '{% uuid %}',
    {{ order.amount | floatformat:2 }},
    '{{ }}',

    {% if order.created_at %}
      '{{ order.created_at }}'
    {% else %}
      '{% now "2006-01-02 15:04:05" %}'
    {% endif %}
{% endif %}

Load & Transform with SQL

Execute statements against any SQL database within a transaction for managing analytical operations, such as refreshing views.

Read guide about running operations
Manage your data pipeline using SQL with Blacksmith


SELECTdata and download / version returned rows into CSV and JSON files.

Read guide about running selects
Download data directly from your data warehouse with Blacksmith

Manage database migrations

Version, run, rollback, and discard migrations for one or multiple databases with no conflicts across teams.

Learn more about migrations
Manage SQL migrations with Blacksmith

Collaborate with software
engineers like never before

Data engineering with Blacksmith.
Working with SQL databases is only a part of Blacksmith capabilities.

Data engineering
delivered at your scale

Blacksmith comes in two Editions to give you the flexibility to operate reliable data engineering solutions at your scale.