计数时,Google BigQuery的clientid和fullvisitorid并不完全相同。有人知道为什么吗?

时间:2018-07-17 00:58:38

标签: sql google-bigquery

我们认为clientid和fullvisitorid是一对一对应的。但是,下面的查询显示其他情况。

select count(*) ct_byfullvisitorid --121409
from
( Select  distinct fullvisitorid
  FROM `project.datasouce.ga_sessions_20180705`
) 

select count(*) ct_byclientid --121397
from
( Select  distinct clientid 
  FROM `project.datasouce.ga_sessions_20180705`
)

我们期望两个查询返回完全相同的值,但事实并非如此。因此,我们认为我们可以使用以下查询来列出引起差异的客户端ID

select * 
from
(
Select  clientid, fullvisitorid
  FROM `project.datasouce.ga_sessions_20180705`
) as a
where exists
(
Select  *
  FROM `project.datasouce.ga_sessions_20180705` s2
  where a.clientid = s2.clientid and a.fullvisitorid != s2.fullvisitorid
)

我们又错了-该SQL语句返回零记录。

有人遇到同样的问题吗?谁能解释情况?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

select fullvisitorid, count(distinct clientid) as numclients
from project.datasouce.ga_sessions_20180705
group by fullvisitorid
having count(distinct clientid) <> 1;

select clientid, count(distinct fullvisitorid) as numvisitors
from project.datasouce.ga_sessions_20180705
group by clientid
having count(distinct fullvisitorid) <> 1;

答案 1 :(得分:0)

事实证明clientID可以为null。这是完全没想到的。感谢Gordon提供的SQL。