> ## Documentation Index
> Fetch the complete documentation index at: https://docs.elementary-data.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Elementary dbt package

The Elementary dbt package serves as a collector of logs and metadata from your dbt project and offers a set of data anomaly detection and schema tests.
To gain the most value from the dbt package, we recommend using it with the [Elementary Cloud Platform](/cloud/introduction) or with [Elementary open-source CLI tool](/oss/oss-introduction).

Quickstart the Elementary dbt package in minutes [here](/data-tests/dbt/quickstart-package). The repository and source code of the  can be [found here](https://github.com/elementary-data/dbt-data-reliability).

## Package Features

The Elementary dbt package is designed to power data observability use cases for dbt pipelines.
This package will upload logs and metadata generated from your runs as dbt artifacts into tables in your data warehouse.
Additionally, it offers a wide range of tests, including anomalies in volume, freshness, columns and different dimensions of your data.

The impact of the package on **`dbt run`** is minimal, and most of the processing happens as part of the data tests that are executed on **`dbt test`**.

<Accordion title="What are dbt packages and packages.yml?">
  A dbt package is additional Jinja and SQL code that is added to your project, for additional functionality. In fact, each package is a dbt project. By adding a package to your project, you are adding the package code to be part of your project, you can reference its macros, execute its models, and so on.

  Add packages to your project by creating a `packages.yml` file under the main project directory (where your `
      dbt_project.yml` is), and adding the relevant package. After you add a new package, run `dbt deps` to actually pull its
  code to your project. This is also how you update packages.
  Some packages we recommend you check out: [dbt\_utils](https://github.com/dbt-labs/dbt-utils/tree/0.8.2/)
  , [dbt\_date](https://github.com/calogica/dbt-date/tree/0.5.4/)
  , [codegen](https://github.com/dbt-labs/dbt-codegen/tree/0.5.0/).
</Accordion>

After you deploy the dbt package, you can use Elementary tests, and your dbt artifacts will be uploaded automatically with on-run-end hooks:

<CardGroup cols={3}>
  <Card title="Elementary data tests" href="/data-tests/introduction" />

  <Card title="dbt artifacts" href="/data-tests/dbt/dbt-artifacts" />

  <Card title="on-run-end hooks" href="/data-tests/dbt/on-run-end_hooks" />
</CardGroup>

## Elementary schema

The Elementary package creates various models to store information about collected dbt artifacts and test results.

To avoid mixing with your existing models, we recommend configuring a dedicated schema for the Elementary models using
the [dbt custom schema](https://docs.getdbt.com/docs/building-a-dbt-project/building-models/using-custom-schemas)
option.
Here is an example configuration, that creates a schema with the suffix '\_elementary' for elementary models:

```yml dbt_project.yml theme={null}
models:
  elementary:
    +schema: elementary
```

## Package full refresh

Elementary incremental models are not full-refreshed by default. This is because these models contain
information such as historical runs and test results, which typically you'd want to maintain even when full refreshing
the models of your main dbt project.

However, if you wish to change this behavior and include Elementary models as a part of the full refresh, you can set
the following var:

```yaml theme={null}
vars:
  elementary_full_refresh: true
```
