Skip to main content

Declaring a source

Overview

The source.yml file in dbt project is used to define the source tables that will be transformed by dbt models. This file contains information such as the database name, schema, and corresponding tables for a given source. By using the {{ source() }} function, you can select from source tables in your models and establish the lineage of your data.

To use dbt transformations, you need to create the source.yml file. Here is an example of what the source.yml file might look like for a project that transforms data from a database:

Sources:

- name: klaviyo
database: platformdbtest\_production\_main
schema: platformdbtest\_production
tables:
- name: campaigns
identifier: klaviyo\_klaviyo\_campaign
- name: events
identifier: klaviyo\_klaviyo\_events

 - name: square
database: platformdbtest\_production\_main
schema: platformdbtest\_production
tables:
- name: orderlineitems
identifier: square\_square\_orderlineitems
- name: order
identifier: square\_square\_order
- name: location
identifier: square\_square\_location

In this example of a source.yml file for dbt transformation, there are two specified sources: klaviyo and square. The klaviyo source is in the platformdbtest\_production\_main database, platformdbtest\_production schema and has two tables that can be referenced in dbt models for transformations: klaviyo\_klaviyo\_campaign as campaigns and klaviyo\_klaviyo\_events as events.

You can use the {{ source() }} function to select from source tables in dbt models and establish data lineage. For example, if you create a model that references the klaviyo\_klaviyo\_campaign table from the klaviyo source, you can track the lineage of the data in your models. Similarly, if you create a model that references the square\_square\_order table from the square source, you can establish the data lineage for that table.