Что отдаёт Яндекс как кликстрим и в какой форме — чтобы целевая модель
события стенда (#18) копировала формат, знакомый в РФ, а не абстрактный
Snowplow.
Подвопросы:
Метрика, Logs API (хиты и визиты): состав полей, типы, есть ли
вложенность и массивы, какие метки времени (клиентская и серверная),
идентификаторы (ClientID, UserID, метки рекламы). Как это обычно
кладут в ClickHouse.
AppMetrica: форма события (похоже, полем-строкой с JSON), чем
отличается от Метрики.
Способ доставки: батч-выгрузка или поток. Есть ли потоковый путь
(Object Storage, Cloud Logging, «Стрим») — от этого зависит, честна ли
наша Kafka в рассказе про Яндекс.
Выручка и заказы: как выражены покупка и сумма (ecommerce dataLayer), что из этого попадает в выгрузку.
Вывод для нас: плоское ядро с массивами или вложенный JSON; какие
20–40 полей стоит воспроизводить, чтобы форма была узнаваема.
Источники — только первоисточники: документация Яндекс Метрики и
AppMetrica, документация Яндекс Облака. Итог — файлом в репозитории,
ссылка из тикета.
Тело восстановлено дословно из транскрипта сессии; перенос с GitHub 2026-07-26.
Part of #10
## Question
Что отдаёт Яндекс как кликстрим и в какой форме — чтобы целевая модель
события стенда (#18) копировала формат, знакомый в РФ, а не абстрактный
Snowplow.
Подвопросы:
- **Метрика, Logs API** (хиты и визиты): состав полей, типы, есть ли
вложенность и массивы, какие метки времени (клиентская и серверная),
идентификаторы (`ClientID`, `UserID`, метки рекламы). Как это обычно
кладут в ClickHouse.
- **AppMetrica**: форма события (похоже, полем-строкой с JSON), чем
отличается от Метрики.
- **Способ доставки**: батч-выгрузка или поток. Есть ли потоковый путь
(Object Storage, Cloud Logging, «Стрим») — от этого зависит, честна ли
наша Kafka в рассказе про Яндекс.
- **Выручка и заказы**: как выражены покупка и сумма (ecommerce
`dataLayer`), что из этого попадает в выгрузку.
- **Вывод для нас**: плоское ядро с массивами или вложенный JSON; какие
20–40 полей стоит воспроизводить, чтобы форма была узнаваема.
Источники — только первоисточники: документация Яндекс Метрики и
AppMetrica, документация Яндекс Облака. Итог — файлом в репозитории,
ссылка из тикета.
*Тело восстановлено дословно из транскрипта сессии; перенос с GitHub 2026-07-26.*
Резолюция (дословный перенос с GitHub, автор dementev-dev):
Ответ
Полный отчёт: docs/research/2026-07-26-yandex-clickstream-format.md — ветка research/yandex-clickstream-format, коммит e6e34f2 (в main не слита).
Форма — плоское широкое ядро с массивами. Вложенных объектов вроде context / properties у Яндекса нет: около 140 плоских колонок на хит,
а всё многозначное (цели, товары, покупки, свои параметры) лежит в параллельных массивах одной длины (productID, productName, productPrice — три отдельных массива, а не массив объектов). Рядом одно
сырое поле-строка ecommerce. По форме Яндекс ближе к Snowplow, чем к
Segment или Amplitude.
Доставка — батч; потока в общем доступе нет.
Logs API: запрос готовится, потом скачивается TSV. Данных за текущий
день нет, лог доформировывается около 3 дней. Период до года, квота
10 ГБ.
«Метрика Про» плюс Yandex Data Transfer (репликация) в управляемый
ClickHouse: задержка до 15 минут, истории до создания коннектора нет.
AppMetrica Data Stream: окна по 5 минут, задержка от 10 минут,
хранение 7 дней.
Экспорт в Object Storage или Yandex Data Streams первоисточниками не
подтверждён.
Вывод для стенда: Kafka — учебная замена, у Яндекса кликстрима через
Kafka нет. Так это и надо называть менти в документе о границах реализма.
Главные находки
Две сущности: хиты (ym:pv:) и визиты (ym:s:). Визит — уже
свёрнутая сессия, внутри watchIDs Array(UInt64).
Строку user agent Метрика не отдаёт — только разобранные browser, browserMajorVersion, deviceCategory. Наш browser_user_agent —
выдумка стенда.
Координат в выгрузке нет — только regionCountry / regionCity плюс
числовые идентификаторы регионов. Наши широта и долгота тоже без
аналога.
Метка времени серверная одна (UTCEventTime) плюс смещение ClientTimeZone Int16 в минутах. Разделение «клиент против сервера»
есть у AppMetrica (event_datetime / event_receive_datetime), у
Метрики нет.
В потоке приходят версии одной записи: Sign Int8, HitVersion / VisitVersion, считать через sum(Sign) — механика CollapsingMergeTree (подтверждено DDL visits_v1 из документации
ClickHouse).
Выручка — purchaseRevenue Array(Float64), валюта purchaseCurrency Array(String). В облачной выгрузке имена колонок
без префиксов ym:*, уже в стиле ClickHouse (WatchID, VisitID, ClientID).
В файле дополнительно: таблица 53 полей с типами и источником и
пометкой «нет у нас» (главный пробел — цели, ParsedParams, ecommerce с
выручкой, Sign); 12 пунктов «что не копировать»; раздел с тем, что
осталось неподтверждённым (UserID и yclid в Logs API, лимит на размер
файла, срок хранения готового лога).
*Резолюция (дословный перенос с GitHub, автор dementev-dev):*
## Ответ
Полный отчёт: `docs/research/2026-07-26-yandex-clickstream-format.md` — ветка
`research/yandex-clickstream-format`, коммит `e6e34f2` (в `main` не слита).
**Форма — плоское широкое ядро с массивами.** Вложенных объектов вроде
`context` / `properties` у Яндекса нет: около 140 плоских колонок на хит,
а всё многозначное (цели, товары, покупки, свои параметры) лежит в
**параллельных массивах одной длины** (`productID`, `productName`,
`productPrice` — три отдельных массива, а не массив объектов). Рядом одно
сырое поле-строка `ecommerce`. По форме Яндекс ближе к Snowplow, чем к
Segment или Amplitude.
**Доставка — батч; потока в общем доступе нет.**
- Logs API: запрос готовится, потом скачивается TSV. Данных за текущий
день нет, лог доформировывается около 3 дней. Период до года, квота
10 ГБ.
- «Метрика Про» плюс Yandex Data Transfer (репликация) в управляемый
ClickHouse: задержка до 15 минут, истории до создания коннектора нет.
- AppMetrica Data Stream: окна по 5 минут, задержка от 10 минут,
хранение 7 дней.
- Экспорт в Object Storage или Yandex Data Streams первоисточниками не
подтверждён.
Вывод для стенда: **Kafka — учебная замена**, у Яндекса кликстрима через
Kafka нет. Так это и надо называть менти в документе о границах реализма.
**Главные находки**
1. Две сущности: хиты (`ym:pv:`) и визиты (`ym:s:`). Визит — уже
свёрнутая сессия, внутри `watchIDs Array(UInt64)`.
2. 56 полей хита — массивы. Идентификаторы числовые (`watchID UInt64`,
`clientID UInt64`), не UUID.
3. Строку user agent Метрика не отдаёт — только разобранные `browser`,
`browserMajorVersion`, `deviceCategory`. Наш `browser_user_agent` —
выдумка стенда.
4. Координат в выгрузке нет — только `regionCountry` / `regionCity` плюс
числовые идентификаторы регионов. Наши широта и долгота тоже без
аналога.
5. Метка времени серверная одна (`UTCEventTime`) плюс смещение
`ClientTimeZone Int16` в минутах. Разделение «клиент против сервера»
есть у AppMetrica (`event_datetime` / `event_receive_datetime`), у
Метрики нет.
6. В потоке приходят **версии одной записи**: `Sign Int8`,
`HitVersion` / `VisitVersion`, считать через `sum(Sign)` — механика
`CollapsingMergeTree` (подтверждено DDL `visits_v1` из документации
ClickHouse).
7. Выручка — `purchaseRevenue Array(Float64)`, валюта
`purchaseCurrency Array(String)`. В облачной выгрузке имена колонок
без префиксов `ym:*`, уже в стиле ClickHouse (`WatchID`, `VisitID`,
`ClientID`).
**В файле дополнительно:** таблица 53 полей с типами и источником и
пометкой «нет у нас» (главный пробел — цели, `ParsedParams`, ecommerce с
выручкой, `Sign`); 12 пунктов «что не копировать»; раздел с тем, что
осталось неподтверждённым (`UserID` и `yclid` в Logs API, лимит на размер
файла, срок хранения готового лога).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #10
Question
Что отдаёт Яндекс как кликстрим и в какой форме — чтобы целевая модель
события стенда (#18) копировала формат, знакомый в РФ, а не абстрактный
Snowplow.
Подвопросы:
вложенность и массивы, какие метки времени (клиентская и серверная),
идентификаторы (
ClientID,UserID, метки рекламы). Как это обычнокладут в ClickHouse.
отличается от Метрики.
(Object Storage, Cloud Logging, «Стрим») — от этого зависит, честна ли
наша Kafka в рассказе про Яндекс.
dataLayer), что из этого попадает в выгрузку.20–40 полей стоит воспроизводить, чтобы форма была узнаваема.
Источники — только первоисточники: документация Яндекс Метрики и
AppMetrica, документация Яндекс Облака. Итог — файлом в репозитории,
ссылка из тикета.
Тело восстановлено дословно из транскрипта сессии; перенос с GitHub 2026-07-26.
Резолюция (дословный перенос с GitHub, автор dementev-dev):
Ответ
Полный отчёт:
docs/research/2026-07-26-yandex-clickstream-format.md— веткаresearch/yandex-clickstream-format, коммитe6e34f2(вmainне слита).Форма — плоское широкое ядро с массивами. Вложенных объектов вроде
context/propertiesу Яндекса нет: около 140 плоских колонок на хит,а всё многозначное (цели, товары, покупки, свои параметры) лежит в
параллельных массивах одной длины (
productID,productName,productPrice— три отдельных массива, а не массив объектов). Рядом односырое поле-строка
ecommerce. По форме Яндекс ближе к Snowplow, чем кSegment или Amplitude.
Доставка — батч; потока в общем доступе нет.
день нет, лог доформировывается около 3 дней. Период до года, квота
10 ГБ.
ClickHouse: задержка до 15 минут, истории до создания коннектора нет.
хранение 7 дней.
подтверждён.
Вывод для стенда: Kafka — учебная замена, у Яндекса кликстрима через
Kafka нет. Так это и надо называть менти в документе о границах реализма.
Главные находки
ym:pv:) и визиты (ym:s:). Визит — ужесвёрнутая сессия, внутри
watchIDs Array(UInt64).watchID UInt64,clientID UInt64), не UUID.browser,browserMajorVersion,deviceCategory. Нашbrowser_user_agent—выдумка стенда.
regionCountry/regionCityплюсчисловые идентификаторы регионов. Наши широта и долгота тоже без
аналога.
UTCEventTime) плюс смещениеClientTimeZone Int16в минутах. Разделение «клиент против сервера»есть у AppMetrica (
event_datetime/event_receive_datetime), уМетрики нет.
Sign Int8,HitVersion/VisitVersion, считать черезsum(Sign)— механикаCollapsingMergeTree(подтверждено DDLvisits_v1из документацииClickHouse).
purchaseRevenue Array(Float64), валютаpurchaseCurrency Array(String). В облачной выгрузке имена колонокбез префиксов
ym:*, уже в стиле ClickHouse (WatchID,VisitID,ClientID).В файле дополнительно: таблица 53 полей с типами и источником и
пометкой «нет у нас» (главный пробел — цели,
ParsedParams, ecommerce свыручкой,
Sign); 12 пунктов «что не копировать»; раздел с тем, чтоосталось неподтверждённым (
UserIDиyclidв Logs API, лимит на размерфайла, срок хранения готового лога).