# LiveDune: как работает коннектор

В этой статье вы узнаете, как коннектор LiveDune выгружает статистику аккаунтов соцсетей в хранилище ROMI center: что попадает в таблицу, с какой периодичностью идёт выгрузка и как устроена перезагрузка. Полный список полей — в статье [LiveDune: описание выгружаемых полей](https://help-ru.romi.center/livedune-opisanie-vygruzhaemyh-polej).

## Что выгружается: одна таблица на все аккаунты

Подключение — это API-токен кабинета LiveDune. Коннектор берёт из кабинета список аккаунтов соцсетей и по каждому аккаунту запрашивает статистику за день.

| Что в LiveDune | Что в таблице |
| --- | --- |
| Аккаунт соцсети за один день | Строка |
| Площадка, ID и название аккаунта | Колонки `account_type`, `account_id`, `account_name` |
| Подписчики, публикации, реакции, вовлечённость | Колонки |

Имя таблицы — `livedune_<id подключения>`, например `livedune_12`. Все аккаунты кабинета лежат в одной таблице, отличить их можно по колонкам `account_*`.

По умолчанию выгружаются все аккаунты кабинета, в том числе добавленные в LiveDune позже. Можно оставить только нужные — см. «Дополнительные настройки».

## Периодичность

| Что происходит | Когда |
| --- | --- |
| Первая выгрузка | сразу после сохранения подключения — за вчерашний день |
| Ночная выгрузка | каждую ночь, начиная с 02:00, на каждый из последних семи дней |

Каждый день перечитывается семь ночей подряд. Задания не создаются, если истекла лицензия проекта, хранилище не настроено или недоступно, подключение на паузе или его настройки не сохранены.

> **Важно**
> История при подключении не загружается. Первая выгрузка берёт только вчерашний день, ближайшая ночь — последние семь дней. Более ранние дни нужно загрузить перезагрузкой (см. ниже).

> **Важно**
> Пропуски старше недели сами не догружаются. Если выгрузка стояла дольше семи дней — пауза, истёкшая лицензия, долгий сбой LiveDune, — после возобновления ночь заберёт только последние семь дней, а более ранние нужно перезагрузить.

## За какой период забираются данные

| Случай | Период |
| --- | --- |
| Первая выгрузка | вчерашний день |
| Ежедневная выгрузка | последние семь дней по вчерашний включительно |
| Историческая перезагрузка | выбранный период по вчерашний день |

Сегодняшний день не запрашивается: сутки ещё не закончились.

## Как сохраняет данные

*   **Куда:** хранилище ROMI center на движке ClickHouse.
*   **День переписывается целиком.** Перед вставкой строки за эту дату удаляются по всем аккаунтам, и только потом пишутся новые. Повторная выгрузка дублей не создаёт. Если LiveDune не вернул за день ни одной строки, прежние строки этого дня остаются как были.
*   **Структура таблицы:** движок `MergeTree`, партиции по дню, сортировка по `stats_day`.
*   **Колонки добавляются на ходу.** Поле, отмеченное позже, появится колонкой при очередной выгрузке. Колонки не удаляются: снятое поле остаётся колонкой и дальше заполняется пустыми значениями.
*   **Удаление подключения удаляет и таблицу** из хранилища.

> **Важно**
> Сбои LiveDune выгрузку не останавливают и ошибкой не считаются. Если не удалось получить список аккаунтов — токен отозван или LiveDune недоступен, — задание получает статус «Завершено» и 0 строк. Если упал запрос по одному аккаунту, этот аккаунт молча выпадает из дня, а остальные записываются: его строк за этот день не будет, пока день не перечитает следующая ночь, а через неделю — только перезагрузка.

> **Важно**
> Токен фактически не проверяется: мастер принимает любой токен, а неверный или отозванный токен ошибкой доступа не считается. Такое подключение выглядит просто пустым: список аккаунтов на шаге «Дополнительные настройки» пуст, задания завершаются без строк.

## Перезагрузка данных

| Перезагрузка | Что делает |
| --- | --- |
| «Загрузить исторические данные» | На каждый день периода создаётся задание, день переписывается заново. Период любой по вчерашний день: ни глубина, ни длина не ограничены |
| Она же с галочкой «Удалить ранее загруженные данные за период» | Таблица удаляется целиком, а не только за выбранный период, и заполняется заново только днями этого периода |

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

> **Важно**
> Каждый день перезагрузки — это запрос по каждому аккаунту: год истории при 17 аккаунтах — около 6 600 запросов к LiveDune. Если LiveDune откажет в части из них, эти дни и аккаунты молча выпадут, а с галочкой удаления их прежние строки уже будут стёрты. После большой перезагрузки проверьте, что за каждый день в таблице есть все аккаунты.

## Дополнительные настройки

| Настройка | Что делает |
| --- | --- |
| API-токен | Шаг «Доступ»: токен из кабинета LiveDune. У готового подключения не меняется: другой токен — это новое подключение и новая таблица |
| Поля | Шаг «Выбор полей»: 14 полей, из них 4 обязательных — дата и три поля аккаунта. По умолчанию отмечены все |
| Аккаунты | Шаг «Дополнительные настройки»: переключатель «Выгружать все аккаунты». Если его выключить, появится список аккаунтов кабинета с площадкой в скобках; без единого выбранного аккаунта настройки не сохранятся |
| Приостановить выгрузку | Останавливает создание новых заданий; уже созданные доработают. Данные в хранилище остаются |

> **Примечание**
> Повторное подключение с тем же токеном в том же проекте второго подключения не создаёт: мастер продолжит настройку существующего. Аккаунты, выбранные вручную, хранятся по ID — новые аккаунты кабинета в такой выбор сами не попадут.

> **Важно**
> Убранный аккаунт исчезает и из последней недели. Если аккаунт удалили из кабинета LiveDune или сняли с выбора, ближайшая ночь перепишет последние семь дней уже без него, и его строки за эти дни пропадут. Более ранние строки останутся.

Изменения полей и аккаунтов действуют с ближайшей выгрузки: последние семь дней перечитываются в новом виде, а более ранние остаются прежними, пока их не перезагрузить.

## Технические поля

| Колонка | Что внутри |
| --- | --- |
| `rc_import_id` | Номер задания, которым записана строка |
| `rc_created_at` | Дата и время записи строки в хранилище, по Москве |

В «Просмотре данных» служебные колонки скрыты, в самой таблице они есть.
