# Commands

The dbt™ CLI offers a range of commands for executing data transformations. Each command has its own options and parameters, allowing you to precisely control your data transformations. Let's explore these commands and their common use cases.

<figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2F9eD5uCuhXySUysHgyCFW%2Fimage.png?alt=media&#x26;token=6a6aca49-758f-4e01-b1a4-85ef82c75d91" alt=""><figcaption></figcaption></figure>

### The Basics: dbt run

The bread and butter of dbt™ is the run command. It's like hitting the "Go" button on your data transformations. The dbt run command is the most complex and can be broken down into 4 parts:

* **Arguments** like --select, --exclude and others
* **Model names** to choose what models to run
* **Method selectors** offering ability to fine tune which models to run
* **Graph selectors** offering further fine tuning to apply complex boolean-like logic

<figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2FK1FdgI4ftFSav6CEE3BL%2Fimage.png?alt=media&#x26;token=edcd1722-1a0e-452d-b8a5-cd211718d9de" alt=""><figcaption></figcaption></figure>

Further configure your `dbt run` command with these options:&#x20;

```bash
# Run specific models
dbt run --select cool_waffle

# Skip certain models
dbt run --exclude boring_jaffle

# Rebuild everything from scratch
dbt run --full-refresh

# Pass variables to models
dbt run --vars '{"my_var": "value"}'

# Speed up runs with multiple threads
dbt run --threads 4
```

### Running Tests

Don't let bad data crash your party.

Use dbt test to keep your transformations in check and apply data quality best practices to your dbt™ transformation pipelines:

```bash
dbt test

# Test specific models
dbt test --select critical_data

# Run schema tests only
dbt test --select "test_type:generic"
```

### Source Freshness

Source freshness in dbt™ is like a built-in data freshness checker. It helps you:

* Monitor when your source data was last updated
* Set expectations for how recent your data should be
* Alert you when data is stale

To check the freshness of all your defined sources, run:

```bash
dbt source freshness
```

### Compile

Use dbt compile to convert all your dbt™ models with their Jinja references into raw SQL. This is the SQL dbt™ will run against your data warehouse. It's like X-ray vision for your SQL:

```bash
bashCopydbt compile
```

When your dbt™ models fail to run, you need to start with the compiled SQL first.

### Generate Documentation

Convert all your schema and table descriptions into static HTML files and then serve them from a server or cloud bucket like AWS S3.

```bash
dbt docs generate
dbt docs serve
```

### Debug Mode

When you can't make head or tail of errors you're seeing during development or production runs, use the --debug option. This will generate additional logs in your terminal to help triage the situation. This is most useful in diagnosing warehouse connection errors.

```bash
dbt run --debug
```

### The Snapshot

Capture data changes over time:

```bash
dbt snapshot
```

### Build Everything

The all-in-one command for the impatient:

```bash
dbt build
```

It runs, tests, and snapshots in one go.

### CSVs: dbt seed

Convert CSV files to tables:

```bash
dbt seed
```

### List Models: dbt ls

List your models:

```bash
dbt ls

# List the most important resources
dbt ls --select tag:important
```

### Preview Model Output: dbt show

Preview your model's output:

```bash
dbt show --select cool_waffle
```

### Retry When Something Fails

Oops, something failed? Try again:

```bash
dbt retry
```

### Custom Macros: dbt run-operation

Run custom macros:

```bash
dbt run-operation crazy_macro
```

### Clone Production Environment

Clone your production environment faster than you can say "duplicate":

```bash
dbt clone --state path/to/artifacts
```
