A CLI tool to streamline dbt project development.
Project description
Breeze CLI Tool Documentation
Introduction
Breeze is a command-line interface (CLI) tool designed to streamline the development of dbt (Data Build Tool) projects. It automates the creation and management of dbt models, sources, semantic models, tests, and their associated YAML files. Additionally, it provides utilities to add tests to models and sources efficiently.
Table of Contents
- Installation
- Command Overview
- Build Commands
- Add Commands
- Templates
- AI-Powered Description Generation
- Examples
- Best Practices
- Support and Contributions 10.Conclusion
Installation
Run pip install breeze-dbt-cli in your dbt project's virtual environment.
Command Overview
Breeze organizes its functionality into several command groups:
- build: Commands to generate models, YAML files, sources, semantic models, and tests.
- add: Commands to add tests to models or sources.
Use breeze --help to display the help message and list of available commands.
Build Commands
Commands under the build group help in creating models, YAML files, sources, semantic models, and tests.
breeze build model
Generate .sql files with a boilerplate SELECT statement for each model under models/folder_name/model_name/model_name.sql.
Usage
breeze build model [OPTIONS] PATH MODEL_NAMES...
Arguments
- PATH (required): The folder path where the models' .sql files will be created.
- MODEL_NAMES (required): One or more model names for which to generate
.sqlfiles.
Options
- --force, -f: Overwrite existing
.sqlfiles if they exist. - --template, -t: Path to a custom SQL template file.
- --no-subfolder, -n: If specified, the
.sqlfile will be created directly in the provided path instead of a subfolder named after the model.
Examples
- Generate
.sqlfiles formodel1andmodel2inmodels/stg/model1/andmodels/stg/model2/respectively:
breeze build model stg model1 model2
- Generate
.sqlfiles formodel1andmodel2inmodels/stg/without creating separate subfolders for each model:
breeze build model stg model1 model2 --no-subfolder
- Generate
.sqlfile formodel1inmodels/stg/model1/using a custom template located intemplates/model1_template.sqland overwrite existing file:
breeze build model stg model1 --template templates/model1_template.sql --force
breeze build yml
Generate YAML files for one or more model, snapshot, or seed. The YAML file will be created in the same directory as the corresponding .sql file for the model.
Usage
breeze build yml [OPTIONS] MODEL_NAMES...
Arguments
- MODEL_NAMES (required): One or more model name for which to generate YAML files.
Options
- --force, -f: Overwrite existing files if they exist.
- --template, -t: Path to a custom YAML template file.
- --describe, -d: Use ChatGPT to generate descriptions. See AI-Powered Description Generation
Examples
- Generate YAML files for
model1andmodel2:
breeze build yml model1 model2
- Generate
.ymlfile formodel1using a custom template located intemplates/model1_template.ymland overwrite existing file:
breeze build yml model1 --template templates/model1_template.yml --force
breeze build source
Generate YAML files for one or more source. By default, the YAML file is created under models/schema_name/source_name.yml. However, you can specify a custom path using the --path flag.
Usage
breeze build source [OPTIONS] SCHEMA_NAME SOURCE_NAMES...
Arguments
- SCHEMA_NAME (required): The schema name of the sources.
- SOURCE_NAMES (optional): One or more source names for which to generate YAML files.
Options
- --all, -a: Build YAML files for all sources in the schema.
- --force, -f: Overwrite existing files if they exist.
- --template, -t: Path to a custom YAML template file.
- --describe, -d: Use ChatGPT to generate descriptions. See AI-Powered Description Generation
- --path, -p: Specify a custom directory where the source YAML file will be saved. If the path does not exist, it will be created.
Examples
- Generate source YAML files for
source1andsource2undermodels/schema_name/:
breeze build source my_schema source1 source2
- Generate source YAML file for
source1using a custom template located intemplates/source_template.ymland save it inmodels/sources/postgres/:
breeze build source my_schema source1 --template templates/source_template.yml --path sources/postgres
- Force overwrite existing YAML for all sources in the
rawschema:
breeze build source raw --all --force
breeze build semantic
Generate YAML boilerplate for the semantic model of dbt model. The YAML file will be created in the same directory as the corresponding .sql file for the model, or in a custom path specified with the --path flag.
Usage
breeze build semantic [OPTIONS] MODEL_NAMES...
Arguments
- MODEL_NAMES (required): One or more dbt model names for which to generate semantic YAML files.
Options
- --force, -f: Overwrite existing files if they exist.
- --template, -t: Path to a custom semantic model template file.
- --path, -p: Specify a custom output path for the semantic YAML files.
Examples
- Generate semantic model YAML files for
model1andmodel2:
breeze build semantic model1 model2
- Generate semantic model YAML for
model1using a custom template and overwrite existing file:
breeze build semantic model1 --template templates/semantic_template.yml --force
- Save semantic YAML for
model1in a custom directorymodels/semantic/:
breeze build semantic model1 --path models/semantic
breeze build test
Generate boilerplate .sql files for custom dbt tests. The .sql file is created in the first test-path defined in the dbt_project.yml, or in a custom directory specified with the --path flag.
Usage
breeze build test [OPTIONS] TEST_NAMES...
Arguments
- TEST_NAMES (required): One or more custom test names for which to generate SQL files.
Options
- --force, -f: Overwrite existing files if they exist.
Examples
- Generate generic test SQL files for
test1andtest2:
breeze build test test1 test2
Add Commands
Commands under the add group assist in adding tests to models or sources.
breeze add test
Add one or more tests to a model, seed, snapshot, or source. If columns are specified, the tests are added to those columns. If no columns are specified, the tests are added at the model, seed, snapshot, or source level.
Usage
breeze add test [OPTIONS] TEST_NAMES...
Arguments
- TEST_NAMES (required): One or more test names to add (e.g.,
not_null,unique).
Options
- --model, -m: The model name to add the test(s) to.
- --seed, -e: The source name to add the test(s) to.
- --snapshot, -n: The source name to add the test(s) to.
- --source, -s: The source name to add the test(s) to.
- --columns, -c: Comma-separated column names to add the test(s) to.
Examples
- Add multiple tests to specific columns in a model:
breeze add test not_null unique --model customers --columns "customer_id, email"
- Add a test at the model level:
breeze add test unique --model orders
- Add multiple tests to specific columns in a source:
breeze add test not_null accepted_values --source status --columns status_code
Templates
Breeze allows you to use custom templates for generating .sql and .yml files. You can specify a custom template using the --template option with the build commands.
Template Placeholders
You can include the following placeholders in your templates:
- {{ resource_tyoe }}: Type of resource (e.g source, seed, snapshot, or model).
- {{ model_name }}: Name of the model.
- {{ model_description }}: Name of the model.
- {{ source_name }}: Name of the source table.
- {{ source_description }}: Name of the source table.
- {{ schema_name }}: Name of the schema.
- {{ database }}: Name of the database.
- {{ columns }}: List of columns (used in loops).
Within loops, each column has:
- {{ column.name }}: Column name.
- {{ column.data_type }}: Data type of the column.
- {{ column.description }}: Data type of the column.
Example Templates
Model YAML Template
version: 2
{{ resource_type }}:
- name: {{ model_name }}
description: {{ model_description }}
tags: []
columns:
{% for column in columns %}
- name: {{ column.name }}
data_type: {{ column.data_type }}
description: {{ column.description }}
tests:
- not_null
{% endfor %}
Source YAML Template
version: 2
sources:
- name: {{ schema_name }}
description: ''
database: {{ database }}
schema: {{ schema_name }}
tables:
- name: {{ source_name }}
description: {{ source_description }}
tags: []
columns:
{% for column in columns %}
- name: {{ column.name }}
data_type: {{ column.data_type }}
description: {{ column.description }}
tests:
- not_null
{% endfor %}
AI-Powered Description Generation
Breeze allows you to use ChatGPT in order to generate descriptions for models, sources, seeds, snapshots, and their corresponding columns.
Configuration
To enable AI-assisted description generation, add an ai_token field to your profiles.yml file:
dbt_project:
target: dev
outputs:
dev:
type: type
host: host
user: user
password: pwd
port: 1234
dbname: database
schema: schema
ai_token: "your_openai_api_key_here"
Usage
To generate descriptions using AI, use the --describe or -d flag with the breeze build yml, breeze build source commands.
Best Practices
-
Run
dbt compileordbt buildbefore generating YAML files: This ensures that themanifest.jsonis up-to-date, which Breeze uses to gather model information. -
Use the
--forceflag cautiously: Overwriting existing files can lead to loss of manual changes. Ensure you have backups or use version control. -
Validate Generated Files: After generating or modifying files, validate the YAML syntax and dbt configurations.
-
Enclose Columns with Spaces in Quotes: When specifying columns with spaces in their names or spaces after commas, enclose the columns in quotes.
Support and Contributions
If you encounter issues or have suggestions for new features, please consider contributing to the project or opening an issue on the project's repository.
Conclusion
Breeze simplifies dbt project development by automating repetitive tasks and enforcing consistency across models and sources. By leveraging custom templates and automated test additions, you can focus on developing robust data transformations.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file breeze_dbt_cli-0.4.4.tar.gz.
File metadata
- Download URL: breeze_dbt_cli-0.4.4.tar.gz
- Upload date:
- Size: 25.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cd9b8478909cfbed02255aff2cf1e7aa5ec180fe3892903849231165e02e8fe
|
|
| MD5 |
8ad64a824abd29f5357037dd9a482210
|
|
| BLAKE2b-256 |
daad0e422bd8e88743255db1dae825f30b6d951729355e60d7cec857ea5b7d0d
|
File details
Details for the file breeze_dbt_cli-0.4.4-py3-none-any.whl.
File metadata
- Download URL: breeze_dbt_cli-0.4.4-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbd5f6a92a5abc39aa7c2b8fc6e388fbba544e56e6f366aa57fea500dfe72530
|
|
| MD5 |
d67d250ba1bbc70602447fb382ad07fd
|
|
| BLAKE2b-256 |
0a3f5a0080b8add8f0ca582fb0dcdf2f48a82580f6f2cfaab577f50a722e0d37
|