Посещения до конверсий в BigQuery только по указанному URL-адресу c - PullRequest
0 голосов
/ 09 апреля 2020

Сидите с Google Analytics 360 стандартного экспорта в BigQuery и нужно подтолкнуть в правильном направлении. Я пытаюсь выяснить, сколько посещений посетил пользователь перед выполнением конверсии. Это доступно в GA напрямую, но я хочу рассчитывать только посещения по указанному c URL.

Результат должен выглядеть следующим образом:

Visits_before_conversions, Conversions 
1, 23
2, 58
3, 89
4, 20

Мои идеи на данный момент: выберите все сеансы, которые посетили указанный c URL, и у userID была конверсия. Сортируйте их по времени посещения, чтобы получить правильную последовательность посещений.

Но здесь все становится сложнее, потому что пользователь может продолжать посещать сайт после того, как произошла конверсия. Так что я не могу просто посчитать посещения. Путешествие может быть посещением, посещением, посещением, посещением с преобразованием, посещением, посещением с преобразованием и т. Д. c ... Таким образом, после того, как пользователь совершает преобразование, его счетчик посещений должен быть установлен в 0, и новое преобразование обозначается звездочкой.

Есть советы?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

При таком подходе я создаю новый массив, содержащий переходы от транзакции к транзакции. Но он содержит только посещения с определенной страницы или если у нее есть транзакция.

DECLARE myPath DEFAULT '/home';

WITH t AS (
  SELECT 
    fullvisitorid,
    ARRAY_AGG(
      STRUCT( /*data we need later: time, visits with page, transactions - all in one array */
        TIMESTAMP_SECONDS(visitstarttime) AS visitstarttime,
        (SELECT IF(COUNT(*)>0,1,0) FROM UNNEST(hits) WHERE page.pagePath = myPath) AS sawMyPath,
        IF(totals.transactions>0,1,0) AS hasTransactions
      ) ORDER BY visitstarttime ASC
    ) as visits
  FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170*`
  WHERE
    totals.transactions>0
    OR
    (SELECT COUNT(*)>0 FROM unnest(hits) WHERE page.pagePath = myPath)
  GROUP BY 1
)

SELECT 
  fullvisitorid, 
  ARRAY(SELECT AS STRUCT 
    *,
    /* Create a journey id by cumulating the order info backwards
     * use this id in GROUP BY later to count your visits  
     */
    SUM(hasTransactions) OVER (ORDER BY visitstarttime DESC) AS journeyId
  FROM UNNEST(visits) ORDER BY visitstarttime ASC) AS visitsWithId
FROM t
WHERE
  (select count(*)>0 FROM unnest(visits) where hasTransactions>0)
LIMIT 1000

Я не уверен, откуда вы хотите go, но вы должны быть в состоянии рассчитать все, что вам нужно из этого массива. (В запросе отображаются только посетители с любыми транзакциями в банкоматах).

Надеюсь, это даст вам правильный толчок :)

0 голосов
/ 09 апреля 2020

Я предположил, что вы хотите отфильтровать пользователей, которые посетили '/ home' хотя бы один раз. Для этого я рассчитал количество посещений пути «/ home» в столбце home_visits.

Мой второй фильтр - пользователи, у которых есть хотя бы одна транзакция. Имея часть запроса, я использовал SUM(totals.transactions) > 0 для фильтрации этих игроков.

Кроме того, я использовал пример данных Google Analytics на дату 20170801. Не забудьте изменить имя таблицы на ваше и включить все дни, которые вы хотите запросить.

SELECT 
  *, 
  (SELECT COUNT(*) FROM UNNEST(visits) as v WHERE v < first_transaction_time) visits_before_trx
FROM (
  SELECT 
    fullVisitorId, 
    ARRAY_AGG(visitStartTime order by visitStartTime) as visits, 
    count(*) as nr_visits,
    SUM((SELECT COUNT(*) FROM UNNEST(hits) WHERE page.pagePath = '/home')) as home_visits,
    MIN(CASE WHEN totals.transactions > 0 THEN visitStartTime END ) as first_transaction_time
  FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`
  group by 1
  having SUM(totals.transactions) > 0
    AND home_visits > 0
) t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...