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

Сопоставление папок проекта со схемами хранилища

Папки упорядочивают ваш код. Схемы (или наборы данных в BigQuery) упорядочивают таблицы и представления, которые этот код создает в хранилище. Вы можете сопоставить папки со схемами, чтобы модели подготовительного слоя, промежуточного слоя и витрин было легко найти. dbt добавляет целевую схему в качестве префикса к каждой схеме, чтобы работа в среде разработки не приводила к перезаписи данных в production.

Сопоставление папок с пользовательскими схемами​

По умолчанию dbt создает все модели в целевой схеме, которая определяется средой в dbt platform или профилем при локальном запуске (например, для разработки, CI или production). Чтобы выделить моделям в папке собственную схему, задайте +schema для этой папки. В dbt это называется пользовательской схемой, и она не заменяет целевую схему. Вместо этого dbt объединяет их в <target_schema>_<custom_schema>, поэтому в средах разработки и production модели создаются в разных схемах. Подробнее см. в разделе Пользовательские схемы.

Мы рекомендуем называть пользовательские схемы по именам папок проекта, чтобы модели подготовительного слоя, промежуточного слоя и витрин было легко найти в хранилище. Например, задайте +schema: staging, +schema: intermediate и +schema: marts. Если ваша команда уже использует другие названия, используйте их.

Например, при использовании analytics_prod и alice_dev в качестве целевых схем dbt создает модели из каждой папки в следующих схемах:

ПапкаНастройкаProduction (analytics_prod)Разработка (alice_dev)
models/staging/+schema: staginganalytics_prod_stagingalice_dev_staging
models/intermediate/+schema: intermediateanalytics_prod_intermediatealice_dev_intermediate
models/marts/+schema: martsanalytics_prod_martsalice_dev_marts

Источники указывают на уже существующие таблицы, обычно в raw. dbt читает эти таблицы, а не создает их. Подробнее см. в разделах Подготовительный слой и Источники.

примечание

В примере Jaffle Shop можно загрузить seed-данные в raw, если включен параметр load_source_data. Эти seed-файлы используют +schema: raw, и их данные загружаются в схему raw.

Настройка пользовательских схем в dbt_project.yml​

Когда вы задаете +schema для папки в dbt_project.yml, каждая модель в этой папке наследует эту настройку. Задавайте схему для отдельной модели только в том случае, если эта модель должна использовать другую схему.

dbt_project.yml
models:
jaffle_shop:
staging:
+materialized: view
+schema: staging
intermediate:
+materialized: view
+schema: intermediate
marts:
+materialized: table
+schema: marts

Ключ jaffle_shop должен совпадать со значением name в вашем dbt_project.yml. В примере Jaffle Shop есть только staging и marts; блок intermediate не используется, пока вы не добавите эту папку.

В этом руководстве настройки по умолчанию задаются для папок, а не для каждой модели. Подробнее см. в разделе Остальная часть проекта.

Использование только пользовательской схемы в production​

Чтобы использовать в production схему marts вместо analytics_prod_marts, воспользуйтесь встроенным подходом generate_schema_name_for_env. Он использует только пользовательскую схему, когда target.name равен prod. Во всех остальных средах он игнорирует пользовательские схемы и создает все модели в целевой схеме (alice_dev). Не изменяйте стандартный макрос так, чтобы он исключал целевую схему во всех средах: иначе запуски в среде разработки могут записывать данные в те же схемы, что и запуски в production.

Использование названий схем bronze, silver и gold​

Если в вашем хранилище используются названия схем bronze, silver и gold, они сопоставляются с теми же папками, которые обсуждались выше. Менять структуру проекта dbt не нужно.

В следующей таблице показано соответствие этих названий папкам из этого руководства:

Название в хранилищеВ этом руководстве
BronzeИсточники в raw (только для чтения)
SilverПодготовительный и промежуточный слои
GoldВитрины

Сохраните staging, intermediate и marts в качестве названий пользовательских схем в этом руководстве, чтобы они совпадали с именами папок. Если ваше хранилище требует использовать silver и gold в качестве названий схем, задайте эти названия в +schema.

Если задать +schema: silver и для staging, и для intermediate, модели из этих папок будут использовать одну общую схему, и отдельной схемы для промежуточного слоя не будет. Чтобы сохранить это разделение, используйте два разных названия пользовательских схем.

Связанная документация​

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

0
Loading