用于GA会话的SQL(来自BigQuery),其中页面包含在特定时间范围内的事件

时间:2019-07-05 09:02:00

标签: google-analytics google-bigquery

尝试优化SQL查询以查找包含在15天内发生“转化”事件的网页的GA会话。如果页面(例如“ / example / product”)在6月15日包含GA事件“ conversion”,那么我想计算6月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

它确实在较短的时间内产生了预期的结果,但是在较长的测试时间内,查询失败并显示以下消息:“该服务当前不可用。”

0 个答案:

没有答案