В этой статье вы узнаете, как коннектор GetCourse выгружает данные в хранилище ROMI center: какие таблицы он создаёт, с какой периодичностью идёт выгрузка и как устроена перезагрузка прошлых дней. Полный список полей — в статье GetCourse: описание выгружаемых полей.
Что выгружается: до семи таблиц
Каждая включённая сущность — своя таблица. Набор задаётся на шаге «Выбор полей», кроме групп: они включаются выбором в дополнительных настройках.
| Таблица | Что внутри | Когда появляется |
|---|---|---|
…_deals | Заказы | включены «Заказы» |
…_deal_positions | Позиции заказов — товары внутри заказа | включены «Позиции заказов»; требуют заказов |
…_purchases | Покупки пользователей | включены «Покупки»; требуют заказов |
…_users | Пользователи (ученики) | включены «Пользователи» |
…_payments | Платежи | включены «Платежи» |
…_groups | Справочник выбранных групп | в дополнительных настройках выбрана хотя бы одна группа |
…_group_users | Состав этих групп: кто в какой группе | вместе с …_groups |
Примечание
Состав групп доступен только в хранилище ROMI center и отдельном ClickHouse — на других приёмниках этой возможности нет. Период на группы не распространяется: их состав каждый раз перечитывается целиком.
Заказы, пользователи и платежи приезжают выгрузками за период. Причём заказы собираются четырьмя выгрузками: созданные за период, оплаченные, сменившие статус и частично оплаченные — поэтому в выгрузку попадёт и старый заказ, если именно в этом окне его оплатили или у него сменился статус.
Позиции заказов и покупки так получить нельзя: их коннектор добирает по одному заказу и по одному пользователю через технический API аккаунта — отсюда отдельные очереди и своя скорость.
Периодичность
Ночью, в 05:10, коннектор ставит задание на каждую включённую сущность. Заказы, пользователей, платежи и группы он забирает каждые 5 минут фоновыми воркерами; позиции заказов и покупки — раз в минуту, пачками по 500 строк, с запросом в технический API на каждый заказ и каждого пользователя.
Важно
Выгрузки GetCourse лимитированы — около ста запросов за два часа на аккаунт, поэтому заказы, пользователи и платежи забираются раз в сутки, а не чаще.
За какой период забираются данные
Ночной прогон берёт данные со вчерашнего дня минус «Перезагрузка прошлых дней» по вчерашний день; сегодняшний день в ночную выгрузку не попадает. Историческая перезагрузка нарезается на семидневные куски — на каждый кусок и каждую сущность ставится своё задание. Вебхук обновления поля работает вне периодов: он правит уже выгруженную строку по её ключу.
Как сохраняет данные
- Куда: хранилище ROMI center на движке ClickHouse.
- Имя таблицы:
get_course_<адрес аккаунта>_<id подключения>_<таблица>. Адрес берётся из ссылки на портал: отбрасываютсяhttps://и хвост.ru, остальное приводится к латинице без точек и дефисов. Аккаунтhttps://myschool.getcourse.ruдаёт таблицу заказовget_course_myschoolgetcourse_412_deals. - Структура догоняется, а не пересоздаётся. Поле, добавленное в настройках, приходит новой колонкой. Колонки никогда не удаляются: снятое поле останется в таблице со старыми значениями, а новые строки будут писаться в него пустыми.
- Повторная выгрузка не плодит дубли. Строка ищется по ключу — у заказов и пользователей это их идентификатор, у платежей — номер. Найденная строка удаляется и вставляется заново, а дата первой заливки (
rc_created_at) переносится со старой. - Состав групп обновляется целиком. У строки составной ключ «группа + пользователь», и вместе с заливкой удаляются выбывшие: кого в свежем ответе GetCourse нет, того убирают из таблицы. Если ответ по группе не пришёл, не удаляется ничего — коннектор падает в безопасную сторону.
Перезагрузка прошлых дней
Ночная перезагрузка в 05:10 перечитывает окно из настройки «Перезагрузка прошлых дней» (0–7): строки за это окно перезаписываются по ключу, ничего заранее не удаляется. Функция «Загрузить исторические данные» в меню подключения работает за любой период, нарезанный на семидневные куски, — данные дописываются поверх существующих по ключу.
Важно
Галочка «Удалить ранее загруженные данные за период» удаляет все таблицы подключения целиком — заказы, позиции, покупки, пользователей, платежи, группы, — а не только выбранный период. После такой перезагрузки останется только перезагруженный период.
Дополнительные настройки
| Настройка | Что делает |
|---|---|
| Адрес аккаунта и ключ API | Шаг подключения. Ключ нужен для выгрузок; он же используется для списка полей и групп. |
| Сущности и поля | Шаг «Выбор полей»: заказы, позиции заказов, покупки, пользователи, платежи. Позиции и покупки доступны только вместе с заказами. |
| Дата события | Синтетическое поле в списке заказов, пользователей и платежей. В колонку попадает дата оплаты, а если её нет — дата создания записи. |
| Перезагрузка прошлых дней (0–7, по умолчанию 7) | Глубина ночной перезаписи. Больше дней — дольше прогон и больше запросов к GetCourse. |
| Принимать обновления полей по вебхуку | Включает приём вебхуков GetCourse: изменение поля в портале правит уже выгруженную строку, не дожидаясь ночного прогона. Правятся строки заказов, пользователей и платежей; ключевые поля вебхук не трогает. |
| Группы | Мультивыбор групп, состав которых выгружать. Пустой выбор — таблицы групп не заводятся. |
Технические поля
| Колонка | Что внутри |
|---|---|
rc_import_id | Номер прогона выгрузки, которым записана строка. По нему же вычисляются выбывшие из групп. |
rc_created_at | Когда строка впервые попала в таблицу. При перезаписи переносится со старой строки. |
rc_updated_at | Когда строку последний раз меняли — перезаливкой или вебхуком. |
В предпросмотре данных служебные колонки скрыты — они отрезаются по префиксу rc_.
