Анализ поведения пользователей с помощью DQL: различия между версиями

Материал из Документация Ключ-АСТРОМ
Новая страница: «= Анализ поведения пользователей с помощью DQL = '''RUM''' собирает обширные данные о поведении пользователей — клики, навигацию, потоки сессий и пользовательские свойства — в событиях пользователей и пользовательских сессиях. '''DQL''' предоставляет прямой д...»
 
Полностью удалено содержимое страницы
 
Строка 1: Строка 1:
= Анализ поведения пользователей с помощью DQL =


'''RUM''' собирает обширные данные о поведении пользователей — клики, навигацию, потоки сессий и пользовательские свойства — в событиях пользователей и пользовательских сессиях. '''DQL''' предоставляет прямой доступ к этим данным, позволяя отвечать на вопросы о поведении, выходящие за рамки того, что отображается в разделе '''Пользователи и сессии''' по умолчанию, — например, определять, какие элементы пользовательского интерфейса обеспечивают наибольшее вовлечение, составлять карты потоков навигации или измерять показатели отказов.
Выполните приведенные ниже запросы в блокнотах для оперативного анализа или преобразуйте любой из них в пользовательскую метрику на основе событий или сессий пользователей.
== Взаимодействие с пользователями ==
Взаимодействия пользователей фиксируют клики, касания и нажатия клавиш на элементах пользовательского интерфейса. Анализ этих данных помогает понять, с какими частями интерфейса пользователи взаимодействуют чаще всего и меняется ли объем взаимодействий после релизов.
=== Взаимодействие во времени ===
Отслеживание количества взаимодействий с течением времени помогает выявлять снижение вовлеченности или всплески, возникающие после изменения пользовательского интерфейса или внедрения новой функции.
<pre>
fetch user.events
| filter characteristics.has_user_interaction
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| makeTimeseries interactions = count()
</pre>
=== Элементы, лидирующие по количеству взаимодействий ===
Знание того, какие элементы пользовательского интерфейса получают наибольшее количество взаимодействий, помогает выявлять области с высокой интенсивностью трафика, подтверждать правильность проектных решений и обнаруживать недоиспользуемые функции. Приведенный ниже запрос ранжирует элементы пользовательского интерфейса по количеству взаимодействий на всех интерфейсах.
<pre>
fetch user.events
| filter characteristics.has_user_interaction
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| filter in(interaction.name, { "click", "touch", "key_press" })
| summarize {
    sessions = countDistinct(dt.rum.session.id),
    interactions = count()
  }, by: {element = ui_element.name, type = ui_element.tag_name, frontend = frontend.name}
| sort interactions desc
</pre>
Чтобы подсчитать, как часто пользователи взаимодействуют с определенным элементом, отфильтруйте данные по названию элемента и типу тега.
<pre>
fetch user.events
| filter characteristics.has_user_interaction
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| filter in(interaction.name, { "click", "touch", "key_press" })
| filter ui_element.tag_name == "button"
| filter ui_element.name == "Close details" // Замените на имя элемента, который вы хотите проанализировать 
| summarize {
    sessions = countDistinct(dt.rum.session.id),
    interactions = count()
  }, by: {element = ui_element.name}
</pre>
Для веб-интерфейсов можно улучшить согласованность именования элементов и обогатить взаимодействие контекстом функций или компонентов, чтобы сделать анализ более удобным. См. разделы '''Настройка именования элементов пользовательского интерфейса для взаимодействия с пользователем''' и '''Связывание взаимодействия пользователя с функциями и компонентами пользовательского интерфейса'''.
== Навигационные потоки ==
Навигация связывает последовательность просмотров, которые пользователь посещает в течение сессии. Анализ шаблонов навигации позволяет выявить наиболее посещаемый контент и то, как пользователи перемещаются по вашему интерфейсу.
=== Навигация во времени ===
Отслеживание переходов по ссылкам с течением времени помогает выявить снижение вовлеченности или подтвердить, что новая функция или изменение контента привлекают больше трафика. События навигации срабатывают при каждой загрузке страницы и переходе между представлениями '''SPA''', поэтому их количество отражает общую активность просмотра.
<pre>
fetch user.events
| filter characteristics.has_navigation
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| makeTimeseries navigations = count()
</pre>
=== Главные страницы и просмотры ===
Знание того, какие страницы или разделы привлекают наибольшее количество посетителей, помогает сосредоточить усилия на оптимизации и измерить охват ключевого контента. Приведенный ниже запрос ранжирует их по количеству уникальных сессий, посетивших их.
<pre>
fetch user.events
| filter characteristics.has_navigation
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| summarize sessions = countDistinct(dt.rum.session.id), by: {view = view.url.path}
| sort sessions desc
</pre>
Для измерения вовлеченности пользователей в разных контекстах используйте следующий запрос.
<pre>
fetch user.events
| filter characteristics.has_user_interaction
| filter interaction.name == "click"
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| summarize {
    sessions = countDistinct(dt.rum.session.id),
    clicks = count()
  }, by: {view = view.url.path}
| sort clicks desc
</pre>
=== Виды с посадки ===
Знание того, с чего начинаются сессии, помогает определить наиболее распространенные точки входа и расставить приоритеты в отношении опыта участников.
<pre>
fetch user.events
| filter characteristics.has_navigation
| filter view.sequence_number == 1
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| summarize sessions = countDistinct(dt.rum.session.id), by: {landing_view = view.url.path}
| sort sessions desc
</pre>
=== Входящие потоки ===
Понимание того, откуда пользователи попадают на определенный сайт, помогает оценить пути перехода и оптимизировать их взаимодействие с ключевым контентом.
<pre>
fetch user.events
| filter characteristics.has_navigation
| filter view.url.path == "/overview" // Замените на путь к целевому URL-адресу представления 
| filter view.source.url.path != "/overview" // Замените на то же значение, что и выше, чтобы исключить самостоятельную навигацию 
| summarize sessions = countDistinct(dt.rum.session.id), by: {source_view = view.source.name}
| sort sessions desc
</pre>
=== Исходящие потоки ===
Понимание того, куда пользователи переходят после того, как покидают определенную страницу, помогает определить, следуют ли они ожидаемому пути или уходят. Используйте это для проверки воронок конверсии и выявления тупиковых ситуаций.
<pre>
fetch user.events
| filter characteristics.has_navigation
| filter view.source.url.path == "/login" // Замените на путь URL исходного кода представления 
| filter view.url.path != "/login" // Замените на то же значение, что и выше, чтобы исключить самостоятельную навигацию 
| summarize sessions = countDistinct(dt.rum.session.id), by: {next_view = view.name}
| sort sessions desc
</pre>
== Сегментация свойств событий и сессий ==
Свойства событий и сессий позволяют привязывать бизнес-контекст к событиям и сессиям пользователей — например, уровень клиента, состояние флага функции или результат оформления заказа. После определения эти свойства можно использовать в качестве фильтров '''DQL''' и параметров группировки для сегментации любого поведенческого анализа по вашим собственным бизнес-критериям.
Для отслеживания перемещений по объекту недвижимости с течением времени используйте следующий пример.
<pre>
fetch user.events
| filter characteristics.has_navigation
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| filter isNotNull(event_properties.customer_tier) // Замените на имя свойства, которое вы настроили
| makeTimeseries sessions = countDistinct(dt.rum.session.id), by: {event_properties.customer_tier} // Замените на то же имя свойства
</pre>
Для сравнения распределения свойства по всем сессиям используйте следующий пример.
<pre>
fetch user.sessions
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| filter isNotNull(session_properties.payment_provider) // Замените на имя свойства, которое вы настроили
| summarize by: {session_properties.payment_provider}, sessions = count() // Замените на то же имя свойства
</pre>
== Показатель отказов ==
Высокий показатель отказов может указывать на несоответствие контента и намерений пользователей — когда пользователи попадают на страницу, которая не соответствует их ожиданиям, — или на сложности в процессе регистрации или оформления заказа. Приведенные ниже запросы, лучше всего подходящие для исторических периодов, используют пример пользовательского определения, которое вы можете настроить в соответствии с определением вашего продукта.
<pre>
fetch user.sessions
| fieldsAdd bounced = navigation_count <= 1
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| summarize by: {bounced}, count = count()
</pre>
Для сравнения показателей отказов на разных сайтах добавьте дополнительный параметр `by`.
<pre>
fetch user.sessions
| fieldsAdd bounced = navigation_count <= 1
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| summarize {
    total = count(),
    bounced = countIf(bounced == true)
  }, by: {frontend.name}
| fieldsAdd bounce_rate_pct = toDouble(bounced) / total * 100
| sort bounce_rate_pct desc
</pre>
== Атрибуция кампании UTM ==
'''UTM'''-параметры — это теги, добавляемые маркетинговыми командами к '''URL'''-адресам для определения того, какие кампании, каналы или рекламные креативы привлекают трафик на ваш сайт. Приведенный ниже запрос извлекает значения '''UTM''' из '''URL'''-адресов событий навигации и ранжирует их по количеству сессий, показывая, какие кампании обеспечивают наибольшее количество посещений. Используйте это для сопоставления эффективности кампаний с поведением пользователей на ваших веб-сайтах.
<pre>
fetch user.events
| filter characteristics.has_navigation
// | filter frontend.name == "FRONTEND-NAME" // Необязательно: фильтрация по конкретному интерфейсу 
| fields view.url.path, view.url.query, dt.rum.session.id
| filterOut isNull(view.url.query)
| parse view.url.query, "ARRAY{LD:key('&'| EOF)}*:params"
| expand params
| parse decodeUrl(params), "LD:key '=' LD:value"
| filter in(key, array("utm_campaign", "utm_content", "utm_medium", "utm_source", "utm_term"))
| summarize by: {key, value}, count = countDistinct(dt.rum.session.id)
| sort count desc
</pre>
== Связанные темы ==
* Встроенные метрики '''RUM'''
* Извлечение метрик из пользовательских сессий
* Отслеживайте производительность веб-сайта с помощью '''DQL'''

Текущая версия от 17:42, 22 октября 2026