DBT
September 22, 2024

dbt seeds. Пример использования (draft)

Это просто файлы csv, которые хранятся в вашем dbt-проекте. Используются для загрузки небольших по размеру данных. Навроде какого-нибудь маппинга типа значение айтема в старой учетной системе - значение айтема в новой учётной системе. Для заливки больших сырых данных не предназначены.

Я буду использовать csv файлы в учебных целях - для прохождения книжки "Unlocking dbt _ Design and Deploy Transformations in Your Cloud Data Warehouse".

Нашёл в сети интернет примеры, попробую залить оттуда данные в новом проекте.

Сначала один файл

dbt seed --select raw_products.csv

До того в файле проекта dbt_project.yml я указал, где должны будут материализовываться данные из сидов.

dbt_project.yml

Смотрю, в БД и вижу, что получилось не совсем так, как я ожидал.

Материализованный сид

Таблица появилась, но не в схеме raw_csv, как хотелось. А в схеме с названием, полученным конкатенацией схемы public, указанной в profiles.yml и указанной схемой в файле проекта для seeds raw_csv.

Эту проблему я поправил переопределением макроса generate_schema_name (см ниже), и вот таблица появилась в нужном месте.

{% macro generate_schema_name(custom_schema_name, node) -%}
    {%- set default_schema = target.schema -%}
    {%- if custom_schema_name is none -%}
        {{ default_schema }}
    {%- else -%}
        {{ custom_schema_name }}
    {%- endif -%}
{%- endmacro %}

Можно запустить все сиды (если не нужно ещё раз прогонять уже залитый raw_products.csv, то команда будет выглядеть так dbt seed --exclude raw_products.csv)

dbt seed

Проверяем, все 4 таблички на месте, в схеме raw_csv

Результаты выполнения команды dbt seed