SQL для GA сессий (из BigQuery) со страницами, содержащими событие в течение определенного периода времени - PullRequest
0 голосов
/ 05 июля 2019

Попытка оптимизировать SQL-запрос для поиска сеансов GA, содержащих страницы, на которых в течение 15 дней происходит событие «преобразования». Если страница, например, "/ example / product", содержит событие GA "преобразование" 15 июня, то я хочу подсчитать все сеансы с 1 по 15 июня, которые достигли этой страницы, независимо от того, содержали ли эти сеансы событие преобразования .

Есть ли лучший способ, чем присоединиться, чтобы получить эти данные? Возможно с окном?

У меня есть рабочий запрос, но он выполняется все медленнее при запросе таблиц на более длительные промежутки времени и в конечном итоге дает сбой. Сначала я выбрал только сеансы со страницами, где произошла конверсия во всем временном интервале запроса, затем присоединился к тем же страницам с датой конверсии, а затем выбрал только те сеансы, где date_diff между датой конверсии и датой сеанса от 0 до 15.

SELECT
  date,
  COUNT (DISTINCT sessionId) AS sessions
FROM (
  SELECT
    date,
    CONCAT(CAST(visitId AS STRING),fullVisitorId) AS sessionId,
    hits.page.pagePath AS pagepath
  FROM
    `[dataset].ga_sessions_201906*` t,
    t.hits hits
  WHERE
    hits.page.pagePath IN (
    SELECT
      DISTINCT(hits.page.pagePath) AS pagepath
    FROM
      `[dataset].ga_sessions_201906*` t,
      t.hits hits
    WHERE
      REGEXP_CONTAINS( hits.eventInfo.eventAction, r'(?i)conversion'))
  GROUP BY
    date,
    visitId,
    fullVisitorId,
    pagepath)
INNER JOIN (
  SELECT
    DISTINCT(hits.page.pagePath) AS pagepath,
    date AS conversionDate
  FROM
    `[dataset].ga_sessions_201906*` t,
    t.hits hits
  WHERE
    REGEXP_CONTAINS( hits.eventInfo.eventAction, r'(?i)conversion')
  ORDER BY
    pagepath,
    conversionDate)
USING
  (pagepath)
WHERE
  DATE_DIFF(PARSE_DATE('%Y%m%d',
      conversionDate),PARSE_DATE('%Y%m%d',
      date), DAY) BETWEEN 0 AND 15
GROUP BY
  date
ORDER BY
  date

Он дает ожидаемые результаты в течение более коротких периодов времени, но при тестировании в течение более длительных периодов запрос не выполняется со следующим сообщением: «Служба в настоящее время недоступна».

...