Перейти к основному содержимому

Метрики конверсии

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

Например, использование метрик конверсии позволяет отслеживать, как часто пользователь (сущность) завершает визит (базовое событие), а затем совершает покупку (событие конверсии) в течение 7 дней (временное окно). Вам нужно будет добавить временной диапазон и сущность для объединения.

Метрики конверсии отличаются от метрик отношения, потому что вам нужно включить сущность в предварительно агрегированное объединение.

Параметры

Спецификация для метрик конверсии следующая:

подсказка

Обратите внимание, что мы используем двойное двоеточие (::), чтобы указать, вложен ли параметр в другой параметр. Например, query_params::metrics означает, что параметр metrics вложен в query_params.

ПараметрОписаниеОбязательныйТип
nameИмя метрики.ОбязательныйСтрока
descriptionОписание метрики.НеобязательныйСтрока
typeТип метрики (например, производная, отношение и т.д.). В этом случае установите как 'conversion'.ОбязательныйСтрока
labelОбязательная строка, определяющая отображаемое значение в инструментах нижнего уровня. Принимает простой текст, пробелы и кавычки (например, orders_total или "orders_total").ОбязательныйСтрока
type_paramsСпецифические конфигурации для каждого типа метрики.ОбязательныйСловарь
conversion_type_paramsДополнительная конфигурация, специфичная для метрик конверсии.ОбязательныйСловарь
entityСущность для каждого события конверсии.ОбязательныйСтрока
calculationМетод расчета. Либо conversion_rate, либо conversions. По умолчанию conversion_rate.НеобязательныйСтрока
base_measureСписок входных данных базовой меры.ОбязательныйСловарь
base_measure:nameМера базового события конверсии.ОбязательныйСтрока
base_measure:fill_nulls_withУстановите значение в определении вашей метрики вместо null (например, ноль).НеобязательныйСтрока
base_measure:join_to_timespineБулево значение, указывающее, следует ли объединять агрегированную меру с таблицей временной оси для заполнения отсутствующих дат. По умолчанию false.НеобязательныйБулево
base_measure:filterНеобязательный filter, используемый для применения к базовой мере.НеобязательныйСтрока
conversion_measureСписок входных данных меры конверсии.ОбязательныйСловарь
conversion_measure:nameМера базового события конверсии.ОбязательныйСтрока
conversion_measure:fill_nulls_withУстановите значение в определении вашей метрики вместо null (например, ноль).НеобязательныйСтрока
conversion_measure:join_to_timespineБулево значение, указывающее, следует ли объединять агрегированную меру с таблицей временной оси для заполнения отсутствующих дат. По умолчанию false.НеобязательныйБулево
windowВременное окно для события конверсии, например, 7 дней, 1 неделя, 3 месяца. По умолчанию бесконечность.НеобязательныйСтрока
constant_propertiesСписок постоянных свойств.НеобязательныйСписок
base_propertyСвойство из базовой семантической модели, которое вы хотите удерживать постоянным.НеобязательныйСтрока
conversion_propertyСвойство из семантической модели конверсии, которое вы хотите удерживать постоянным.НеобязательныйСтрока

Обратитесь к дополнительным настройкам, чтобы узнать, как настроить метрики конверсии с помощью настроек для значений null, типа расчета и постоянных свойств.

Следующий пример кода демонстрирует полную спецификацию для метрик конверсии и подробно описывает, как они применяются:

metrics:
- name: The metric name # Обязательный
description: The metric description # Необязательный
type: conversion # Обязательный
label: YOUR_LABEL # Обязательный
type_params: # Обязательный
conversion_type_params: # Обязательный
entity: ENTITY # Обязательный
calculation: CALCULATION_TYPE # Необязательный. по умолчанию: conversion_rate. варианты: conversions(buys) или conversion_rate (buys/visits), и другие.
base_measure:
name: The name of the measure # Обязательный
fill_nulls_with: Set the value in your metric definition instead of null (such as zero) # Необязательный
join_to_timespine: true/false # Булево значение, указывающее, следует ли объединять агрегированную меру с таблицей временной оси для заполнения отсутствующих дат. По умолчанию `false`. # Необязательный
filter: The filter used to apply to the base measure. # Необязательный
conversion_measure:
name: The name of the measure # Обязательный
fill_nulls_with: Set the value in your metric definition instead of null (such as zero) # Необязательный
join_to_timespine: true/false # Булево значение, указывающее, следует ли объединять агрегированную меру с таблицей временной оси для заполнения отсутствующих дат. По умолчанию `false`. # Необязательный
window: TIME_WINDOW # Необязательный. по умолчанию: бесконечность. окно для объединения двух событий. Следует аналогичному формату, как временные окна в других местах (например, 7 дней)
constant_properties: # Необязательный. Список постоянных свойств по умолчанию: None
- base_property: DIMENSION or ENTITY # Обязательный. Ссылка на измерение/сущность семантической модели, связанной с base_measure
conversion_property: DIMENSION or ENTITY # То же, что и base выше, но для семантической модели conversion_measure

Пример метрики конверсии

Следующий пример измерит конверсии от посещений веб-сайта (VISITS таблица) до завершения заказа (BUYS таблица) и рассчитает метрику конверсии для этого сценария шаг за шагом.

Предположим, у вас есть две семантические модели, VISITS и BUYS:

  • Таблица VISITS представляет посещения на сайте электронной коммерции.
  • Таблица BUYS представляет завершение заказа на этом сайте.

Исходные таблицы выглядят следующим образом:

VISITS
Содержит посещения пользователей с USER_ID и REFERRER_ID.

DSUSER_IDREFERRER_ID
2020-01-01bobfacebook
2020-01-04bobgoogle
2020-01-07bobamazon

BUYS
Записывает завершенные заказы с USER_ID и REFERRER_ID.

DSUSER_IDREFERRER_ID
2020-01-02bobfacebook
2020-01-07bobamazon

Далее определите метрику конверсии следующим образом:

- name: visit_to_buy_conversion_rate_7d
description: "Конверсия от посещения до транзакции за 7 дней"
type: conversion
label: Конверсия от посещения до покупки (7-дневное окно)
type_params:
conversion_type_params:
base_measure:
name: visits
fill_nulls_with: 0
filter: {{ Dimension('visits__referrer_id') }} = 'facebook'
conversion_measure:
name: sellers
entity: user
window: 7 days

Для расчета конверсии свяжите событие BUYS с ближайшим событием VISITS (или ближайшим базовым событием). Следующие шаги объясняют этот процесс более подробно:

Шаг 1: Объедините VISITS и BUYS

Этот шаг объединяет таблицу BUYS с таблицей VISITS и получает все комбинации событий посещений-покупок, которые соответствуют условию объединения, где покупки происходят в течение 7 дней после посещения (любые строки, которые имеют того же пользователя и покупка произошла не более чем через 7 дней после посещения).

Сгенерированный SQL на этих шагах выглядит следующим образом:

select
v.ds,
v.user_id,
v.referrer_id,
b.ds,
b.uuid,
1 as buys
from visits v
inner join (
select *, uuid_string() as uuid from buys -- Добавляет столбец uuid для уникальной идентификации различных строк
) b
on
v.user_id = b.user_id and v.ds <= b.ds and v.ds > b.ds - interval '7 days'

Набор данных возвращает следующее (обратите внимание, что для первого посещения есть два потенциальных события конверсии):

V.DSV.USER_IDV.REFERRER_IDB.DSUUIDBUYS
2020-01-01bobfacebook2020-01-02uuid11
2020-01-01bobfacebook2020-01-07uuid21
2020-01-04bobgoogle2020-01-07uuid21
2020-01-07bobamazon2020-01-07uuid21

Шаг 2: Уточните с помощью оконной функции

Вместо возврата сырых значений посещений используйте оконные функции, чтобы связать конверсии с ближайшим базовым событием. Вы можете разделить по источнику конверсии и получить first_value, упорядоченный по visit ds, по убыванию, чтобы получить ближайшее базовое событие от события конверсии:

select
first_value(v.ds) over (partition by b.ds, b.user_id, b.uuid order by v.ds desc) as v_ds,
first_value(v.user_id) over (partition by b.ds, b.user_id, b.uuid order by v.ds desc) as user_id,
first_value(v.referrer_id) over (partition by b.ds, b.user_id, b.uuid order by v.ds desc) as referrer_id,
b.ds,
b.uuid,
1 as buys
from visits v
inner join (
select *, uuid_string() as uuid from buys
) b
on
v.user_id = b.user_id and v.ds <= b.ds and v.ds > b.ds - interval '7 day'

Набор данных возвращает следующее:

V.DSV.USER_IDV.REFERRER_IDB.DSUUIDBUYS
2020-01-01bobfacebook2020-01-02uuid11
2020-01-07bobamazon2020-01-07uuid21
2020-01-07bobamazon2020-01-07uuid21
2020-01-07bobamazon2020-01-07uuid21

Этот рабочий процесс связывает две конверсии с правильными событиями посещения. Из-за объединения вы получаете несколько комбинаций, что приводит к результатам с разветвлением. После применения оконной функции появляются дубликаты.

Чтобы решить эту проблему и устранить дубликаты, используйте distinct select. UUID также помогает определить, какая конверсия уникальна. Следующие шаги предоставляют больше деталей о том, как это сделать.

Шаг 3: Удалите дубликаты

Вместо обычного select, используемого в Шаге 2, используйте distinct select, чтобы удалить дубликаты:

select distinct
first_value(v.ds) over (partition by b.ds, b.user_id, b.uuid order by v.ds desc) as v_ds,
first_value(v.user_id) over (partition by b.ds, b.user_id, b.uuid order by v.ds desc) as user_id,
first_value(v.referrer_id) over (partition by b.ds, b.user_id, b.uuid order by v.ds desc) as referrer_id,
b.ds,
b.uuid,
1 as buys
from visits v
inner join (
select *, uuid_string() as uuid from buys
) b
on
v.user_id = b.user_id and v.ds <= b.ds and v.ds > b.ds - interval '7 day';

Набор данных возвращает следующее:

V.DSV.USER_IDV.REFERRER_IDB.DSUUIDBUYS
2020-01-01bobfacebook2020-01-02uuid11
2020-01-07bobamazon2020-01-07uuid21

Теперь у вас есть набор данных, где каждая конверсия связана с событием посещения. Чтобы продолжить:

  1. Сложите общее количество конверсий в таблице "conversions".
  2. Объедините эту таблицу с таблицей "opportunities", сопоставив их на основе ключей группировки.
  3. Рассчитайте коэффициент конверсии.

Шаг 4: Агрегируйте и рассчитайте

Теперь, когда вы связали каждое событие конверсии с посещением, вы можете рассчитать агрегированные меры конверсий и возможностей. Затем вы можете объединить их, чтобы рассчитать фактический коэффициент конверсии. SQL для расчета коэффициента конверсии выглядит следующим образом:

select
coalesce(subq_3.metric_time__day, subq_13.metric_time__day) as metric_time__day,
cast(max(subq_13.buys) as double) / cast(nullif(max(subq_3.visits), 0) as double) as visit_to_buy_conversion_rate_7d
from ( -- базовая мера
select
metric_time__day,
sum(visits) as mqls
from (
select
date_trunc('day', first_contact_date) as metric_time__day,
1 as visits
from visits
) subq_2
group by
metric_time__day
) subq_3
full outer join ( -- мера конверсии
select
metric_time__day,
sum(buys) as sellers
from (
-- ...
-- Вывод этого подзапроса - таблица, полученная на Шаге 3. SQL скрыт для удобочитаемости.
-- Чтобы увидеть полный вывод SQL, добавьте --explain к вашему запросу метрики конверсии.
) subq_10
group by
metric_time__day
) subq_13
on
subq_3.metric_time__day = subq_13.metric_time__day
group by
metric_time__day

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

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

  • Значения конверсии null: Установите значения null конверсий в ноль, используя fill_nulls_with. Обратитесь к Заполнению значений null для метрик для получения дополнительной информации.
  • Тип расчета: Выберите между отображением сырых конверсий или коэффициента конверсии.
  • Постоянное свойство: Добавьте условия для конкретных сценариев, чтобы объединить конверсии по постоянным свойствам.

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

- name: visit_to_buy_conversion_rate_7_day_window
description: "Коэффициент конверсии от просмотра страницы до покупки"
type: conversion
label: Коэффициент конверсии от посещения до продавца (7-дневное окно)
type_params:
conversion_type_params:
calculation: conversions
base_measure:
name: visits
conversion_measure:
name: buys
fill_nulls_with: 0
entity: user
window: 7 days

Это вернет следующие результаты:

Метрика конверсии с параметром fill nulls withМетрика конверсии с параметром fill nulls with

Обратитесь к Заполнению значений null для метрик для получения дополнительной информации.

Связанные документы

0