Метрики конверсии
Метрики конверсии позволяют определить, когда происходит базовое событие и последующее событие конверсии для конкретной сущности в течение определенного временного диапазона.
Например, использование метрик конверсии позволяет отслеживать, как часто пользователь (сущность) завершает визит (базовое событие), а затем совершает покупку (событие конверсии) в течение 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
.
DS | USER_ID | REFERRER_ID |
---|---|---|
2020-01-01 | bob | |
2020-01-04 | bob | |
2020-01-07 | bob | amazon |
BUYS
Записывает завершенные заказы с USER_ID
и REFERRER_ID
.
DS | USER_ID | REFERRER_ID |
---|---|---|
2020-01-02 | bob | |
2020-01-07 | bob | amazon |
Далее определите метрику конверсии следующим образом:
- 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.DS | V.USER_ID | V.REFERRER_ID | B.DS | UUID | BUYS |
---|---|---|---|---|---|
2020-01-01 | bob | 2020-01-02 | uuid1 | 1 | |
2020-01-01 | bob | 2020-01-07 | uuid2 | 1 | |
2020-01-04 | bob | 2020-01-07 | uuid2 | 1 | |
2020-01-07 | bob | amazon | 2020-01-07 | uuid2 | 1 |
Шаг 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.DS | V.USER_ID | V.REFERRER_ID | B.DS | UUID | BUYS |
---|---|---|---|---|---|
2020-01-01 | bob | 2020-01-02 | uuid1 | 1 | |
2020-01-07 | bob | amazon | 2020-01-07 | uuid2 | 1 |
2020-01-07 | bob | amazon | 2020-01-07 | uuid2 | 1 |
2020-01-07 | bob | amazon | 2020-01-07 | uuid2 | 1 |
Этот рабочий процесс связывает две конверсии с правильными событиями посещения. Из-за объединения вы получаете несколько комбинаций, что приводит к результатам с разветвлением. После применения оконной функции появляются дубликаты.
Чтобы решить эту проблему и устранить дубликаты, используйте distinct select. UUID также помогает определить, какая конверсия уникальна. Следующие шаги предоставляют больше деталей о том, как это сделать.