Skip to main content

Seed configurations

Available configurations

Seed-specific configurations

Resource-specific configurations are applicable to only one dbt resource type rather than multiple resource types. You can define these settings in the project file (dbt_project.yml), a property file (models/properties.yml for models, similarly for other resources), or within the resource’s file using the {{ config() }} macro.

The following resource-specific configurations are only available to Seeds:

dbt_project.yml
seeds:
<resource-path>:
+quote_columns: true | false
+column_types: {column_name: datatype}
+delimiter: <string>

General configurations

General configurations provide broader operational settings applicable across multiple resource types. Like resource-specific configurations, these can also be set in the project file, property files, or within resource-specific files.

dbt_project.yml
seeds:
<resource-path>:
+enabled: true | false
+tags: <string> | [<string>]
+pre-hook: <sql-statement> | [<sql-statement>]
+post-hook: <sql-statement> | [<sql-statement>]
+database: <string>
+schema: <string>
+alias: <string>
+persist_docs: <dict>
+full_refresh: <boolean>
+meta: {<dictionary>}
+grants: {<dictionary>}

Configuring seeds

Seeds can only be configured from YAML files, either in dbt_project.yml or within an individual seed's YAML properties. It is not possible to configure a seed from within its CSV file.

Seed configurations, like model configurations, are applied hierarchically — configurations applied to a marketing subdirectory will take precedence over configurations applied to the entire jaffle_shop project, and configurations defined in a specific seed's properties will override configurations defined in dbt_project.yml.

Examples

Apply the schema configuration to all seeds

To apply a configuration to all seeds, including those in any installed packages, nest the configuration directly under the seeds key:

dbt_project.yml

seeds:
+schema: seed_data

Apply the schema configuration to all seeds in your project

To apply a configuration to all seeds in your project only (i.e. excluding any seeds in installed packages), provide your project name as part of the resource path.

For a project named jaffle_shop:

dbt_project.yml

seeds:
jaffle_shop:
+schema: seed_data

Similarly, you can use the name of an installed package to configure seeds in that package.

Apply the schema configuration to one seed only

To apply a configuration to one seed only, provide the full resource path (including the project name, and subdirectories).

seeds/marketing/properties.yml
version: 2

seeds:
- name: utm_parameters
config:
schema: seed_data

In older versions of dbt, you must define configurations in dbt_project.yml and include the full resource path (including the project name, and subdirectories). For a project named jaffle_shop, with a seed file at seeds/marketing/utm_parameters.csv, this would look like:

dbt_project.yml
seeds:
jaffle_shop:
marketing:
utm_parameters:
+schema: seed_data

Example seed configuration

The following is a valid seed configuration for a project with:

  • name: jaffle_shop
  • A seed file at seeds/country_codes.csv, and
  • A seed file at seeds/marketing/utm_parameters.csv
dbt_project.yml
name: jaffle_shop
...
seeds:
jaffle_shop:
+enabled: true
+schema: seed_data
# This configures seeds/country_codes.csv
country_codes:
# Override column types
+column_types:
country_code: varchar(2)
country_name: varchar(32)
marketing:
+schema: marketing # this will take precedence
0