Big Query - 使用旧版和普通 sql 时的用户数量不同

Posted

技术标签:

【中文标题】Big Query - 使用旧版和普通 sql 时的用户数量不同【英文标题】:Big Query - different number of users when using legacy and normal sql 【发布时间】:2018-12-03 12:13:58 【问题描述】:

我在 Google Big Query 中编写了一个查询,并希望获得与我在 Google Analytics(分析)中看到的相同数量的用户。我使用 Legacy 和 Normal SQL,在会话相同的情况下获得了 3 个不同的用户编号。我做错了什么,或者有人对此有解释/解决方案吗?感谢您的每一次帮助!

普通 SQL

SELECT COUNT(DISTINCT fullVisitorId) AS users, SUM(IF(totals.visits IS 
NULL,0,totals.visits)) AS sessions
FROM `XXX.XXX.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20181120' AND '20181120'

旧版 SQL

SELECT COUNT(DISTINCT fullVisitorId) AS users, SUM(IF(totals.visits IS 
NULL,0,totals.visits)) AS sessions
FROM TABLE_DATE_RANGE([XXX:XXX.ga_sessions_], TIMESTAMP('2018-11-20'), 
TIMESTAMP('2018-11-20'))

【问题讨论】:

【参考方案1】:

我认为来自documentation 的警告解释了正在发生的事情:

在旧版 SQL 中,COUNT(DISTINCT x) 返回一个近似计数。在标准 SQL 中,它返回一个精确的计数。

StandardSQL 的编号正确。您可以尝试在旧版 SQL 中使用 EXACT_COUNT_DISTINCT() 来测试这一点。

【讨论】:

谢谢戈登。现在数字相同,但 Google Analytics 和 Big Query 之间仍然存在差异。有什么想法吗? @PierreWunderlich 你有多少钱,这个是用户,访问量还是两者兼而有之?您是否检查过 Google Analytics 没有对您的数据进行抽样? support.google.com/analytics/answer/2637192?hl=en 数据未采样,差异不大,但有一个。 GA 和 Big Query 中的会话是相同的。

以上是关于Big Query - 使用旧版和普通 sql 时的用户数量不同的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Big Query 中正确使用 GROUP BY 命令?

Big Query 或 SQL 重塑数据

Big Query (SQL) 将多列转换为行/数组

SQL Big Query 完全连接表以使用相同的过滤器

BIG QUERY SQL:使用移动参考标记滑动时间窗口上的日期

基于会话的 Google Big Query SQL 聚合数据