如何通过 Bigquery 提高加载速度和跳出率

How to Pull Load Speed and Bounce Rate via Bigquery

我正在尝试使用 Google Analytics 数据通过 Bigquery 编写查询,以找出页面速度对我网站的影响。有很多研究都在讨论速度慢的网站对转化的影响,我希望 运行 进行类似类型的分析 (for example)。

目前我有以下查询,但看起来 hit.time 随着 totals.pageviews 增加。如果我没记错的话,这一定意味着 hits.time 被注册为网站上的总时间,而不一定是给定页面上的总时间。

SELECT
  ROUND(AVG(totals.pageviews),0) AS avg_page_views,
  CASE 
        WHEN hits.time <= 1000 THEN '0 Second'
        WHEN hits.time BETWEEN 1001 AND 2000 THEN '1 Second'
        WHEN hits.time BETWEEN 2001 AND 3000 THEN '2 Second'
        WHEN hits.time BETWEEN 3001 AND 4000 THEN '3 Second'
        WHEN hits.time BETWEEN 4001 AND 5000 THEN '4 Second'
        WHEN hits.time BETWEEN 5001 AND 6000 THEN '5 Second'
        WHEN hits.time BETWEEN 6001 AND 7000 THEN '6 Second'
        WHEN hits.time BETWEEN 7001 AND 8000 THEN '7 Second'
        WHEN hits.time BETWEEN 8001 AND 9000 THEN '8 Second'
        WHEN hits.time BETWEEN 9001 AND 10000 THEN '9 Second'
        WHEN hits.time BETWEEN 10001 AND 10000 THEN '10 Second'
        ELSE 'More than 10 Seconds'
   END hits.time
FROM
    [session.ga_sessions_20150501]
WHERE
        hits.page.pagePath != ''
        and totals.bounces IS NOT NULL
        AND hits.hitnumber >= 1
        AND hits.time > 0
        AND hits.type = 'PAGE'
        AND hits.page.pagePath LIKE '%/work/apps/business/%'  
GROUP BY 1,2
ORDER BY 1
LIMIT 2000
;

有没有想过如何更改此查询以提高每页的速度,以便可以用转化率或跳出率之类的东西来绘制图表?我知道这些数据存在于 Google Analytics 中,但是我无法通过 Bigquery API 或 Google Analytics 找到合适的维度来使用。

提前致谢!

你完全错了。

hits.time 表示其他含义:

注册此点击时 visitStartTime 之后的毫秒数。第一个命中的 hits.time 为 0。

因此测量自访问开始时间以来经过的时间,而不是加载时间。是发起时的请求时间,与DOM.

无关

AFAIK 没有指标可以给你 DOM 加载时间。

架构:

https://support.google.com/analytics/answer/3437719?hl=en&ref_topic=3416089&vid=1-635792326108722532-2868285191

现在可以了,我想它是在最初的问题之后添加的。

下面正确地将页面加载时间匹配回 GA 界面。

with speed_metrics as (
SELECT
date,
device.browser,
device.operatingSystem,
device.deviceCategory,
geoNetwork.country,
visitorId, 
fullVisitorId,
IF(totals.visits=1,CONCAT(fullVisitorId, CAST(visitId AS STRING)), null) AS 
session_id,
hits.hitNumber,
hits.latencyTracking.pageLoadSample, 
hits.latencyTracking.pageLoadTime,
hits.latencyTracking.pageDownloadTime,
hits.latencyTracking.redirectionTime,
hits.latencyTracking.speedMetricsSample,
hits.latencyTracking.domainLookupTime,
hits.latencyTracking.serverConnectiontime,
hits.latencyTracking.serverResponseTime,
hits.latencyTracking.domLatencyMetricsSample,
hits.latencyTracking.domInteractiveTime,
hits.latencyTracking.domContentLoadedTime
FROM `river-island-clothing-co-ltd.155484603.ga_sessions_20210308`
, unnest (hits) as hits 
)
select 
avg(pageLoadTime) / 1000 as avg_load_time ,
sum(pageLoadTime) / count(distinct (concat(session_id, cast(hitNumber as string)))) / 
1000 as also_avg_load_time
from speed_metrics
where pageLoadSample is not null
LIMIT 1000

需要注意的有用位是结果是从整体样本生成的 pageviews/sessions,请注意 where 子句。由于这是命中级别(在本例中为页面浏览量),记录数 = 页面浏览量,因此两个聚合生成相同的结果!