Переход с Logs API на Data Streaming
Примечание
Функция доступна только для пакета Метрика Про.
При переходе с Logs API на Data Streaming (интеграция с Yandex Cloud) данные передаются в кластер ClickHouse. Формат данных Data Streaming не является обратно совместимым с Logs API: названия полей отличаются, а для некоторых полей Logs API нет прямого аналога.
В отличие от Logs API, данные Data Streaming содержат изменения визитов и хитов по версиям. Одна строка в логе — это одна версия визита или хита (события). Поэтому для одного визита или хита в логе может быть несколько строк. Как получить только финальную версию визита или хита, см. на странице Как работать с данными. Чтобы автоматически удалять устаревшие версии данных, в ClickHouse есть специальные механизмы, например CollapsingMergeTree.
Как перейти с Logs API на Data Streaming
- Создайте кластер ClickHouse в Yandex Cloud, если он еще не создан.
- Настройте Data Streaming: подключите источник данных (Метрика), выберите тип данных (хиты или визиты) и нужные поля, создайте трансфер. Включите потоковую передачу (тип трансфера Репликация), чтобы новые данные начали поступать в реальном времени.
- Сопоставьте поля в SQL-запросах и витринах данных с помощью таблиц соответствий на этой странице.
- Для полей Logs API, у которых нет прямого аналога в Data Streaming, используйте формулы для вычисляемых полей.
- Проверьте корректность данных в кластере ClickHouse, сравнив результаты запросов с данными из Logs API за пересекающийся период.
- После проверки переключите дашборды, отчеты и интеграции на чтение из ClickHouse и отключите выгрузку через Logs API.
Чтобы заполнить кластер архивными данными в том же формате, что и при потоковой передаче, запустите историческую выгрузку данных за нужный период (тип трансфера Копирование). В историческую выгрузку попадают данные, собранные более недели назад: например, за 17 августа данные будут доступны не раньше 10 августа.
Примечание
Data Streaming и Logs API можно использовать параллельно в течение переходного периода: данные будут поступать в оба источника. Это позволит сравнить результаты и убедиться в корректности миграции.
Чтобы облегчить миграцию и сохранить целостность витрин данных, на этой странице приведены:
- Таблица соответствий полей хитов;
- Таблица соответствий полей визитов;
- Формулы для вычисляемых полей;
- Особенности работы с атрибуцией;
- Особенности работы с гео-данными;
- Данные электронной коммерции.
Таблица соответствий полей хитов
В таблице приведены поля хитов (событий) Logs API и их аналоги в Data Streaming.
Примечание
Поля, для которых нет прямого аналога, помечены как «Вычисляемое поле» — см. раздел Формулы для вычисляемых полей. Поля, связанные с атрибуцией и гео-данными, описаны в отдельных разделах: Атрибуция и Гео-данные.
|
Поле Logs API |
Поле Data Streaming |
Примечание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дата и время в формате UTC |
|
|
|
|
|
|
|
|
|
|
|
|
Идентификаторы достигнутых целей, включая офлайн-конверсии (доступны с 12 августа 2025 года) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Строковый и числовой идентификатор ОС |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
См. раздел Атрибуция |
|
|
|
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
|
См. раздел Атрибуция |
|
|
|
См. раздел Атрибуция |
|
|
|
См. раздел Атрибуция |
|
|
|
Строковый идентификатор браузера |
|
|
|
Старшая цифра версии браузера |
|
|
|
Младшая цифра версии браузера |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 — если хит совершен с соответствующего устройства |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Числовой и строковый идентификатор группы ОС |
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IPv4 или IPv6, с которого установлено TCP-соединение |
|
|
— |
См. раздел Гео-данные |
|
|
— |
См. раздел Гео-данные |
|
|
— |
См. раздел Гео-данные |
|
|
— |
См. раздел Гео-данные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица соответствий полей визитов
В таблице приведены поля визитов Logs API и их аналоги в Data Streaming.
|
Поле Logs API |
Поле Data Streaming |
Примечание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
Приведите |
|
|
|
|
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Длительность визита в секундах |
|
|
|
|
|
|
|
|
|
|
— |
См. раздел Гео-данные |
|
|
— |
См. раздел Гео-данные |
|
|
— |
См. раздел Гео-данные |
|
|
— |
См. раздел Гео-данные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
|
|
|
|
|
Идентификатор кампании в Директе |
|
|
|
Идентификатор группы объявлений Директа |
|
|
|
Идентификатор рекламного объявления |
|
|
— |
Нет прямого аналога. Есть |
|
|
— |
Нет прямого аналога. Есть |
|
|
— |
Нет прямого аналога. Есть |
|
|
— |
Нет прямого аналога. Есть |
|
|
— |
Нет прямого аналога. Есть |
|
|
|
Площадка размещения |
|
|
— |
Нет прямого аналога. Есть |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
— |
См. раздел Атрибуция |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
|
|
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
— |
Вычисляемое поле, см. Формулы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
— |
См. раздел Данные электронной коммерции |
|
|
|
Продолжительность разговора в секундах |
|
|
|
Продолжительность ожидания в секундах |
|
|
|
Признак пропущенного звонка |
|
|
|
Метки, ассоциированные со звонком |
|
|
|
Признак первого звонка от этого клиента |
|
|
|
Страница, с которой позвонили |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Формулы для вычисляемых полей
Некоторые поля Logs API вычисляются на стороне сервиса, тогда как в Data Streaming передаются необработанные данные. Поля Logs API, которые не имеют прямого аналога в Data Streaming, можно вычислить с помощью формул ClickHouse.
screenFormat
toUInt16(ifNotFinite(ResolutionWidth * 21 / ResolutionHeight, 0)) AS screenFormat
Поле screenFormat возвращает не разрешение, а число, которое соответствует следующим значениям:
|
Значение |
Соотношение сторон |
|
0 |
undefined |
|
9 |
9:21 |
|
11 |
9:16 |
|
12 |
3:5 |
|
13 |
10:16 |
|
14 |
2:3 |
|
15 |
3:4 |
|
16 |
4:5 |
|
26 |
5:4 |
|
28 |
4:3 |
|
31 |
3:2 |
|
33 |
16:10 |
|
35 |
5:3 |
|
37 |
16:9 |
|
49 |
21:9 |
screenOrientation
toUInt8(
if(IsTablet OR IsMobile,
if(WindowClientHeight > 0 AND WindowClientWidth > 0,
if(WindowClientWidth < WindowClientHeight, 1, 2),
0),
if(ResolutionHeight > 0 AND ResolutionWidth > 0,
if(ResolutionWidth < ResolutionHeight, 1, 2),
0)
)
) AS screenOrientation
Значения screenOrientation:
0— undefined;1— портретная ориентация;2— альбомная ориентация.
physicalScreenWidth
if(
UserAgent IN (2, 6, 72, 137, 14) OR (UserAgent = 70 AND NOT IsMobile),
toUInt32(ResolutionWidth),
toUInt32(ifNotFinite(ResolutionWidth * DevicePixelRatio, 0)) + bitAnd(toUInt16(toUInt32(ifNotFinite(ResolutionWidth * DevicePixelRatio, 0))), 1)
) AS physicalScreenWidth
physicalScreenHeight
if(
UserAgent IN (2, 6, 72, 137, 14) OR (UserAgent = 70 AND NOT IsMobile),
toUInt32(ResolutionHeight),
toUInt32(ifNotFinite(ResolutionHeight * DevicePixelRatio, 0)) + bitAnd(toUInt16(toUInt32(ifNotFinite(ResolutionHeight * DevicePixelRatio, 0))), 1)
) AS physicalScreenHeight
isNewUser
Для определения новых пользователей используется атрибуция по времени первого визита. Сравните UTCStartTime первого визита с UTCStartTime текущего визита. Если значения совпадают, текущий визит — первый для данного пользователя.
TrafficSource.StartTime[indexOf(TrafficSource.Model, 3)] = UTCStartTime AS isNewUser
Где атрибуция 3 — «Первое посещение».
Атрибуция
В визитах Data Streaming, в отличие от Logs API, атрибуция хранится массивами. Все массивы TrafficSource.XXX соответствуют друг другу по типу атрибуции. Порядок элементов в массивах отражает, по какой модели атрибуции (TrafficSource.Model) считается значение поля TrafficSource.XXX, а внутри массива находится само значение.
Чтобы получить значение поля XXX в нужной модели атрибуции YYY, используйте функцию indexOf:
TrafficSource.XXX[indexOf(TrafficSource.Model, YYY)] AS XXX
Модели атрибуции
|
Код |
Модель атрибуции |
|
1 |
Последний переход |
|
5 |
Последний значимый переход (кросс-девайс) |
|
6 |
Первый переход (кросс-девайс) |
|
11 |
Автоматическая (кросс-девайс) |
Источники трафика
Значения в поле TrafficSource.ID:
|
Код |
Источник |
|
-1 |
Внутренние переходы |
|
0 |
Прямые заходы |
|
1 |
Переходы по ссылкам на сайтах |
|
2 |
Переходы из поисковых систем |
|
3 |
Переходы по рекламе |
|
4 |
Переходы с сохраненных страниц |
|
5 |
Не определен |
|
6 |
Переходы по внешним ссылкам |
|
7 |
Переходы с почтовых рассылок |
|
8 |
Переходы из соцсетей |
|
9 |
Переходы из рекомендательных систем |
|
10 |
Переходы из мессенджеров |
|
11 |
Переходы по QR-коду |
Пример
SELECT
VisitID,
TrafficSource.ID[indexOf(TrafficSource.Model, 1)] AS lastTrafficSourceID, -- Источник трафика по атрибуции «Последний переход»
TrafficSource.ID[indexOf(TrafficSource.Model, 5)] AS cd_last_significant_TraficSourceID, -- Источник трафика по атрибуции «Последний значимый переход» (кросс-девайс)
TrafficSource.ID[indexOf(TrafficSource.Model, 6)] AS cd_first_TraficSourceID -- Источник трафика по атрибуции «Первый переход» (кросс-девайс)
FROM your_database.your_visits_table
WHERE StartDate = today() - 1
Подробнее о работе с массивами в ClickHouse см. в документации ClickHouse.
Гео-данные
В Data Streaming нет готовых полей с названиями стран и городов. Гео-данные представлены идентификаторами регионов (например, RegionID). Чтобы получить названия регионов по идентификаторам, используйте встроенные функции ClickHouse для работы с гео-словарями, например regionToName:
SELECT
RegionID,
regionToName(RegionID, 'ru') AS regionName
FROM your_database.your_visits_table
LIMIT 10
Подробнее о функциях работы с гео-данными см. в документации ClickHouse.
Данные электронной коммерции
В Data Streaming данные электронной коммерции хранятся в массивах:
EAction.*— массив действий с товарами в течение визита. В одном визите могут быть действия с просмотренными товарами, добавленными в корзину и купленными товарами. Тип действия можно узнать с помощью поляEAction.Type.EPurchase.*— массив покупок в течение визита. За один визит может быть совершено несколько покупок.EPurchaseWithProducts.*— массив купленных товаров. Совпадает сEAction.*, где оставлены только покупки (EAction.Type = 3).
Внимание
Если информация о покупке передана без заполнения массива products, массив EPurchase будет содержать данные о покупке, но EAction.Type = 3 в массиве EAction будет отсутствовать.
EPromotion.*— массив действий с внутренними промокампаниями в течение визита. Тип действия с промокампанией можно определить по полюEPromotion.Type.