Sql 为什么Google Analytics和BigQuery在独特事件上存在如此大的差异?

Sql 为什么Google Analytics和BigQuery在独特事件上存在如此大的差异?,sql,google-bigquery,Sql,Google Bigquery,我试图在BigQuery中获得唯一事件的数量,尽管我做了很多努力,结果甚至与我在GA中看到的不太接近。某些行在BQ和GA之间有高达50%的差异,我不知道为什么。总事件数和用户数与GA中完全相同,只有唯一的事件不匹配 我使用CONCAT函数来构建sessionID,当用于计算给定时间段的总会话时,它返回的数字与我在GA中看到的非常接近。但是,当我将它与事件类别列一起使用时,这些数字就消失了 这是我的疑问: SELECT h.eventInfo.eventCategory, count(h.eve

我试图在BigQuery中获得唯一事件的数量,尽管我做了很多努力,结果甚至与我在GA中看到的不太接近。某些行在BQ和GA之间有高达50%的差异,我不知道为什么。总事件数和用户数与GA中完全相同,只有唯一的事件不匹配

我使用CONCAT函数来构建sessionID,当用于计算给定时间段的总会话时,它返回的数字与我在GA中看到的非常接近。但是,当我将它与事件类别列一起使用时,这些数字就消失了

这是我的疑问:

SELECT h.eventInfo.eventCategory, 
count(h.eventInfo.eventCategory) as total_events, 
count(distinct CONCAT(fullVisitorId, CAST(visitId AS STRING))) as unique_events 
FROM `marketing-stack.12345678.ga_sessions_20190525` as ga,
UNNEST(ga.hits) as h 
GROUP BY h.eventInfo.eventCategory
例如,GA中的顶级事件如下所示:

  • 4276个总事件-3155个唯一事件-1510个用户
在BigQuery中:

  • 4276个总事件-1566个唯一事件-1510个用户
我在查询中是否做错了什么,或者GA和BQ之间在唯一事件方面是否存在差异,以及如何计算我不理解的事件


我很感激任何帮助或意见,因为我在这里不知所措

一种可能性是
CONCAT()
中的碰撞。您可以尝试使用分隔符:

 count(distinct CONCAT(fullVisitorId, ':', CAST(visitId AS STRING))) as unique_events 
这只是一种可能性

另一种可能性是一个或另一个值为
NULL
<代码>合并()可以帮助:

 count(distinct CONCAT(COALESCE(fullVisitorId, ''), ':', COALESCE(CAST(visitId AS STRING), ''))) as unique_events 

您正在统计具有事件而非唯一事件的用户

当您对操作和标签进行计数(不同)时,它们不能为
NULL

SUM( (SELECT
 COUNT(DISTINCT CONCAT(h.eventInfo.eventCategory,
    coalesce(h.eventinfo.eventaction,  ''),
    coalesce(h.eventinfo.eventlabel, '')
 )) FROM t.hits h ) ) uniqueEvents

另请参见

不幸的是,即使使用分隔符,结果仍保持不变。非常感谢。我以前读过另一篇关于你答案的帖子,但没有注意到事件的行动和标签有多么重要。现在可以了!