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

retention

Описание

Вычисляет коэффициент удержания пользователей в течение указанного периода времени. Эта функция принимает от 1 до 31 условия и оценивает, является ли каждое условие истинным. Если условие оценивается как истинное, возвращается 1. В противном случае возвращается 0. В итоге возвращается массив из 0 и 1. На основе этих данных можно рассчитать коэффициент удержания пользователей.

Синтаксис

ARRAY retention(ARRAY input)

Параметры

input: массив условий. Можно передать максимум 31 условие. Несколько условий разделяются запятыми.

Возвращаемое значение

Возвращает массив из 0 и 1. Количество 0 и 1 совпадает с количеством входных условий.

Оценка начинается с первого условия.

  • Если условие оценивается как истинное, возвращается 1. В противном случае возвращается 0.
  • Если первое условие не истинно, текущая позиция и все следующие позиции устанавливаются в 0.

Примеры

  1. Создайте таблицу с именем test и вставьте данные.

    CREATE TABLE test(
    id TINYINT,
    action STRING,
    time DATETIME
    )
    ENGINE=olap
    DUPLICATE KEY(id)
    DISTRIBUTED BY HASH(id);

    INSERT INTO test VALUES
    (1,'pv','2022-01-01 08:00:05'),
    (2,'pv','2022-01-01 10:20:08'),
    (1,'buy','2022-01-02 15:30:10'),
    (2,'pv','2022-01-02 17:30:05'),
    (3,'buy','2022-01-01 05:30:09'),
    (3,'buy','22022-01-02 08:10:15'),
    (4,'pv','2022-01-02 21:09:15'),
    (5,'pv','2022-01-01 22:10:53'),
    (5,'pv','2022-01-02 19:10:52'),
    (5,'buy','2022-01-02 20:00:50');
  2. Запросите данные из test.

    MySQL > select * from test order by id;
    +------+--------+---------------------+
    | id | action | time |
    +------+--------+---------------------+
    | 1 | pv | 2022-01-01 08:00:05 |
    | 1 | buy | 2022-01-02 15:30:10 |
    | 2 | pv | 2022-01-01 10:20:08 |
    | 2 | pv | 2022-01-02 17:30:05 |
    | 3 | buy | 2022-01-01 05:30:09 |
    | 3 | buy | 2022-01-02 08:10:15 |
    | 4 | pv | 2022-01-02 21:09:15 |
    | 5 | pv | 2022-01-01 22:10:53 |
    | 5 | pv | 2022-01-02 19:10:52 |
    | 5 | buy | 2022-01-02 20:00:50 |
    +------+--------+---------------------+
    10 rows in set (0.01 sec)
  3. Используйте retention для расчета коэффициента удержания пользователей.

    Пример 1: Оцените поведение пользователей по следующим условиям: просмотр страницы товара 2022-01-01 (action='pv') и размещение заказа 2022-01-02 (action='buy').

    MySQL > select id, retention([action='pv' and to_date(time)='2022-01-01',
    action='buy' and to_date(time)='2022-01-02']) as retention
    from test
    group by id
    order by id;

    +------+-----------+
    | id | retention |
    +------+-----------+
    | 1 | [1,1] |
    | 2 | [1,0] |
    | 3 | [0,0] |
    | 4 | [0,0] |
    | 5 | [1,1] |
    +------+-----------+
    5 rows in set (0.01 sec)

    В результате:

    • Пользователи 1 и 5 соответствуют двум условиям, и возвращается [1,1].

    • Пользователь 2 не соответствует второму условию, и возвращается [1,0].

    • Пользователь 3 соответствует второму условию, но не соответствует первому условию. Возвращается [0,0].

    • Пользователь 4 не соответствует ни одному условию, и возвращается [0,0].

    Пример 2: Рассчитайте процент пользователей, которые просмотрели страницу товара 2022-01-01 (action='pv') и разместили заказ 2022-01-02 (action='buy').

    MySQL > select sum(r[1]),sum(r[2])/sum(r[1])
    from (select id, retention([action='pv' and to_date(time)='2022-01-01',
    action='buy' and to_date(time)='2022-01-02']) as r
    from test
    group by id
    order by id) t;

    +-----------+---------------------------+
    | sum(r[1]) | (sum(r[2])) / (sum(r[1])) |
    +-----------+---------------------------+
    | 3 | 0.6666666666666666 |
    +-----------+---------------------------+
    1 row in set (0.02 sec)

    Возвращаемое значение — это коэффициент удержания пользователей на 2022-01-02.

keyword

retention, retention rate, RETENTION