GetCourse: как работает коннектор

Скачать .md

В этой статье вы узнаете, как коннектор 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_.

Покажем, из чего собирается ваша аналитика

За 30 минут разберём ваши источники и соберём схему: что подключается, что считается само, где цифры разойдутся.

  • Что у вас уже собирается и чего не хватает, чтобы увидеть выручку по каналам
  • Порядок подключения: что заработает за день, а что придётся настроить руками
  • Готовые отчёты на живых данных — расход и выручка рядом, когорты, RFM
Записаться на демо
Дашборд ROMI center со сквозной аналитикой