Конфигурации Confluent Cloud
Адаптер dbt-confluent поддерживает следующие материализации и конфигурации для создания моделей в Confluent Cloud for Apache Flink. Более подробные инструкции по началу работы приведены в документации по dbt в Confluent Cloud.
Материализации
| Материализация | Описание |
|---|---|
view | Представление Flink SQL, которое удаляется и создаётся заново. |
streaming_table | Создаёт таблицу Flink SQL и отдельный длительно выполняющийся оператор INSERT INTO, который непрерывно записывает результаты запроса в таблицу. Если таблица уже существует, адаптер проверяет наличие расхождений в схеме и пропускает создание; используйте --full-refresh, чтобы удалить и заново создать таблицу. |
streaming_source | Создаёт таблицу Flink SQL на основе коннектора (например, faker для генерации тестовых данных). Требует настройки connector. SQL-код модели задаёт определения столбцов. Если таблица уже существует, адаптер проверяет наличие расхождений в схеме и пропускает создание; используйте --full-refresh, чтобы удалить и заново создать таблицу. |
ephemeral | Стандартный фрагмент запроса dbt на основе CTE, который не материализуется во Flink. |
Неподдерживаемые материализации
table: Официально не поддерживается. Поддержка появится в ближайшее время.materialized_view: Не поддерживается. Вместо неё используйтеstreaming_table.incremental: Не поддерживается. Семантика пакетной инкрементальной обработки dbt не соответствует модели непрерывной обработки Flink. Вместо неё используйтеstreaming_table.snapshot: Не поддерживается. Во Flink SQL отсутствуют пакетные операции (MERGE,UPDATE), необходимые для снимков dbt.
Конфигурации для отдельных материализаций
streaming_table
Материализация streaming_table создаёт таблицу на основе топика Kafka и непрерывно выполняющийся оператор INSERT INTO.
{{
config(
materialized='streaming_table',
with={
'changelog.mode': 'upsert',
'kafka.retention.time': '7 d'
}
)
}}
SELECT
order_id,
customer_id,
total_amount
FROM {{ ref('raw_orders') }}
WHERE status = 'completed'
Настройка with
| Настройка | Тип | Описание |
|---|---|---|
with | dict | Словарь параметров таблицы Flink SQL в Confluent Cloud, передаваемых в предложение WITH оператора CREATE TABLE. Часто используемые параметры: changelog.mode (append, upsert, retract), kafka.retention.time, key.format, value.format, scan.startup.mode и другие. Полный список приведён в справочнике по параметрам CREATE TABLE WITH. |
streaming_source
Материализация streaming_source создаёт таблицу на основе коннектора. Настройка connector обязательна. SQL-код модели задаёт определения столбцов (а не запрос SELECT). В Confluent Cloud допустимые значения коннектора включают faker (генерация тестовых данных) и коннекторы внешних таблиц для поиска с использованием ИИ. Доступные коннекторы и параметры описаны в каталоге коннекторов Confluent и документации по CREATE TABLE во Flink.
{{
config(
materialized='streaming_source',
connector='faker',
with={
'rows-per-second': '1',
'number-of-rows': '100',
'changelog.mode': 'append',
}
)
}}
order_id BIGINT,
price DECIMAL(10, 2),
order_time TIMESTAMP(3),
WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND,
PRIMARY KEY(order_id) NOT ENFORCED
Настройка connector
| Настройка | Тип | Обязательность | Описание |
|---|---|---|---|
connector | string | Да | Тип коннектора для исходной таблицы. Допустимые значения в Confluent Cloud включают faker (тестовые данные) и внешние коннекторы для поиска с использованием ИИ. |
with | dict | Нет | Дополнительные параметры таблицы, передаваемые в предложение WITH вместе с коннектором. Допустимые параметры зависят от типа коннектора. |
Сохранение состояния и --full-refresh
Таблицы Flink SQL в Confluent Cloud — это долгоживущие ресурсы с сохранением состояния. Материализации streaming_table и streaming_source ведут себя иначе, чем традиционные материализации dbt, ориентированные на пакетную обработку:
- Первый запуск: Создаётся таблица, и (для
streaming_table) непрерывно выполняющийся операторINSERT INTOначинает заполнять её. - Последующие запуски без
--full-refresh: Если таблица уже существует, адаптер сравнивает имена столбцов, типы данных и параметрыWITHсуществующей таблицы с моделью. Если расхождений нет, модель пропускается, чтобы избежать удаления таблицы, в которой накоплено состояние или от которой зависят другие потребители данных. Если обнаружены расхождения, запуск завершается ошибкой компиляции. Проверку расхождений можно отключить для отдельной модели с помощьюconfig(on_schema_drift='ignore'). - Запуски с
--full-refresh: Существующая таблица удаляется и создаётся заново с нуля, при этом все данные обрабатываются повторно.
Используйте --full-refresh, если нужно изменить схему таблицы, параметры WITH или повторно обработать данные с самого начала:
dbt run --full-refresh --select my_streaming_model
Известные ограничения
- Нет управления схемами: Адаптер не может создавать или удалять схемы (кластеры Kafka) и базы данных (окружения). Ими необходимо управлять в Confluent Cloud.
- Нет переименования таблиц: Оператор
ALTER TABLE RENAMEне поддерживается во Flink SQL. - Нет поддержки транзакций: Flink SQL в Confluent Cloud не поддерживает транзакции. Операторы
BEGINиCOMMITне выполняют никаких действий. - Для seed-файлов требуется
full_refresh: Адаптер по умолчанию устанавливаетfull_refresh: trueдля seed-файлов.