Spec Version:
Manage SQL Models using Rudder CLI Beta
- free
- growth
- enterprise
4 minute read
This feature is in Public Beta as part of RudderStack’s Early Access Program, where we work with early users and customers to test new features and get feedback before making them generally available.
The SQL Models feature in Rudder CLI lets you manage your Reverse ETL SQL model sources through a Git-based workflow. It lets you store your SQL model configurations as YAML files in Git repositories, and use standard Git workflows to collaborate on any changes.
This approach brings version control, collaboration, and review processes to your SQL model configurations, addressing key limitations of managing these resources solely through the UI.
Key features
Bi-directional management
- Create new SQL model resources directly from CLI
- Import existing SQL model sources from your workspace into Git
Validation and preview
- Validate SQL syntax and connectivity before deployment
- Preview query results to ensure correctness
- Check primary key constraints and column mappings
Flexible configuration
- Define SQL queries inline in YAML files or reference external
.sqlfiles - Support for multiple warehouse types (listed below)
Automation ready
- GitHub Actions integration for CI/CD workflows
- Dry-run capabilities to preview changes before applying them
- Cross-domain resource management alongside Data Catalog and Tracking Plan resources
Supported warehouses
The SQL Models feature supports the following data warehouses:
- PostgreSQL
- MySQL
- Snowflake
- Amazon Redshift
- Google BigQuery
- Databricks
- Trino
Workflow overview
- Configure your Git repository and Rudder CLI project.
- Create new SQL models or import existing ones from your workspace.
- Make changes to your SQL models using your preferred editor.
- Validate your changes using the
validatecommand andapplycommand in dry-run mode (via the--dry-runflag). - Use the
previewcommand for SQL validation and connection validation. - Apply your changes using the
applycommand. - Create pull requests for team review and approval.
- Automatically sync approved changes to your workspace via GitHub Actions.
Before you begin
Before you begin, make sure you have:
- Rudder CLI installed and configured locally
- A Rudder CLI project directory for storing the SQL model YAML resources
- GitHub Actions configured if you want automated syncing in CI/CD
- A workspace-level Service Access Token in the RudderStack dashboard with the following permissions to manage SQL models:
- If you’re on Free or self-hosted plan, or for testing and development only: Generate a Personal Access Token with Read-Write role
Any action authenticated by a Personal Access Token will break if the user generating the token is removed from the organization or there is a breaking change to their permissions.
Token permissions for legacy RBAC system
If you are on the legacy Permissions Management (RBAC) system, your workspace-level Service Access Token should have minimum Admin permissions.
See Generate a workspace-level Service Access Token for steps to create the token.

Recommended project structure
The SQL model resources need to be in the location you pass to the apply command. If you don’t specify a location, the current directory is used as the project location.
Theapplycommand syncs all Rudder CLI resources it finds under that path (SQL models, Data Catalog, and so on).
A recommended directory structure for your CLI project is shown:
my-rudder-project/
├── sql-models/
│ ├── user-analytics.yaml
│ ├── product-models.yaml
│ └── sql/
│ ├── user-analytics.sql
│ └── product-views.sql
├── data-catalog/
│ ├── events/
│ │ └── product-events.yaml
│ └── properties/
│ └── user-properties.yaml
└── README.md
Key considerations
- File discovery: The CLI recursively scans the specified directory for all
.yamland.ymlfiles. - Flexible organization: You can organize files in any directory structure that makes sense for your project.
- External SQL files: When using the
fileoption in your YAML configurations, ensure the SQL files are accessible relative to the YAML file location. - Mixed resources: The CLI can manage SQL models alongside Data Catalog resources (events, properties, custom types, Tracking Plans) from the same project directory.
Get started
- Follow the End-to-End Walkthrough: SQL Models with Rudder CLI for a single guided path through create, import, validate, preview, and apply
- See Create New SQL Model Resources, Import Existing SQL Model Resources, and Validate and Preview Your Models for focused how-tos
- See the SQL Model Resources YAML Reference for field-level specs
- Automate with GitHub Actions for Rudder CLI
