# Quickstart

URL: https://select.dev/docs/resources/dbt-snowflake-monitoring/quickstart
Index of all SELECT docs: https://select.dev/docs/llms.txt

> A quickstart guide from SELECT

## Step 1: Grant access

Grant dbt's role access to the `snowflake` database:

```sql
grant imported privileges on database snowflake to role your_dbt_role_name;
```

## Step 2: Update packages.yml

Add the package to your `packages.yml` file:

```yaml
packages:
  - package: get-select/dbt_snowflake_monitoring
    version: [">=5.0.0", "<6.0.0"] # We'll never make a breaking change without creating a new major version.
```

## Step 3: Enable query tags

1. To attribute costs to individual models via the `dbt_metadata` column in the `query_history_enriched` model, query comments and tags are added to all dbt-issued queries. Both query comments and tags are needed to collect the required metadata for the `dbt_queries` model. First, make sure to remove any existing `+query_tag: dbt` from your `dbt_project.yml`, then add the query tags with one of these two options:

Option 1: If running dbt >= 1.2, simply configure the dispatch search order in `dbt_project.yml`.

```yaml
dispatch:
  - macro_namespace: dbt
    search_order:
      - <YOUR_PROJECT_NAME>
      - dbt_snowflake_monitoring
      - dbt
```

Option 2: If running dbt < 1.2, create a folder named `macros` in your dbt project's top level directory (if it doesn't exist). Inside, make a new file called `query_tags.sql` with the following content:

```sql
{% macro set_query_tag() -%}
{% do return(dbt_snowflake_monitoring.set_query_tag()) %}
{% endmacro %}

{% macro unset_query_tag(original_query_tag) -%}
{% do return(dbt_snowflake_monitoring.unset_query_tag(original_query_tag)) %}
{% endmacro %}
```

## Step 4: Enable query comments

1. To configure the query comments, add the following config to `dbt_project.yml`.

```yaml
query-comment:
  comment: '{{ dbt_snowflake_monitoring.get_query_comment(node) }}'
  append: true # Snowflake removes prefixed comments.
```

That's it! All dbt-issued queries will now be tagged and start appearing in the `dbt_queries.sql` model.

## Building the models

By default, the models in this package will automatically get built during any full run of your dbt project. If you would like to manually create the models, or run them on a separate schedule, you can do so using [dbt's node selection syntax](https://docs.getdbt.com/reference/node-selection/syntax):

`dbt run -s dbt_snowflake_monitoring`

## dbt Cloud URLs

If you're using dbt Cloud, columns `dbt_cloud_job_url` and `dbt_cloud_run_url` can be configured in the `dbt_queries` model. To do so, set the variable `dbt_cloud_account_id`. This id can be retrieved from in between `/deploy/` and `/projects/` in any dbt Cloud URL.

By default, the URL prefix of `https://cloud.getdbt.com/deploy/` is used. If you're using a different region of dbt Cloud, this prefix can be overridden by specifying the `dbt_cloud_url` variable.

## Troubleshooting

### No data populated in the tables

If you aren't seeing data populated in the tables (example [here](https://github.com/get-select/dbt-snowflake-monitoring/issues/145)), it is possible that your account is missing `ORGADMIN` access. Please see [here](https://select.dev/docs/snowflake-metadata-access#step-5-ensure-your-account-has-orgadmin-access) for instructions on enabling `ORGADMIN` access in your Snowflake account.
