Skip to main content

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, and their associated YAML files. Additionally, it provides utilities to add tests to models and sources efficiently.

Table of Contents

  1. Installation
  2. Command Overview
  3. Build Commands
  4. Add Commands
  5. Templates
  6. Examples
  7. Best Practices
  8. Support and Contributions
  9. Conclusion

Installation

run pip install breeze-dbt-cli in your dbt projects virtual environment.

Command Overview

Breeze organizes its functionality into several command groups:

  • build: Commands to generate models, YAML files, and sources.
  • 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, and sources.

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. By default, .sql files get created under their own subdirectory named after the model within the path provided. To omit this behaviour and create .sql files directly in the path provided, use --no-subfolder or -n flag.
  • MODEL_NAMES (required): One or more model names for which to generate .sql files.

Options

  • --force, -f: Overwrite existing .sql files if they exist.
  • --template, -t: Path to a custom SQL template file.
  • --no-subfolder, -n: If specified, the .sql file will be created directly in the provided path instead of a subfolder named after the model.

Examples

  • Generate .sql files for model1 and model2 in models/stg/model1/ and models/stg/model2/ respectively:
breeze build model stg model1 model2
  • Generate .sql files for model1 and model2 in in models/stg/, without creating separate subfolders for each model:
breeze build model staging model1 model2 --no-subfolder
  • Generate .sql file for model1 in models/stg/model1/ using a custom template located in templates/model1_template.sql and overwrite existing file:
breeze build model stg model1 --template templates/model1_template.sql --force

breeze build yml

Generate YAML files for one or more models. 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 names for which to generate YAML files.

Options

  • --force, -f: Overwrite existing files if they exist.
  • --template, -t: Path to a custom YAML template file.

Examples

  • Generate YAML files for model1 and model2:
breeze build yml model1 model2
  • Generate .yml file for model1 using a custom template located in templates/model1_template.yml and overwrite existing file:
breeze build yml model1 --template templates/model1_template.yml --force

breeze build source

Generate YAML files for one or more sources. 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 (required): One or more source names for which to generate YAML files.

Options

  • --force, -f: Overwrite existing files if they exist.
  • --template, -t: Path to a custom YAML template file.
  • --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 source1 and source2 under models/schema_name/:
breeze build source my_schema source1 source2
  • Generate source YAML file for source1 using a custom template located in tempaltes/source1_template.yml and save it in models/sources/postgres/:
breeze build source my_schema source1 --template tempaltes/source1_template.yml --path sources/postgres
  • Force overwrite an existing YAML for source1 in models/schema_name/source1.yml:
breeze build source raw source1 --force

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 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 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.
  • --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:

  • {{ model_name }}: Name of the model.
  • {{ source_name }}: 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.

Example Templates

Model YAML Template

version: 2

models:
  - name: {{ model_name }}
    description: 'Describe {{ model_name }} here.'
    tags: []
    columns:
    {% for column in columns %}
      - name: {{ column.name }}
        data_type: {{ column.data_type }}
        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: ''
      tags: []
      columns:
      {% for column in columns %}
        - name: {{ column.name }}
          data_type: {{ column.data_type }}
          description: ''
          # tests:
          #   - not_null
      {% endfor %}

SQL Template

-- Custom SQL Template stg tables
WITH

source AS (
    SELECT *
    FROM {{ source('raw', 'source_name') }}
),

SELECT * FROM source

Best Practices

  • Run dbt compile or dbt build before generating YAML files: This ensures that the manifest.json is up-to-date, which Breeze uses to gather model information.

  • Use the --force flag 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

breeze_dbt_cli-0.2.5.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

breeze_dbt_cli-0.2.5-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file breeze_dbt_cli-0.2.5.tar.gz.

File metadata

  • Download URL: breeze_dbt_cli-0.2.5.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for breeze_dbt_cli-0.2.5.tar.gz
Algorithm Hash digest
SHA256 9beb5c116155ad01f6f7c1c28b50b365c6b941a4243151645c71b627121d99ed
MD5 97389fd7fb9a055d54d21b7fc79191d6
BLAKE2b-256 f72682366229e8a4720d69fc1277e4c653cc77c933914e176e453dd88021ef0f

See more details on using hashes here.

File details

Details for the file breeze_dbt_cli-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: breeze_dbt_cli-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for breeze_dbt_cli-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 23329c56c6d721754be4ff5041cd3aacd4ec63a70b2c1c4b1e3eff9ba8a8ecd5
MD5 fa37024f3accebc69928123675e7ecb1
BLAKE2b-256 3ba55fa75e18a5daff4607ec3d6db2e2e674f35e8004abebc0cb78dcd6014d30

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page