应用电子商务操作过滤器时,Big Query 和 Google Analytics UI 不匹配
Posted
技术标签:
【中文标题】应用电子商务操作过滤器时,Big Query 和 Google Analytics UI 不匹配【英文标题】:Big Query and Google Analytics UI do not match when ecommerce action filter applied 【发布时间】:2018-01-26 00:01:43 【问题描述】:我们正在验证 Big Query 中的查询,但无法获得与谷歌分析 UI 匹配的结果。可以在here 找到类似的问题,但在我们的案例中,仅当我们对 ecommerce_action.action_type 应用特定过滤器时才会出现不匹配。
这里是查询:
SELECT COUNT(distinct fullVisitorId+cast(visitid as string)) AS sessions
FROM (
SELECT
device.browserVersion,
geoNetwork.networkLocation,
geoNetwork.networkDomain,
geoNetwork.city,
geoNetwork.country,
geoNetwork.continent,
geoNetwork.region,
device.browserSize,
visitNumber,
trafficSource.source,
trafficSource.medium,
fullvisitorId,
visitId,
device.screenResolution,
device.flashVersion,
device.operatingSystem,
device.browser,
totals.pageviews,
channelGrouping,
totals.transactionRevenue,
totals.timeOnSite,
totals.newVisits,
totals.visits,
date,
hits.eCommerceAction.action_type
FROM
(select *
from TABLE_DATE_RANGE([zzzzzzzzz.ga_sessions_],
<range>) ))t
WHERE
hits.eCommerceAction.action_type = '2' and <stuff to remove bots>
)
从使用内置购物行为报告的 UI 中,我们得到 3.836M 的带有产品详细信息视图的唯一会话,而使用上述查询的 Big Query 中的唯一会话为 3.684 万。
几个问题: 1) 我们的印象是购物行为报告“带有产品视图的会话”细分基于 ecommerce_action.actiontype 过滤器。真的吗? 2) 是否有 UI 可能从中提取的 .totals 预聚合表?
【问题讨论】:
请注意,COUNT(DISTINCT ...)
是使用旧版 SQL 时的近似值。请改用标准 SQL(首选)或将 EXACT_COUNT_DISTINCT
与旧版 SQL 一起使用。
是的,我们发现在#measure 中指出 EXACT_COUNT_DISTINCT 后,我们的误差在 0.3% 以内。感谢您的确认!
在检索您不会使用的列时也要小心,这会使您的查询更加昂贵。我建议遵循 Elliott 的建议,标准 SQL 比传统 SQL 更强大。
@ElliottBrossard:提升回答? ;-)
添加了一些链接作为答案(不过,我不确定是否还有其他原因造成了这种差异)。
【参考方案1】:
听起来问题是COUNT(DISTINCT ...)
是使用旧版 SQL 时的近似值,as noted in the migration guide,因此计数不准确。请改用 standard SQL(首选)或将 EXACT_COUNT_DISTINCT
用于旧版 SQL。
【讨论】:
【参考方案2】:您在查询中包含产品列表视图。
正如https://support.google.com/analytics/answer/3437719 中所述,您需要确保没有产品具有isImpression = TRUE
,因为这意味着它是一个产品列表视图。
此查询汇总了包含所有 isProduct 为 null 或 false 的 action_type='2' 的所有会话:
SELECT
SUM(totals.visits) AS sessions
FROM
`project.123456789.ga_sessions_20180101` AS t
WHERE
(
SELECT
LOGICAL_OR(h.ecommerceaction.action_type='2')
FROM
t.hits AS h
WHERE
(SELECT LOGICAL_AND(isimpression IS NULL OR isimpression = FALSE) FROM h.product))
对于 legacySQL,您可以修改文档中的示例。
【讨论】:
这个答案最接近界面。我相信这是因为总计列是 UI 实际访问的预先计算的指标。我不明白为什么这些值与手动求和不同,但这是一个不同的问题。谢谢!【参考方案3】:除了COUNT(DISTINCT ...)
是使用旧版 SQL 时的近似值这一事实之外,还可能存在只有非交互式点击的会话,这些会话在 Google Analytics(分析)用户界面中不会被计为会话,但它们会被计入COUNT(DISTINCT ...)
和 EXACT_COUNT_DISTINCT(...)
因为在您的查询中它们计算访问 ID。
使用SUM(totals.visits)
,您应该得到与 UI 中相同的结果,因为 SUM 不考虑 totals.visits 的 NULL 值(对应于只有非交互式点击的会话)。
【讨论】:
以上是关于应用电子商务操作过滤器时,Big Query 和 Google Analytics UI 不匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?