Механизм выполнения MERGE
В данном разделе описана логика обновления данных при репликации данных в Google BigQuery посредством Renta ELT.
Требования к схеме данных
- Уникальный ключ (обязательно).
Требуется для идентификации и обновления записей. Поле ключа зависит от источника (например, Primary Key для PostgreSQL CDC или Lead ID для Salesforce). Спецификации уникальных ключей для каждого коннектора доступны в документации раздела Sources. - Ключ партицирования (опционально).
Поле, по которому будет производиться физическое разделение данных (партицирование) в целевой таблице BigQuery.
Алгоритм репликации
Процесс слияния данных состоит из трех этапов:
- Staging.
Новые и измененные данные загружаются во временную таблицу BigQuery (формат нейминга:target_table_name_renta_temp). - Дедупликация.
Внутри временной таблицы производится выборка актуальных состояний. Записи группируются по уникальному ключу и сортируются по timestamp (или иному системному параметру источника). В целевую таблицу передается только последняя версия строки. - Merge.
Отфильтрованные данные из временной таблицы переносятся в целевую таблицу.
Влия ние партицирования на производительность MERGE
Наличие ключа партицирования критически влияет на объем обрабатываемых данных и стоимость запроса:
- С партицированием (рекомендуется).
Операция MERGE затрагивает только те партиции целевой таблицы, данные для которых присутствуют во временной таблице. Это исключает лишнее чтение данных. - Без партицирования.
BigQuery выполняет полное сканирование целевой таблицы. Для таблиц большого объема это приводит к снижению производительности и росту затрат.
Неизменяемость ключа партицирования
Значение выбранного ключа партицирования должно быть константным на стороне источника. Если запись переехала из одной партиции в другую (например, изменился updated_at, который был ключом), стандартный MERGE с фильтром по новой партици и создаст дубль в новой партиции, а в старой останется неактуальная строка (orphan record).
Обработка удалений (deletes)
При удалении записей в источнике физическое удаление строк в BigQuery не производится. Renta применяет метод логического удаления (soft delete): для удаленной записи системное поле is_delete переводится в значение True.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.