Как зависит доход от количества JS-ошибок?

В результате выполнения запроса получаем доход, количество заказов и среднюю долю JS-ошибок на 1 хит по группам пользователей. Расчеты производятся следующим образом: для каждого пользователя за анализируемый период был рассчитан показатель "Доля JS-ошибок на один хит", как сумма JS ошибок / суммарное количество хитов. 


Далее все пользователи были поделены на 10 групп в зависимости от показателя "Доля JS - ошибок на один хит". В группу 1 - вошли пользователи с наименьшим значением показателя "Доля JS - ошибок на один хит" (т.е. у этих пользователей частота появления JS - ошибок минимальна). В 10 - ю группу соответственно вошли пользователи, которые чаще всего встречаются с JS - ошибками (не зависимо от их активности на сайте). Стоит отметить, что кол-во пользователей во всех группах одинаковое. 

Далее для каждой из групп рассчитывается доход и количество заказов. Как правило, чем чаще пользователь встречается с JS - ошибками на сайте, тем ниже доход он приносит. 

 
Важно! В расчетах принимали участие только те пользователя, которые хотя бы раз за анализируемый период сталкивались с JS-ошибкой. 

Динамические параметры
  • startDate - дата начала анализируемого периода
  • endDate - дата окончания анализируемого периода
  • dataSetName - название dataset с данными сессионного Streaming
  • tableName - название таблицы с данными сессионного Streaming
  • numberOfGroups - количество групп на которые будут делиться пользователи
  • eventCategoryName - категория событий с JS-ошибками
 
Пример визуализации результатов расчетов
 
 
SQL-запрос
 
SELECT
  JSErrorGroup,
  SUM(TotalTransactions) AS TotalTransactions,
  SUM(TotalRevenue) AS TotalRevenue,
  AVG(ErrorsPerHit) AS avgErrorsPerHit
FROM (
    -- считаем количество JS-ошибок на 1 хит для каждого пользователя и делим всех пользователей по этому признаку на n групп
  SELECT
    t3.clientId AS ClientId,
    JSErrorsQTY,
    TotalTransactions,
    TotalRevenue,
    TotalHits,
    JSErrorsQTY/TotalHits AS ErrorsPerHit,
    NTILE({numberOfGroups default="10" type="select" values="5,10,15,20"}) OVER (ORDER BY ErrorsPerHit ASC) AS JSErrorGroup
  FROM (
      --t3 - объединяем t1 и t2
    SELECT
      t1.clientId AS ClientId,
      JSErrorsQTY,
      TotalTransactions,
      TotalRevenue
    FROM (
        --t1 - считаем кол-во JS-ошибок на каждого пользователя
      SELECT
        clientId,
        COUNT(type) AS JSErrorsQTY
      FROM (TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="streaming_" type="input"}, TIMESTAMP('{startDate default="2015-11-14" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-27" type="datetime"}')))
      WHERE
        eventInfo.eventCategory = '{eventCategoryName default="JS Errors" type="input"}'
      GROUP BY
        clientId) AS t1
    LEFT JOIN EACH (
        --t2 - считаем кол-во заказов и доход каждого пользователя
      SELECT
        clientId,
        COUNT(transaction.transactionId) AS TotalTransactions,
        SUM(transaction.transactionRevenue) AS TotalRevenue
      FROM (
        SELECT
          clientId,
          transaction.transactionId,
          transaction.transactionRevenue
        FROM (TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="streaming_" type="input"}, TIMESTAMP('{startDate default="2015-11-14" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-27" type="datetime"}')))
        WHERE
          eCommerceAction.action_type = 'purchase'
        GROUP BY
          clientId,
          transaction.transactionId,
          transaction.transactionRevenue)
      GROUP BY
        clientId) AS t2
    ON
      (t1.clientId = t2.clientId)) AS t3
  JOIN EACH (
      --t4 - считаем кол-во хитов на каждого пользователя
    SELECT
      clientId,
      COUNT(type) AS TotalHits
    FROM (TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="streaming_" type="input"}, TIMESTAMP('{startDate default="2015-11-14" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-27" type="datetime"}')))
    GROUP BY
      clientId) AS t4
  ON
    (t3.clientId = t4.clientId))
GROUP BY
  JSErrorGroup
ORDER BY
  JSErrorGroup
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

0 Комментарии

Войдите в службу, чтобы оставить комментарий.