О моделях с инкрементальной загрузкой
This is an introduction on incremental models, when to use them, and how they work in dbt.
Инкрементальные модели в dbt — это стратегия materialization, предназначенная для эффективного обновления таблиц в вашем хранилище данных за счёт трансформации и загрузки только новых или изменённых данных с момента последнего запуска. Вместо обработки всего набора данных при каждом выполнении инкрементальные модели добавляют или обновляют только новые строки, что существенно сокращает время и объём ресурсов, необходимых для выполнения трансформаций данных.
Эта страница предоставит вам краткий обзор моделей с инкрементальной загрузкой, их важности в преобразованиях данных и основных концепций инкрементальной материализации в dbt.
Визуальное представление того, как работают инкрементальные модели. Источник: руководство по лучшим практикам материализаций (/best-practices/materializations/1-guide-overview)Понимание моделей с инкрементальной загрузкой
Модели с инкрементальной загрузкой позволяют значительно сократить время сборки, преобразуя только новые записи. Это особенно полезно для больших наборов данных, где стоимость обработки всего набора данных высока.
Модели с инкрементальной загрузкой требуют дополнительной настройки и являются продвинутым использованием dbt. Мы рекомендуем использовать их, когда ваши запуски dbt становятся слишком медленными.
Когда использовать модель с инкрементальной загрузкой
Создание моделей в виде таблиц в вашем хранилище данных часто предпочтительнее для лучшей производительности запросов. Однако использование материализации table может быть вычислительно затратным, особенно когда:
- Исходные данные содержат миллионы или миллиарды строк.
- Преобразования данных на основе исходных данных являются вычислительно затратными (занимают много времени на выполнение) и сложными, например, при использовании Regex или UDF.
Модели с инкрементальной загрузкой предлагают баланс между сложностью и улучшенной производительностью по сравнению с материализациями view и table, а также обеспечивают лучшую производительность ваших запусков dbt.
В дополнение к этим соображениям для моделей с инкрементальной загрузкой важно понимать их ограничения и вызовы, особенно с большими наборами данных. Для получения дополнительной информации об эффективных стратегиях, соображениях производительности и обработке данных, поступающих с задержкой, в моделях с инкрементальной загрузкой, обратитесь к обсуждению Ограничения инкрементальности или к нашей странице Лучшие практики материализации.
Как работают модели с инкрементальной загрузкой в dbt
Стратегия инкрементальной материализации в dbt работает по-разному на разных базах данных. Там, где это поддерживается, используется оператор merge для вставки новых записей и обновления существующих.
На хранилищах, которые не поддерживают операторы merge, слияние реализуется сначала с помощью оператора delete для удаления записей в целевой таблице, которые должны быть обновлены, а затем оператора insert.
Управление транзакциями, процесс, используемый на некоторых платформах данных, гарантирует, что набор действий рассматривается как единое целое (или задача). Если какая-либо часть работы не удается, dbt откатит открытые транзакции и восстановит базу данных в хорошем состоянии.
Связанные материалы
- Incremental models — чтобы узнать, как настраивать инкрементальные модели в dbt.
- Incremental strategies — чтобы понять, как dbt реализует инкрементальные модели в разных базах данных.
- Microbatch — чтобы разобраться в новой инкрементальной стратегии, предназначенной для эффективной и устойчивой обработки очень больших временных рядов данных.
- Materializations best practices — чтобы ознакомиться с лучшими практиками использования материализаций в dbt.