В этой статье вы узнаете, как коннектор amoCRM выгружает данные в хранилище ROMI center: что именно попадает в таблицу, с какой периодичностью идёт выгрузка и как устроена перезапись прошлых дней. Полный список полей — в статье amoCRM: описание выгружаемых полей.
Что попадает в таблицу: события по сделкам
Коннектор выгружает события amoCRM, а не карточки: смену этапа сделки и другие изменения. По каждому событию он забирает саму сделку и её главный контакт, и в таблицу пишется одна строка.
Важно
Воронки и этапы в настройках не выбираются: коннектор берёт события по всем сделкам, а на шаге «Выбор полей» отмечаются только поля. У одной сделки в таблице по строке на каждое её изменение, попавшее в окно выгрузки — у каждой строки своя воронка и свой этап, те, что были у сделки в момент этого события.
Повторное попадание на тот же этап той же воронки по умолчанию считается дублем и в таблицу не попадает. Настройка «Учитывать повторные переходы в этап» добавляет к сравнению дату события: с ней каждый возврат сделки на пройденный этап даёт отдельную строку.
Поля сделки и поля её контакта лежат в одной строке одной таблицы — отдельных таблиц под контакты, компании или другие сущности amoCRM у коннектора нет. Значения полей берутся на момент выгрузки, то есть показывают карточку такой, какой её увидел коннектор. Исключение — воронка и этап: они пишутся такими, какими были в момент события.
Периодичность
Коннектор опрашивает amoCRM каждые 30 минут (для отдельных аккаунтов расписание настраивается индивидуально) и заливает собранное в таблицу каждую минуту. Если данных накопилось за несколько дней — коннектор стоял или был сбой, — он догоняет их посуточно: за один прогон берётся ограниченное окно, остальное подхватят следующие запуски.
За какой период забираются данные
Обычный прогон берёт данные с момента, на котором остановился прошлый прогон (курсор хранится по подключению), по текущий момент. Первый прогон нового подключения — с даты создания подключения минус 7 дней (если подключение создано раньше вчерашнего дня, отсчёт начинается с сегодняшнего — иначе первая загрузка растянулась бы на месяцы и задержала бы остальные подключения).
Примечание
Даты строк пересчитываются в часовой пояс из настроек подключения — если он указан неверно, события съедут на несколько часов и могут попасть в соседние сутки. Исключение — колонка «Дата события», если вы её выбрали: она пишется в UTC, поэтому со служебной датой строки может расходиться на величину смещения.
Как сохраняет данные
- Куда: хранилище ROMI center на движке ClickHouse.
- Имя таблицы:
amocrm_<поддомен аккаунта>_<id подключения>(напримерamocrm_mycompany_412). - Один аккаунт можно подключить несколько раз — например, чтобы выгружать разные наборы полей. Каждое подключение пишет в свою таблицу и опрашивает amoCRM само по себе, то есть нагрузка на API аккаунта растёт кратно числу подключений.
- Структура таблицы: движок
MergeTree, сортировка поrc_data_id. Разбиения на партиции нет. - Структура догоняется, а не пересоздаётся. Новое поле, выбранное в настройках, добавляется командой
ALTER TABLE … ADD COLUMN. Колонки никогда не удаляются: если снять поле в настройках, колонка останется со старыми значениями, а новые строки будут писаться в неё пустыми. - Повторная заливка того же события не плодит дубли. У каждой строки есть
rc_data_id— номер события в очереди ROMI. При повторной заливке строка с тем жеrc_data_idудаляется и вставляется заново, а дата первой заливки (rc_created_at) переносится со старой строки. - Одинаковые события отсеиваются ещё до таблицы. Событие считается повтором, если по тому же подключению уже есть событие с той же сделкой, тем же этапом, той же воронкой и тем же назначением (а при включённой настройке «Учитывать повторные переходы в этап» — ещё и с той же датой события). Если значения пользовательских полей отличаются, повтором событие не считается.
Перезапись прошлых дней
Сделки в amoCRM меняются задним числом, поэтому коннектор регулярно перечитывает недавние дни. Глубина — настройка «Перезагрузка прошлых дней»: 0, 1, 3 (по умолчанию), 7 или 14. При нуле автоматическая перезагрузка не запускается.
Автоматическая перезагрузка за выбранное число дней назад по вчерашний день удаляет из таблицы строки этого периода, эти же события — из очереди, и ставит на каждый день отдельное задание на повторный сбор. Функция «Загрузить исторические данные» в меню подключения работает за любой период: данные догружаются, уже загруженные события не задваиваются.
Важно
Галочка «Удалить ранее загруженные данные за период» у amoCRM удаляет таблицу целиком и очищает всю очередь событий подключения — не только выбранный период. После такой перезагрузки в таблице останется только перезагруженный период. Ставьте галочку, только если готовы перезагрузить всю историю.
Дополнительные настройки
| Настройка | Что делает |
|---|---|
| Часовой пояс аккаунта | В нём читаются даты событий. Ставится один раз при настройке: при смене старые строки пересчитаны не будут. |
| Перезагрузка прошлых дней (0 / 1 / 3 / 7 / 14) | Глубина ежедневной перезаписи. Больше дней — больше нагрузка на API и дольше прогон. |
| Учитывать повторные переходы в этап | Включено — каждый возврат сделки на пройденный этап даёт отдельную строку, и данных становится заметно больше. Выключено (по умолчанию) — учитывается только первое попадание на этап. |
Набор выгружаемых полей задаётся на шаге «Выбор полей»: список приходит из вашего аккаунта amoCRM — стандартные поля плюс пользовательские поля сделок и контактов. Поле, добавленное позже, начинает заполняться со следующего прогона; задним числом оно появится только после перезагрузки.
Примечание
Конвертации валют в хранилище ROMI center нет. Колонки вида <поле>_converted_<валюта> создаются только у подключений с приёмником «ClickHouse»; в хранилище ROMI center суммы выгружаются как есть.
Технические поля
| Колонка | Что внутри |
|---|---|
rc_data_id | Номер события в очереди ROMI. По нему строка обновляется при повторной заливке. Заполнен всегда, проиндексирован. |
rc_created_at | Дата и время события (если его нет — момент заливки). При перезаливке того же события сохраняется прежнее значение. |
rc_created_date | Та же дата в UTC, без времени. По ней ночная перезагрузка удаляет строки за период. |
Других служебных колонок нет: rc_updated_at, rc_import_id и rc_datasource, которые встречаются у рекламных коннекторов, здесь не создаются.
