会话计数之间的差异

Posted

技术标签:

【中文标题】会话计数之间的差异【英文标题】:Discrepancies between Session count 【发布时间】:2019-03-18 15:33:55 【问题描述】:

我是 Google Analytics/Big Query 领域的新手。我正在尝试了解如何在 Big Query 中计算会话数,但我无法理解我得到的数据。

据我了解,

    BQ 中的每一行 = 一个会话 BQ 中的会话标识符 = visitId + fullvisitorId 存在 Google Analytics 会话低于 Big Query 会话的情况,因为 GA 会自动过滤掉没有交互事件的会话

问题是,当我以这种理解运行查询时,会发生这种情况:

GA 中的会话 = 7.763.228 个会话 BQ 中具有不同 visitId + fullvisitorId = 7.750.579 的会话(低于 GA,这表明 #3 理解并非如此) BQ 中的会话总和总计.visits = 7.763.228(与 GA 相同) 行数 = 7.763.592(因为包括 364 个访问次数 = NaN 的会话)

我想知道,我最信任哪些数据,以及每个会话的真正唯一标识符是什么(因为数字不相等)。

另外,我注意到 visitId + fullvisitorId 没有给我会话的唯一标识符,因为我在数据中有 13.013 visitId + fullvisitorId 重复。有人有什么想法或解释吗?

提前致谢。

【问题讨论】:

从广义上讲,BigQuery 应该比 GA 更准确,因为它永远不会被抽样。对我来说,COUNT(DISTINCT CONCAT(CAST(fullVisitorId AS STRING),CAST(visitId AS STRING))) 匹配 GA 中的会话。请注意,totals.visits 将匹配 GA,因为它排除了非交互会话。 【参考方案1】:

在 Google Analytics(分析)中,会话在每天午夜中断,因此您没有交叉会话。在这些情况下,visitId 字段(它只是指示用户会话何时开始的时间戳)仍然具有与第一个会话相同的值。因此,如果超过午夜限制,您可以使用相同的 fullVisitorId + visitId 组合进行两个会话。

如果您需要与 Google Analytics(分析)中的数据匹配的唯一标识符,则应使用 visitStartTime + fullVisitorId。 visitStartTime 与 visitId 的工作方式相同,但如果会话在午夜中断,则会再次设置它。正如您已经指出的,您还需要过滤 totals.visits 不同于 1 的行。

很遗憾,我不知道有任何官方资源表明这种区别,但社区讨论和测试都证实了这一点。

【讨论】:

以上是关于会话计数之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

SQL中的连接,实例和会话之间的差异

会话持续时间 - 谷歌分析和 Firebase 报告之间的巨大差异

会话与会话工厂之间的差异 - 休眠?

每个着陆内容分组的会话中 Bigquery 和 GA 之间的差异

Laravel 会话与原生 PHP 会话性能差异

SQL 获取时间戳差异大于 30 时的 id 计数