Google analytics SQL for GA会话(来自BigQuery),页面包含特定时间范围内的事件
尝试优化SQL查询以查找包含在15天内发生“转换”事件的页面的GA会话。如果页面(例如“/example/product”)在6月15日包含GA事件“conversion”,那么我想统计从6月1日到15日访问该页面的所有会话,无论这些会话是否包含转换事件 有没有比加入更好的方法来获取这些数据?也许是开窗 我有一个可以工作的查询,但当查询较长时间范围内的表时,它的运行速度越来越慢,最终会失败。我首先只选择了在整个查询时间范围内发生转换的页面的会话,然后加入到具有转换日期的相同页面,最后只选择转换日期和会话日期之间的日期差在0和15之间的会话Google analytics SQL for GA会话(来自BigQuery),页面包含特定时间范围内的事件,google-analytics,google-bigquery,Google Analytics,Google Bigquery,尝试优化SQL查询以查找包含在15天内发生“转换”事件的页面的GA会话。如果页面(例如“/example/product”)在6月15日包含GA事件“conversion”,那么我想统计从6月1日到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
它确实会在较短的时间段内产生预期的结果,但在较长的时间段内进行测试时,查询失败,并显示以下消息:“该服务当前不可用。”我建议删除内部子查询中的“ORDER BY”。当数据集变大时,这是一种不必要的计算,经常会导致资源错误。您所说的“在更长时间内进行测试”是什么意思?据我所知,您正在查询30天内的分区表(ga_sessions_201906*),其中获得的数据是在定义的月份内15天内发生的数据,例如。,如果事件发生在6月1日,则仅显示1天的“转换”事件,因此,您是否计划查询定义日期之外的数据?提前谢谢。我建议删除您内部子查询中的“ORDER BY”。当数据集变大时,这是一种不必要的计算,经常会导致资源错误。您所说的“在更长时间内进行测试”是什么意思?据我所知,您正在查询30天内的分区表(ga_sessions_201906*),其中获得的数据是在定义的月份内15天内发生的数据,例如。,如果事件发生在6月1日,则仅显示1天的“转换”事件,因此,您是否计划查询定义日期之外的数据?提前谢谢。