Google bigquery 在BigQuery中的一个会话或多个会话中查找事件时出现问题

Google bigquery 在BigQuery中的一个会话或多个会话中查找事件时出现问题,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,我想得到第二双眼睛&一些帮助来确认在BigQuery中在会话中查看命中级别的最佳方式。我已经彻底阅读了BigQuery开发人员文档。假设我编写高级查询来计算存在的会话数,并按device.device类别对会话进行分组,如下所示: SELECT device.deviceCategory, COUNT(DISTINCT CONCAT (fullVisitorId, STRING (visitId)), 10000000) AS SESSIONS FROM (TABLE_DATE_RANGE([

我想得到第二双眼睛&一些帮助来确认在BigQuery中在会话中查看命中级别的最佳方式。我已经彻底阅读了BigQuery开发人员文档。假设我编写高级查询来计算存在的会话数,并按device.device类别对会话进行分组,如下所示:

SELECT device.deviceCategory, 
COUNT(DISTINCT CONCAT (fullVisitorId, STRING (visitId)), 10000000) AS SESSIONS
FROM (TABLE_DATE_RANGE([XXXXXX.ga_sessions_], TIMESTAMP('2015-01-01'), TIMESTAMP('2015-06-30')))
GROUP EACH BY device.deviceCategory
ORDER BY sessions DESC
然后,我运行如下的后续查询,以查找不同用户的数量(客户端ID):

(请注意,我之所以将其拆分,是因为我正在处理的数据规模太大,在某些情况下会产生大于5TB的运行)

我的挑战如下。我觉得我的方法是错误的,在内部功能方面没有取得成功。对于每个用户ID(或完整的访客ID),我想查看他们所有的会话,以了解他们拥有的会话中有多少是桌面会话,有多少是移动会话。基本上,这些是跨设备用户。我想收集这些用户的表。我从这里开始:

SELECT COUNT(DISTINCT CONCAT (fullVisitorId, STRING (visitId)), 10000000) AS SESSIONS
FROM (TABLE_DATE_RANGE([XXXXXX.ga_sessions_], TIMESTAMP('2015-01-01'), TIMESTAMP('2015-06-30')))
WHERE device.deviceCategory = 'desktop' AND device.deviceCategory = 'mobile'

但这是不正确的。此外,我编写的任何版本的内部查询都会给出无意义的结果或以0为数字的结果。有没有人有什么策略或技巧可以推荐一条前进的道路?使用Inside函数查找会话中可能发生多个事件的会话的最佳方法是什么(我的目标是收集满足会话内或各个会话中特定要求的用户ID)。两天前,我以一种非常手动的方式完成了这项工作,通过手动完成这些步骤并保存中间数据帧来生成计数。这就是说,我想看看是否有任何指南可以使用单个查询快速完成此操作?

我不确定您是否仍然存在这个问题,但我相信我看到了您的问题,这不是因为在函数中误用了
。这是一个数据理解问题

在处理GA和跨设备标识时,您不能可靠地使用
fullVisitorId
visitId
的任何组合来标识用户,因为它们是从GA放在用户浏览器上的cookie派生的。因此,利用
fullVisitorId
可以比特定用户更准确地识别特定设备上的特定浏览器

为了真正跨设备跟踪用户,您必须能够利用
userId
功能。这要求您以某种方式让用户登录,从而为他们提供一个标识符,您可以在他们的所有设备上使用该标识符,并将他们的行为联系在一起

在实现某种类型的用户标识(而不是GA的cookie分配)后,您可以使用该标识在会话之间以及在这些会话中查找详细信息


希望有帮助

我不确定这个问题是否仍然存在,但我相信我看到了你的问题,这不是因为在
函数中误用了
。这是一个数据理解问题

在处理GA和跨设备标识时,您不能可靠地使用
fullVisitorId
visitId
的任何组合来标识用户,因为它们是从GA放在用户浏览器上的cookie派生的。因此,利用
fullVisitorId
可以比特定用户更准确地识别特定设备上的特定浏览器

为了真正跨设备跟踪用户,您必须能够利用
userId
功能。这要求您以某种方式让用户登录,从而为他们提供一个标识符,您可以在他们的所有设备上使用该标识符,并将他们的行为联系在一起

在实现某种类型的用户标识(而不是GA的cookie分配)后,您可以使用该标识在会话之间以及在这些会话中查找详细信息

希望有帮助

SELECT COUNT(DISTINCT CONCAT (fullVisitorId, STRING (visitId)), 10000000) AS SESSIONS
FROM (TABLE_DATE_RANGE([XXXXXX.ga_sessions_], TIMESTAMP('2015-01-01'), TIMESTAMP('2015-06-30')))
WHERE device.deviceCategory = 'desktop' AND device.deviceCategory = 'mobile'