Как узнать долю сессий, в которых был куплен товар с посадочной страницы?

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

 
Динамические параметры
  • startDate - дата начала анализируемого периода
  • endDate - дата окончания анализируемого периода
  • dataSetName - название dataset с данными сессионного Streaming
  • tableName - название таблицы с данными сессионного Streaming
  • categoriesNumber - количество ТОP-категорий, которые будут проанализированы
 
Пример визуализации результатов расчетов
 
 
SQL-запрос


SELECT
  landingProductCategory,
  shareOfSessions FROM
  --считаем долю сессий, где пользователь приземлился на карточку товара затем оформил заказ в составе которого был товар с посадочной страницы
  (
  SELECT
    all.landingProductCategory AS landingProductCategory,
    same.totalSessions,
    all.totalSessions,
    ROUND(same.totalSessions/all.totalSessions, 2) AS shareOfSessions FROM
    --all выбираем все сессии, где пользователь приземлился на карточку товара и что-то купил. Запоминаем категорию товара и количество сессий в разрезе категорий
    (
    SELECT
      landingProductCategory,
      COUNT(*) AS totalSessions FROM
      --t1 выбираем все сессии, где первым действием есть просмотр информации о товаре. Запоминаем категорию и sku товара
      (
      SELECT
        sessionId,
        hits.product.productSku AS sku,
        hits.product.productCategory AS landingProductCategory
      FROM
        FLATTEN ( (
          SELECT
            sessionId,
            hits.product.productCategory,
            hits.eCommerceActionType,
            hits.isEntrance,
            hits.product.productSku
          FROM
            TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="session_streaming_" type="input"}, TIMESTAMP('{startDate default="2016-01-11" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-11" type="datetime"}'))), hits.product)
      WHERE
        hits.isEntrance = 1
        AND hits.eCommerceActionType = 'detail'
        AND NOT hits.product.productCategory IN ('(not set)',
          '')
      GROUP BY
        sessionId,
        sku,
        landingProductCategory) t1
    JOIN EACH
      --t2 выбираем все сессии с заказом. Запоминаем sku товара
      (
      SELECT
        sessionId,
        hits.product.productSku AS sku
      FROM
        FLATTEN ( (
          SELECT
            sessionId,
            hits.eCommerceActionType,
            hits.product.productSku
          FROM
            TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="session_streaming_" type="input"}, TIMESTAMP('{startDate default="2016-01-11" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-11" type="datetime"}'))), hits.product)
      WHERE
        hits.eCommerceActionType = 'purchase'
      GROUP BY
        sessionId,
        sku) t2
    ON
      t1.sessionId = t2.sessionId
    GROUP BY
      landingProductCategory
    ORDER BY
      totalSessions DESC --сортируем по убыванию в зависимости от количества сессий
    LIMIT
      {categoriesNumber default='15' values='5,10,15,20,25,30' type='select'} --оставляем TOP категорий
      ) AS all
  LEFT JOIN EACH
    --same выбираем все сессии, где пользователь приземлился на карточку товара и купил товар с посадочной страницы. Запоминаем категорию товара и количество сессий в разрезе категорий
    (
    SELECT
      landingProductCategory,
      COUNT(*) AS totalSessions FROM
      --t1 выбираем все сессии, где первым действием есть просмотр информации о товаре. Запоминаем категорию и sku товара
      (
      SELECT
        sessionId,
        hits.product.productSku AS sku,
        hits.product.productCategory AS landingProductCategory
      FROM
        FLATTEN ( (
          SELECT
            sessionId,
            hits.product.productCategory,
            hits.eCommerceActionType,
            hits.isEntrance,
            hits.product.productSku
          FROM
            TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="session_streaming_" type="input"}, TIMESTAMP('{startDate default="2016-01-11" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-11" type="datetime"}'))), hits.product)
      WHERE
        hits.isEntrance = 1
        AND hits.eCommerceActionType = 'detail'
        AND NOT hits.product.productCategory IN ('(not set)', '')
      GROUP BY
        sessionId,
        sku,
        landingProductCategory) t1
    JOIN EACH
      --t2 выбираем все сессии с заказом. Запоминаем sku товара
      (
      SELECT
        sessionId,
        hits.product.productSku AS sku
      FROM
        FLATTEN ( (
          SELECT
            sessionId,
            hits.eCommerceActionType,
            hits.product.productSku
          FROM
            TABLE_DATE_RANGE({dataSetName default="OWOXBI_Streaming" type="input"}.{tableName default="session_streaming_" type="input"}, TIMESTAMP('{startDate default="2016-01-11" type="datetime"}'), TIMESTAMP('{endDate default="2016-01-11" type="datetime"}'))), hits.product)
      WHERE
        hits.eCommerceActionType = 'purchase'
      GROUP BY
        sessionId,
        sku) t2
    ON
      t1.sessionId = t2.sessionId
    WHERE
      t1.sku = t2.sku
    GROUP BY
      landingProductCategory) AS same
  ON
    (same.landingProductCategory = all.landingProductCategory)
  ORDER BY
    all.totalSessions DESC)
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 1 из 1
Еще есть вопросы? Отправить запрос

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

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