sql - Big Query - 使用旧版和普通 sql 时的用户数量不同
问题描述
我在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'))
解决方案
我认为文档中的这个警告解释了正在发生的事情:
在旧版 SQL 中,COUNT(DISTINCT x) 返回一个近似计数。在标准 SQL 中,它返回一个准确的计数。
StandardSQL 的编号正确。您可以通过尝试EXACT_COUNT_DISTINCT()
在旧版 SQL 中使用来测试这一点。
推荐阅读
- vhdl - std_logic 和 std_logic_vector 之间的区别(0 到 0)
- android-layout - 我所有的 xml 在设计中都是空的
- jenkins - 詹金斯奴隶路径不起作用
- scala - Scala:列表中字符的频率
- javascript - 在javascript中添加带有输入标签的表格行的按钮
- javascript - 在超链接单击时动态添加选择框
- matlab - Matlab API 币安
- javascript - 谷歌图表中的多行具有不同数量的数据集
- java - 如何在 Java 中发送、接收和打印文件?
- javascript - 反应原生。从服务器渲染图像会降低应用程序的速度