Анализ воронки GA в большом запросе - «правильный» счетчик сеансов - PullRequest
1 голос
/ 05 июля 2019

Спасибо, что заглянули!Я был бы признателен за (ре) создание окончательной воронки GA Session в Big Query.Основное внимание уделяется последовательности за сеанс с определенными, но не обязательно последовательно посещаемыми страницами в течение одного сеанса.

Desired result from query

Решение должно считать сеансы как COUNT( DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING))).

Кроме того, воронка должна иметь такую ​​форму, чтобы каждый шаг воронки мог быть достигнут только в том случае, если предыдущий шаг был завершен в течение сеанса (например, четвертый шаг должен учитываться только в том случае, если шаги 1–3 были посещеныво время сеанса).Однако шаги не нужно выполнять последовательно

Именно поэтому, к сожалению, этот пример , который мне очень нравится, не будет работать для меня.Возвращает цифры для посещений totals.visits.Кроме того, мне нужно использовать REGXP_CONTAINS для страниц, так как у меня нет событий (или пользовательских измерений) на моих страницах для шагов последовательности.Для исходного запроса (для каждого соответствующего шага)

SUM((SELECT 1 FROM UNNEST(hits) WHERE eventInfo.eventAction = 'landing_page' LIMIT 1)) Landing_Page

Я пытался:

COUNT( DISTINCT( SELECT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)) FROM UNNEST(GA.hits) WHERE REGEXP_CONTAINS(hits.page.pagePath, r”myfunnelpage”)

Однако, мои посещения пошаговой последовательности фактически больше, чем мои общие «сеансы» согласно COUNT( DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING))) AS overday_sessions.

Другой пример смотрит на пользовательские сессии (я невероятно впечатлен, также абсолютно запуган, поддерживает @Martin) Предположительно, есть веб-сайт , который должену меня все вышло из строя, когда я написал это # ​​StuffGettingLostOnline

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

SELECT
  date,       
  COUNT( DISTINCT( SELECT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)) FROM UNNEST(GA.hits) WHERE REGEXP_CONTAINS(hits.page.pagePath, r"productoverviewpage") LIMIT 1)) AS product_overview_s1,

  COUNT( DISTINCT( SELECT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING)) FROM UNNEST(GA.hits) WHERE EXISTS(SELECT 1 FROM UNNEST(GA.hitS) WHERE REGEXP_CONTAINS(hits.page.pagePath, r"productoverviewregex")) AND REGEXP_CONTAINS(hits.page.pagePath, cartoverviewregex") LIMIT 1)) AS cart_overview_s2

FROM 
 data as GA,
 UNNEST(GA.hits) AS hits
WHERE hits.type = "PAGE"
AND 
 TRUE IN UNNEST(
  [REGEXP_CONTAINS(hits.page.pagePath, r"productoverviewpage"),
  REGEXP_CONTAINS(hits.page.pagePath, r"cartoverviewregex""]
 )

Есть идеи?Кто-нибудь может воссоздать окончательную последовательность больших запросов, используя «правильное» количество сеансов?

1 Ответ

1 голос
/ 05 июля 2019

Вы можете использовать встроенные подзапросы для проверки отдельных шагов последовательности:

WITH
  sessions AS (
  SELECT
    (
    SELECT
      hits
    FROM
      UNNEST(hits) hits
    WHERE
      hits.page.pagePath = "/"
    ) first_step,
    (
    SELECT
      hits
    FROM
      UNNEST(hits) hits
    WHERE
      hits.page.pagePath = "/basket"
    ) second_step
  FROM
    `project.dataset.ga_sessions_*`)
SELECT
  COUNT(first_step) sessions_step_one,
  COUNTIF(first_step.hitNumber < second_step.hitNumber) sessions_step_two
FROM
  sessions
...