# Яндекс Метрика: как работает коннектор

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

> **Примечание**
> Здесь описан только коннектор отчётов. Сырые визиты по строке на визит выгружает отдельный коннектор — [Яндекс Метрика Logs API](https://help-ru.romi.center/yandeks-metrika-logs-api-kak-rabotaet-konnektor); передача офлайн-конверсий в Метрику — тоже другой поток.

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

Коннектор забирает у Метрики отчёты — суммы за день в разрезе выбранных измерений, а не отдельные визиты. Таблиц две, каждая включается на шаге «Выбор полей» отдельно.

| Таблица | Что внутри | Когда появляется |
| --- | --- | --- |
| `…_visits_…` | Визиты: источники, UTM-метки, география, устройства, поведение и достижения целей | включены «Визиты» |
| `…_cost_…` | Расходы на рекламу, которые Метрика получает из рекламных кабинетов, с кликами и визитами по ним | включены «Расходы» |

Строка таблицы — одна комбинация значений измерений за день: визиты из Москвы по метке `utm_source=yandex` за 1 сентября — одна строка с суммами. Состав строк зависит от выбранных измерений: чем их больше, тем мельче разбивка и тем больше строк. В каждой таблице не больше 10 измерений — это ограничение API Метрики, визард следит за ним сам.

> **Важно**
> Слишком мелкая разбивка может стоить дня. При очень подробной разбивке Метрика может отказаться отдавать отчёт, сочтя данные чувствительными, — и день не загружается вовсе. Повтор не помогает: на бою ни один такой день потом не догрузился. Обычно это таблицы с 7–10 измерениями, с городом и подробной разбивкой по источникам и меткам, но хватает и пяти, если среди них ClientID вместе с полом и городом.

Цели выгружаются колонками в таблице визитов. Метрика отдаёт не больше 100 000 строк на запрос, и строки сверх этого коннектор не догружает — на бою самый крупный день был около 11 500 строк, но подробное измерение вроде ClientID на большом сайте может упереться в этот потолок.

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

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

> **Важно**
> «Приостановить выгрузку» не действует: подключение на паузе продолжает выгружаться каждый день.

API Метрики отдаёт не больше 20 метрик за один запрос, поэтому таблицу с большим числом целей коннектор собирает из нескольких запросов и склеивает строки по измерениям.

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

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

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

*   **Куда:** хранилище ROMI center на движке ClickHouse.
*   **Имя таблицы:** `ymetrica_visits_<номер счётчика>_<id подключения>` и `ymetrica_cost_<номер счётчика>_<id подключения>`.
*   **День перезаписывается целиком.** Перед записью дня из таблицы удаляются все строки с этой датой, затем день вставляется заново. Повторная загрузка дня строки не задваивает.
*   **Структура таблицы:** движок `MergeTree`, сортировка по `Date`, без разбиения на партиции.
*   **Структура догоняется, а не пересоздаётся.** Поле или цель, добавленные в настройках, приходят новой колонкой. Колонки никогда не удаляются: снятое поле останется в таблице со старыми значениями, а новые строки будут писаться в него пустыми.

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

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

> **Примечание**
> Упавший день коннектор повторяет сам — до пяти попыток в течение суток. Если все они неудачны, день так и не загрузится. Сам не догружается и день, который вовсе не встал в очередь. Такие дни возвращает только историческая перезагрузка.

Функция «Загрузить исторические данные» в меню подключения работает за любой период по вчерашний день включительно, по одному дню — каждый день периода перечитывается и заменяет прежние строки этой даты.

> **Важно**
> Галочка «Удалить ранее загруженные данные за период» удаляет таблицы включённых отчётов целиком, а не только выбранный период, и затем грузит дни периода. После такой перезагрузки в таблицах останется только перезагруженный период.

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

| Настройка | Что делает |
| --- | --- |
| Счётчик | Выбирается при подключении, один на подключение, и потом не меняется — для другого счётчика заводится отдельное подключение. |
| Поля | Шаг «Выбор полей»: 29 полей визитов и 16 полей расходов. В новом подключении заранее отмечены 8 полей визитов; таблица расходов стартует выключенной. |
| Модель атрибуции | «Последний значимый переход» (по умолчанию), «Первый переход» или «Автоматическая». Определяет, к какому источнику и каким UTM-меткам Метрика относит визиты и расходы — меняет значения этих колонок в обеих таблицах. |
| Цели | До пяти целей для таблицы визитов. |
| Добавить конвертацию валют | Метрика отдаёт суммы сразу в выбранных валютах. Колонка `cost` при этом заменяется колонками `cost_<валюта>`, а колонка дохода по цели — колонками с суффиксом валюты. Чтобы сохранить сумму в рублях, в список нужно добавить и RUB. |

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

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

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

| Колонка | Что внутри |
| --- | --- |
| `rc_import_id` | Номер задания выгрузки, которым записана строка. |
| `rc_created_at` | Когда строка записана в таблицу. |

В предпросмотре данных служебные колонки скрыты — они отрезаются по префиксу `rc_`.
