GA BigQuery:使用自定义维度计算浏览量
Posted
技术标签:
【中文标题】GA BigQuery:使用自定义维度计算浏览量【英文标题】:GA BigQuery: Calculating pageviews with a custom dimension 【发布时间】:2019-07-11 15:43:27 【问题描述】:使用 GA BigQuery 数据,我试图计算 3 个维度的总浏览量:日期、设备类别和自定义维度(此处称为“类型”)。
所以期望的输出是:
因此,应列出每个日期、设备和类型组合的总浏览量。
我使用以下查询来获得此结果。我需要取消嵌套“类型”维度,因为它是自定义维度。
#standardsql
SELECT date, device, cd6_type, SUM(pvs) AS pageviews
FROM(
SELECT
date,
fullvisitorID,
visitID,
totals.pageviews AS pvs,
device.deviceCategory AS device
, MAX(IF(hcd.index = 6, hcd.value, NULL)) AS cd6_type
FROM `ga360-173318.62903073.ga_sessions_*` AS t,
UNNEST (t.hits) AS h,
UNNEST (h.customDimensions) AS hcd
WHERE _table_suffix BETWEEN (SELECT FORMAT_DATE('%Y%m%d', '2019-07-08'))
AND (SELECT FORMAT_DATE('%Y%m%d', '2019-07-08'))
AND h.type = "PAGE"
GROUP BY
date,
fullVisitorID,
visitID,
totals.pageviews,
device
)
GROUP BY date, device, cd6_type
问题是我的结果与 GA 中出现的不匹配;查询返回的结果更少。在GA中,上述结果为:
180,812 次移动,A 类网页浏览量(与 GBQ 中的 149,149 次相比) 30,949 平板电脑,A 类网页浏览量(相比之下,GBQ 为 16,863)我不确定为什么它们在 2 个系统中不匹配,并且想知道其他人如何计算跨维度的总浏览量。
【问题讨论】:
【参考方案1】:您正在与customdimensions
交叉连接,因此您计算的不是页面,而是页面上的自定义维度。只是不要执行此交叉连接,如果您使用子查询获取自定义维度,则不需要它。
#standardsql
SELECT
date,
device.deviceCategory AS device
,(SELECT hcd.value FROM h.customdimensions AS hcd WHERE hcd.index = 6 ) AS cd6_type
,COUNT(1) as pageviews
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` AS t,
UNNEST(t.hits) AS h
WHERE _table_suffix between '20170801' and '20170801'
AND h.type = "PAGE"
GROUP BY date, device, cd6_type
【讨论】:
感谢您的回复!如果我尝试此查询,我会收到以下错误:“from 子句中引用的相关别名必须引用可从外部查询访问的有效数组,但 h 引用的数组在 GROUP BY 或[12:32] 的外部查询中的 DISTINCT。”第 12 行是建议的 customdimensions 子查询所在的位置。 没错 - 我错过了group by
...我猜你也是这样计算页数的。但是交叉连接消除了所有没有任何自定义维度的页面。更正了我的帖子
我刚刚意识到你在交叉加入点击后计算了 totals.pageviews。这并不理想,因为总计包含会话信息,如果您与命中交叉连接,每次命中都会重复这些信息。再次更正并缩短了查询:D
@MartinWeitzmann 非常感谢你,在我读到这篇文章之前,会话级别的 totals.pageviews 与命中级别的维度让我大吃一惊:-D以上是关于GA BigQuery:使用自定义维度计算浏览量的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 BigQuery 标准 SQL 提取特定 ID 的自定义维度
Google Data Studio:使用 Google BigQuery 数据连接器应用自定义维度作为过滤器