Быстрый старт для dbt и Teradata
Введение
В этом кратком руководстве вы узнаете, как использовать dbt с Teradata Vantage. В нём показано, как:
- Создать новый экземпляр Teradata Clearscape
- Загрузить пример данных в вашу базу данных Teradata
- Подключить dbt к Teradata
- Взять пример запроса и превратить его в модель в вашем dbt‑проекте. Модель в dbt — это оператор
select. - Добавить тесты к вашим моделям
- Задокументировать ваши модели
- Запланировать выполнение задания
Вы можете бесплатно ознакомиться с Основами dbt, если вас интересует обучение с видео.
Предварительные требования
- У вас есть аккаунт dbt.
- У вас есть доступ к экземпляру Teradata Vantage. Вы можете бесплатно развернуть его на https://clearscape.teradata.com. Подробности см. в руководстве ClearScape Analytics Experience.
Связанные материалы
- Узнайте больше с курсами dbt Learn
- Как мы создаем экземпляр Teradata Clearscape Vantage
- CI задания
- Развертывание заданий
- Уведомления о заданиях
- Актуальность источников
Загрузка данных
Следующие шаги помогут вам получить данные, хранящиеся в виде CSV-файлов в общедоступном S3-бакете, и вставить их в таблицы.
Если вы создали экземпляр базы данных Teradata Vantage на https://clearscape.teradata.com и у вас под рукой нет SQL Studio IDE, используйте JupyterLab, поставляемый вместе с вашей базой данных, чтобы выполнять SQL-запросы:
-
Перейдите на панель управления ClearScape Analytics Experience и нажмите кнопку Run Demos. Демонстрация запустит JupyterLab.
-
В JupyterLab перейдите в Launcher, нажав на синюю иконку + в верхнем левом углу. Найдите раздел Notebooks и нажмите Teradata SQL.
-
В первой ячейке блокнота подключитесь к базе данных, используя
connectmagic. Вам будет предложено ввести пароль от базы данных при выполнении:%connect local -
Используйте дополнительные ячейки для ввода и выполнения SQL-запросов.
-
Используйте предпочитаемый редактор SQL IDE для создания базы данных
jaffle_shop:CREATE DATABASE jaffle_shop AS PERM = 1e9; -
В базе данных
jaffle_shopсоздайте три внешние таблицы и укажите соответствующие csv-файлы, расположенные в объектном хранилище:CREATE FOREIGN TABLE jaffle_shop.customers (
id integer,
first_name varchar (100),
last_name varchar (100),
email varchar (100)
)
USING (
LOCATION ('/gs/storage.googleapis.com/clearscape_analytics_demo_data/dbt/raw_customers.csv')
)
NO PRIMARY INDEX;
CREATE FOREIGN TABLE jaffle_shop.orders (
id integer,
user_id integer,
order_date date,
status varchar(100)
)
USING (
LOCATION ('/gs/storage.googleapis.com/clearscape_analytics_demo_data/dbt/raw_orders.csv')
)
NO PRIMARY INDEX;
CREATE FOREIGN TABLE jaffle_shop.payments (
id integer,
orderid integer,
paymentmethod varchar (100),
amount integer
)
USING (
LOCATION ('/gs/storage.googleapis.com/clearscape_analytics_demo_data/dbt/raw_payments.csv')
)
NO PRIMARY INDEX;
Подключение dbt к Teradata
- Создайте новый проект в dbt. В левом боковом меню нажмите на имя своей учетной записи, выберите Account settings и нажмите + New Project.
- Введите имя проекта и нажмите Continue.
- В разделе Configure your development environment откройте выпадающее меню Connection и выберите Add new connection.
- В разделе Type выберите Teradata.
- Укажите параметры подключения к Teradata и нажмите Save.
-
Настройте свои персональные учетные данные для разработки, перейдя в Your profile > Credentials.
-
Выберите проект, который использует подключение Teradata.
-
Нажмите ссылку configure your development environment and add a connection. Вы будете перенаправлены на страницу, где можно ввести персональные учетные данные для разработки.
-
Укажите Development credentials для Teradata:
- Username — имя пользователя базы данных Teradata.
- Password — пароль пользователя базы данных Teradata.
- Schema — база данных по умолчанию, которая будет использоваться.
-
Нажмите Test Connection, чтобы проверить, что dbt может подключиться к вашему экземпляру Teradata Vantage.
-
Если проверка прошла успешно, нажмите Save, чтобы завершить настройку. Если проверка не удалась, проверьте параметры подключения и учетные данные Teradata.
Настройка репозитория, управляемого dbt
При разработке в dbt вы можете использовать Git для управления версиями вашего кода.
Чтобы подключиться к репозиторию, вы можете либо настроить размещённый в dbt managed repository, либо напрямую подключиться к поддерживаемому git‑провайдеру. Managed repositories — это отличный способ попробовать dbt без необходимости создавать новый репозиторий. В долгосрочной перспективе лучше подключиться к поддерживаемому git‑провайдеру, чтобы использовать такие возможности, как автоматизация и непрерывная интеграция.
Чтобы настроить управляемый репозиторий:
- В разделе "Настроить репозиторий" выберите Управляемый.
- Введите имя для вашего репозитория, например,
bbaggins-dbt-quickstart. - Нажмите Создать. Создание и импорт вашего репозитория займет несколько секунд.
- Как только вы увидите сообщение "Репозиторий успешно импортирован", нажмите Продолжить.
Инициализация вашего проекта dbt и начало разработки
Теперь, когда у вас настроен репозиторий, вы можете инициализировать проект и начать разработку в dbt:
- Нажмите Start developing in the Studio IDE. При первом запуске проект может подготавливаться несколько минут: в это время устанавливается подключение к git, клонируется репозиторий и проверяется соединение с хранилищем данных.
- Над деревом файлов слева нажмите Initialize your project, чтобы создать структуру папок и добавить примеры моделей.
- Сделайте первый коммит, нажав Commit and sync. Используйте сообщение коммита
initial commit, чтобы создать первый коммит в управляемом репозитории. После этого вы сможете открыть новую ветку и начать добавлять новый dbt‑код.
Удаление примерных моделей
Теперь вы можете удалить файлы, которые dbt создал при инициализации проекта:
-
Удалите директорию
models/example/. -
Удалите ключ
example:из вашего файлаdbt_project.ymlи любые конфигурации, которые перечислены под ним.dbt_project.yml# до
models:
my_new_project:
+materialized: table
example:
+materialized: viewdbt_project.yml# после
models:
my_new_project:
+materialized: table -
Сохраните изменения.
-
Зафиксируйте изменения и объедините с основной веткой.
Часто задаваемые вопросы
Создание вашей первой модели
У вас есть два варианта работы с файлами в IDE dbt Cloud:
У вас есть два варианта работы с файлами в Studio IDE:
- Создать новую ветку (рекомендуется) — Создайте новую ветку для редактирования и коммита ваших изменений. Перейдите в Version Control на левой боковой панели и нажмите Create branch.
- Редактировать в защищённой основной ветке — Если вы предпочитаете редактировать файлы, форматировать их, запускать линтер или выполнять команды dbt напрямую в основной git-ветке. Studio IDE не позволяет выполнять коммиты в защищённую ветку, поэтому вы получите приглашение закоммитить ваши изменения в новую ветку.
- Нажмите ... рядом с директорией
models, затем выберите Create file. - Назовите файл
bi_customers.sql, затем нажмите Create. - Скопируйте следующий запрос в файл и нажмите Save.
with customers as (
select
id as customer_id,
first_name,
last_name
from jaffle_shop.customers
),
orders as (
select
id as order_id,
user_id as customer_id,
order_date,
status
from jaffle_shop.orders
),
customer_orders as (
select
customer_id,
min(order_date) as first_order_date,
max(order_date) as most_recent_order_date,
count(order_id) as number_of_orders
from orders
group by 1
),
final as (
select
customers.customer_id,
customers.first_name,
customers.last_name,
customer_orders.first_order_date,
customer_orders.most_recent_order_date,
coalesce(customer_orders.number_of_orders, 0) as number_of_orders
from customers
left join customer_orders on customers.customer_id = customer_orders.customer_id
)
select * from final
- Введите
dbt runв командной строке внизу экрана. Вы должны получить успешное выполнение и увидеть три модели.
Вы можете подключить ваши инструменты бизнес-аналитики (BI) к этим представлениям и таблицам, чтобы они читали только очищенные данные, а не сырые данные в вашем инструменте BI.
Изменение способа материализации вашей модели
Одна из самых мощных функций dbt заключается в том, что вы можете изменить способ материализации модели в вашем хранилище, просто изменив значение конфигурации. Вы можете менять вещи между таблицами и представлениями, изменяя ключевое слово, а не записывая язык определения данных (DDL) для этого за кулисами.
По умолчанию все создается как представление. Вы можете переопределить это на уровне директории, чтобы все в этой директории материализовалось в другую материализацию.
- Отредактируйте ваш файл
dbt_project.yml.-
Обновите имя вашего проекта на:
dbt_project.ymlname: 'jaffle_shop'
-
-
Настройте
jaffle_shopтак, чтобы всё в нём материализовывалось как таблица; и настройтеexampleтак, чтобы всё в нём материализовывалось как представление (view). Обновите конфигурациюmodelsв YAML-файле проекта следующим образом:dbt_project.ymlmodels:
jaffle_shop:
+materialized: table- Нажмите Save.
-
Введите команду
dbt run. Ваша модельbi_customersтеперь должна быть построена как таблица!к сведениюДля этого dbt сначала должен был выполнить оператор
drop view(или API вызов на BigQuery), затем операторcreate table as. -
Отредактируйте
models/bi_customers.sql, чтобы переопределитьdbt_project.ymlтолько для моделиcustomers, добавив следующий фрагмент в начало, и нажмите Save:models/bi_customers.sql{{
config(
materialized='view'
)
}}
with customers as (
select
id as customer_id
...
) -
Введите команду
dbt run. Ваша модельbi_customersтеперь должна быть построена как представление.
Часто задаваемые вопросы
Создание моделей на основе других моделей
Как лучшая практика в SQL, следует разделять логику, которая очищает ваши данные, от логики, которая трансформирует ваши данные. Вы уже начали делать это в существующем запросе, используя общие табличные выражения (CTE).
Теперь вы можете поэкспериментировать, разделив логику на отдельные модели и используя функцию ref для построения моделей на основе других моделей:
-
Создайте новый SQL файл,
models/stg_customers.sql, с SQL из CTEcustomersв вашем оригинальном запросе.models/stg_customers.sqlselect
id as customer_id,
first_name,
last_name
from jaffle_shop.customers -
Создайте второй новый SQL файл,
models/stg_orders.sql, с SQL из CTEordersв вашем оригинальном запросе.models/stg_orders.sqlselect
id as order_id,
user_id as customer_id,
order_date,
status
from jaffle_shop.orders -
Отредактируйте SQL в вашем файле
models/bi_customers.sqlследующим образом:models/bi_customers.sqlwith customers as (
select * from {{ ref('stg_customers') }}
),
orders as (
select * from {{ ref('stg_orders') }}
),
customer_orders as (
select
customer_id,
min(order_date) as first_order_date,
max(order_date) as most_recent_order_date,
count(order_id) as number_of_orders
from orders
group by 1
),
final as (
select
customers.customer_id,
customers.first_name,
customers.last_name,
customer_orders.first_order_date,
customer_orders.most_recent_order_date,
coalesce(customer_orders.number_of_orders, 0) as number_of_orders
from customers
left join customer_orders on customers.customer_id = customer_orders.customer_id
)
select * from final -
Выполните
dbt run.На этот раз, когда вы выполнили
dbt run, были созданы отдельные представления/таблицы дляstg_customers,stg_ordersиcustomers. dbt определил порядок, в котором эти модели должны выполняться. Посколькуcustomersзависит отstg_customersиstg_orders, dbt строитcustomersпоследним. Вам не нужно явно определять эти зависимости.
Часто задаваемые вопросы
Создание моделей на основе источников
Источники позволяют называть и описывать данные, загруженные в ваше хранилище вашими инструментами извлечения и загрузки. Объявляя эти таблицы как источники в dbt, вы можете:
- Выбирать из исходных таблиц в ваших моделях, используя функцию
{{ source() }}, помогая определить происхождение ваших данных - Проверять ваши предположения о ваших исходных данных
- Рассчитывать актуальность ваших исходных данных
-
Создайте новый YML файл,
models/sources.yml. -
Объявите источники, скопировав следующее в файл и нажав Save.
models/sources.ymlversion: 2
sources:
- name: jaffle_shop
description: Это реплика базы данных Postgres, используемой приложением
database: raw
schema: jaffle_shop
tables:
- name: customers
description: Одна запись на клиента.
- name: orders
description: Одна запись на заказ. Включает отмененные и удаленные заказы. -
Отредактируйте файл
models/stg_customers.sql, чтобы выбрать из таблицыcustomersв источникеjaffle_shop.models/stg_customers.sqlselect
id as customer_id,
first_name,
last_name
from {{ source('jaffle_shop', 'customers') }} -
Отредактируйте файл
models/stg_orders.sql, чтобы выбрать из таблицыordersв источникеjaffle_shop.models/stg_orders.sqlselect
id as order_id,
user_id as customer_id,
order_date,
status
from {{ source('jaffle_shop', 'orders') }} -
Выполните
dbt run.Результаты вашего
dbt runбудут такими же, как и на предыдущем шаге. Ваши моделиstg_customersиstg_ordersвсе еще будут запрашивать из того же источника сырых данных в Teradata. Используяsource, вы можете тестировать и документировать ваши сырые данные, а также понимать происхождение ваших источников.
Добавьте тесты данных в ваши модели
Добавление data tests в проект помогает убедиться, что ваши модели работают корректно.
Чтобы добавить data tests в ваш проект:
-
Создайте новый YAML‑файл с описанием свойств в директории
modelsс именемmodels/schema.yml. -
Добавьте в этот файл следующее содержимое:
models/schema.ymlversion: 2
models:
- name: bi_customers
columns:
- name: customer_id
data_tests:
- unique
- not_null
- name: stg_customers
columns:
- name: customer_id
data_tests:
- unique
- not_null
- name: stg_orders
columns:
- name: order_id
data_tests:
- unique
- not_null
- name: status
data_tests:
- accepted_values:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
- name: customer_id
data_tests:
- not_null
- relationships:
arguments:
to: ref('stg_customers')
field: customer_id -
Запустите
dbt testи убедитесь, что все ваши тесты прошли.
Когда вы запускаете dbt test, dbt проходит по вашим YAML-файлам и формирует запрос для каждого data test. Каждый запрос возвращает количество записей, которые не прошли тест. Если это число равно 0, то data test считается успешно пройденным.
Часто задаваемые вопросы
Документирование ваших моделей
Добавление документации в ваш проект позволяет вам описывать ваши модели в подробностях и делиться этой информацией с вашей командой. Здесь мы добавим некоторую базовую документацию в наш проект.
-
Обновите ваш файл
models/schema.yml, чтобы включить некоторые описания, такие как те, что ниже.models/schema.yml
models:
- name: bi_customers
description: Одна запись на клиента
columns:
- name: customer_id
description: Первичный ключ
data_tests:
- unique
- not_null
- name: first_order_date
description: NULL, когда клиент еще не сделал заказ.
- name: stg_customers
description: Эта модель очищает данные клиентов
columns:
- name: customer_id
description: Первичный ключ
data_tests:
- unique
- not_null
- name: stg_orders
description: Эта модель очищает данные заказов
columns:
- name: order_id
description: Первичный ключ
data_tests:
- unique
- not_null
- name: status
data_tests:
- accepted_values:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
- name: customer_id
data_tests:
- not_null
- relationships:
arguments:
to: ref('stg_customers')
field: customer_id -
Запустите
dbt docs generate, чтобы сгенерировать документацию для вашего проекта. dbt анализирует ваш проект и ваше хранилище, чтобы сгенерировать JSON файл с подробной документацией о вашем проекте. -
Нажмите на иконку книги в интерфейсе Develop, чтобы открыть документацию в новой вкладке.
Часто задаваемые вопросы
Зафиксируйте ваши изменения
Теперь, когда вы создали вашу модель клиентов, вам нужно зафиксировать изменения, которые вы внесли в проект, чтобы репозиторий содержал ваш последний код.
Если вы редактировали непосредственно в защищенной основной ветке:
- Нажмите кнопку Commit and sync git. Это действие подготавливает ваши изменения для фиксации.
- Появится модальное окно с заголовком Commit to a new branch.
- В модальном окне назовите вашу новую ветку
add-customers-model. Это создаст ветку от вашей основной ветки с вашими новыми изменениями. - Добавьте сообщение коммита, например, "Add customers model, tests, docs" и зафиксируйте ваши изменения.
- Нажмите Merge this branch to main, чтобы добавить эти изменения в основную ветку вашего репозитория.
Если вы создали новую ветку перед редактированием:
- Поскольку вы уже ответвились от основной защищенной ветки, перейдите в Version Control слева.
- Нажмите Commit and sync, чтобы добавить сообщение.
- Добавьте сообщение коммита, например, "Add customers model, tests, docs."
- Нажмите Merge this branch to main, чтобы добавить эти изменения в основную ветку вашего репозитория.
Развертывание dbt
Используйте Планировщик dbt Cloud, чтобы уверенно развертывать ваши производственные задания и встраивать наблюдаемость в ваши процессы. Вы узнаете, как создать среду развертывания и запустить задание в следующих шагах.
Создание среды развертывания
- В верхнем левом углу выберите Deploy, затем нажмите Environments.
- Нажмите Create Environment.
- В поле Name напишите имя вашей среды развертывания. Например, "Production."
- В поле dbt Version выберите последнюю версию из выпадающего списка.
- В разделе Deployment connection введите имя набора данных, который вы хотите использовать в качестве цели, например,
jaffle_shop_prod. Это позволит dbt строить и работать с этим набором данных. - Нажмите Save.
Используйте планировщик dbt для уверенного развертывания ваших production‑задач и встраивания наблюдаемости в процессы. На следующих шагах вы научитесь создавать среду развертывания и запускать задание.
Задания — это набор команд dbt, которые вы хотите выполнять по расписанию. Например, dbt build.
По мере того, как бизнес jaffle_shop привлекает больше клиентов, и эти клиенты создают больше заказов, вы увидите больше записей, добавленных в ваши исходные данные. Поскольку вы материализовали модель bi_customers как таблицу, вам нужно будет периодически перестраивать вашу таблицу, чтобы данные оставались актуальными. Это обновление произойдет, когда вы запустите задание.
- После создания вашей среды развертывания вы должны быть перенаправлены на страницу для новой среды. Если нет, выберите Deploy в верхнем левом углу, затем нажмите Jobs.
- Нажмите + Create job, а затем выберите Deploy job. Укажите имя, например, "Production run", и свяжите его с только что созданной средой.
- Прокрутите вниз до раздела Execution Settings.
- В разделе Commands добавьте эту команду как часть вашего задания, если вы ее не видите:
dbt build
- Установите флажок Generate docs on run, чтобы автоматически генерировать обновлённую документацию проекта при каждом запуске job.
- В рамках этого упражнения не настраивайте расписание запуска проекта — хотя в реальной организации проект должен выполняться регулярно, нет необходимости запускать этот пример по расписанию. Настройку расписания для job иногда называют deploying a project (развёртыванием проекта).
- Нажмите Save, затем нажмите Run now, чтобы запустить job.
- Откройте запуск и наблюдайте за его выполнением в разделе Run history.
- После завершения запуска нажмите View Documentation, чтобы посмотреть документацию вашего проекта.
Поздравляем 🎉! Вы только что развернули свой первый проект dbt!
FAQs
Поздравляем 🎉! Вы только что развернули ваш первый проект dbt!



