Welcome to Balto
Balto is a dbt compatible SQL model orchestration engine that lives directly inside your Snowflake account. Balto automatically handles deploying your project changes and let's you easily manage scheduled builds and triggered tasks.
Balto's orchestration engine runs on the same warehouse that executes your SQL models and scales to zero when there is no active work. This means you're not paying for an external orchestrator or cloud service to sit around waiting for your models to finish. Save thousands per month with our flat subscription based billing.
With Balto there are no external dependencies, no orchestrators to manage, and no secrets or connections to setup. Scale from proof of concept to thousands of models without paying enterprise prices.
Balto supports running any dbt project that uses the dbt-snowflake
adapter. Or you can use the Balto CLI, a fork of dbt-core which adds several new features, like schedules and triggers.
Quick Start
Clone our example repo and follow our guide to learn how to deploy your first model.
Ready to get started? Check out the installation instructions.
How it works
Balto is a fork of dbt-core that has been rebuilt from the ground up to run as a Snowflake Native app. The following are the major design differences:
Compilation
Balto simplifies the parsing process when building your project. Any database interactions are deferred during compilation, this allows us push all database interactions to the Balto Snowflake Native App installed in your account. This means if you use our Github Integation, you can enable automated deployments without having to manage any external accounts or connections.
Orchestration
Balto implements a batteries included orchestration engine inside the Snowflake App. When you deploy your compiled projects via our Gitub integration (or via a call to our stored procedure), the Balto orchestrator handles deploying your compiled project from directly inside your Snowflake account.
Under the hood, Balto's orchestration engine uses Snowflake triggered tasks and streams to implement a completely event driven scheduler that allows it to scale to zero when no models are being executed.
dbt macro executor
Balto includes a lightweight re-implementation of dbt's Jinja macro
extension that allows it to execute your model inside a stored procedure that runs on the same warehouse the underlying queries get run on.
Comparisons
Feature | dbt Cloud | Balto |
---|---|---|
Orchestration | ||
Native Scheduler (1) | ||
Triggers (2) | ||
Metrics (3) | ||
Security | ||
Native Execution (4) | ||
Single Tenant (5) | ||
CI/CD | ||
Native Dev Environments (6) | ||
Blue/Green Deploys (7) | ||
Github Integration (8) | ||
Multi-Project Support | ||
Native Documentation (9) | ||
Cross-project dependencies (10) |
-
Balto's Schedules let's you define your schedules directly in your project code and seamlessly execute them with the Balto Orchestrator, a Snowflake Native App which runs directly in your Snowflake account.
-
Define Triggers in your project and start building event based pipelines. Triggers are a special type of materialization that track changes in your data and execute custom Jinja macros or Python code when new rows arrive. With Triggers you can build complex distributed pipelines without requiring an external orchestrator like Airflow.
-
With Application Metrics you can define metrics for critical business processes in your project and push those metrics directly to DataDog in near real time. Application metrics can improve your SLAs and reduce monitoring costs since they don't rely on periodically polling Snowflake like existing solutions.
-
The Balto Orchestrator is installed as a Snowflake Native app, which means that the execution of your models happens entirely within your Snowflake account. No external connections required, and no vpcs or secrets to manage.
-
The Balto Orchestrator is single tenant by design, it runs entirely within your Snowflake account and no resources are shared.
-
Native dev environments let you create and run models directly in Snowflake with no local dev setup required. Write and test models in Snowsight or your IDE of choice.
-
Balto's blue/green deploys allow you to deploy changes to ephemeral staging environments, ensuring all of your projects tests pass before swapping the production environment.
-
Balto integrates seamlessly with Github. Install our Github App and the Balto Orchestrator will automatically deploy changes to your projects.
-
The Balto Orchestrator provides a central repository of all your projects. Anyone with Snowflake access can find and explore all of the projects installed in your Snowflake account.
-
Since the Balto Orchestrator stores the state of all of your projects in Snowflake, you can easily reference dependencies managed by other projects.