Перейти к основному содержимому

dbt_project.yml

Файл dbt_project.yml является обязательным для всех проектов dbt. Он содержит важную информацию, которая сообщает dbt, как работать с вашим проектом.

Каждому проекту dbt необходим файл dbt_project.yml — именно по нему dbt определяет, что каталог является проектом dbt. Кроме того, в этом файле содержится важная информация, которая сообщает dbt, как именно работать с вашим проектом. Принцип работы следующий:

  • dbt использует YAML в нескольких местах. Если вы ранее не работали с YAML, полезно изучить, как в нём представлены массивы, словари и строки.
  • По умолчанию dbt ищет файл dbt_project.yml в текущем рабочем каталоге и его родительских каталогах, однако вы можете указать другой каталог с помощью флага --project-dir или переменной окружения DBT_PROJECT_DIR.
  • Укажите идентификатор вашего проекта dbt в файле dbt_project.yml, используя параметр project-id в конфигурации dbt-cloud. Идентификатор проекта можно найти в URL вашего проекта dbt. Например, в https://YOUR_ACCESS_URL/11/projects/123456 идентификатор проекта — 123456.

Пример

Следующий пример представляет собой список всех доступных конфигураций в файле dbt_project.yml:

dbt_project.yml
name: string

config-version: 2
version: version

profile: profilename

model-paths: [directorypath]
seed-paths: [directorypath]
test-paths: [directorypath]
analysis-paths: [directorypath]
macro-paths: [directorypath]
snapshot-paths: [directorypath]
docs-paths: [directorypath]
asset-paths: [directorypath]
function-paths: [directorypath]

packages-install-path: directorypath

clean-targets: [directorypath]

query-comment: string

require-dbt-version: version-range | [version-range]

flags:
<global-configs>

dbt-cloud:
project-id: project_id # Обязательный параметр
defer-env-id: environment_id # Необязательный параметр
account-host: account-host # По умолчанию используется `cloud.getdbt.com`; обязателен, если используется другой Access URL

exposures:
+enabled: true | false

quoting:
database: true | false
schema: true | false
identifier: true | false
snowflake_ignore_case: true | false # Fusion-only config. Aligns with Snowflake's session parameter QUOTED_IDENTIFIERS_IGNORE_CASE behavior.
# Ignored by dbt Core and other adapters.
metrics:
<metric-configs>

models:
<model-configs>

seeds:
<seed-configs>

semantic-models:
<semantic-model-configs>

saved-queries:
<saved-queries-configs>

snapshots:
<snapshot-configs>

sources:
<source-configs>

data_tests:
<test-configs>

vars:
<variables>

on-run-start: sql-statement | [sql-statement]
on-run-end: sql-statement | [sql-statement]

dispatch:
- macro_namespace: packagename
search_order: [packagename]

restrict-access: true | false

functions:
<function-configs>

Префикс +

dbt различает имя папки и конфигурацию, используя префикс + перед именем конфигурации. Префикс + используется только для конфигураций и применяется в файле dbt_project.yml в рамках соответствующего ключа ресурса. Он не применяется к:

  • Jinja-макросу config() внутри файла ресурса
  • свойству config в файле .yml

Подробнее см. в разделе Using the + prefix.

Соглашение об именовании

Важно следовать правильным конвенциям именования YAML для конфигураций в вашем файле dbt_project.yml, чтобы dbt мог правильно их обработать. Это особенно важно для типов ресурсов с более чем одним словом.

  • Используйте дефисы (-) при настройке типов ресурсов с несколькими словами в вашем файле dbt_project.yml. Вот пример для сохраненных запросов:

    dbt_project.yml
    saved-queries:  # Используйте дефисы для типов ресурсов в файле dbt_project.yml.
    my_saved_query:
    +cache:
    enabled: true
  • Используйте подчеркивание (_) при настройке типов ресурсов с несколькими словами для YAML-файлов, отличных от dbt_project.yml. Например, вот тот же ресурс сохраненных запросов в файле semantic_models.yml:

    models/semantic_models.yml
    saved_queries:  # Используйте подчеркивания везде, кроме файла dbt_project.yml.
    - name: saved_query_name
    ... # Остальная часть конфигурации сохраненных запросов.
    config:
    cache:
    enabled: true

Нашли ошибку?

0
Loading