BigQuery中的总会话VS谷歌分析报告BigQuery中的总会话VS谷歌分析报告(Total S

2019-05-12 02:35发布

我刚学的BigQuery所以这可能是一个愚蠢的问题,但我们希望得到一些统计数据存在和其中之一是在某一天的总会话。

要做到这一点,我一直在质疑BQ:

select sum(sessions) as total_sessions from (
  select
    fullvisitorid,
    count(distinct visitid) as sessions,
    from (table_query([40663402], 'timestamp(right(table_id,8)) between timestamp("20150519") and timestamp("20150519")'))
    group each by fullvisitorid
)

(我使用的是table_query因为以后我们可能会增加天的范围内)

这导致了1,075,137

但在我们的谷歌分析报告中,“受众群体概览”一节中,当天的结果:

This report is based on 1,026,641 sessions (100% of sessions).

总是有,尽管这一天的大约〜5%这种差异。 所以,我想知道,即使查询是相当简单的,有我们所做的任何错误?

这是区别预期发生? 我通过大量查询的文档阅读,但无法找到在这个问题上任何东西。

提前致谢,

Answer 1:

standardsql

只要SUM(totals.visits)或使用时, COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING) ))确保totals.visits=1

如果您使用visitId ,你是不是每天分组,你将结合午夜分会议!

这里是所有的场景:

SELECT
  COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitStartTime AS STRING) )) allSessionsUniquePerDay,
  COUNT(DISTINCT CONCAT(fullVisitorId, CAST(visitId AS STRING) )) allSessionsUniquePerSelectedTimeframe,
  sum(totals.visits) interactiveSessionsUniquePerDay, -- equals GA UI sessions
  COUNT(DISTINCT IF(totals.visits=1, CONCAT(fullVisitorId, CAST(visitId AS STRING)), NULL) ) interactiveSessionsUniquePerSelectedTimeframe,
  SUM(IF(totals.visits=1,0,1)) nonInteractiveSessions
FROM
  `project.dataset.ga_sessions_2017102*`

包起来:

  • fullVisitorId + visitId :有用的重新午夜拆分
  • fullVisitorId + visitStartTime :有用采取拆分考虑
  • totals.visits=1用于交互会话
  • fullVisitorId + visitStartTime其中totals.visits=1 :GA UI会话(如果你需要一个会话ID)
  • SUM(totals.visits)简单GA UI会议
  • fullVisitorId + visitId其中totals.visits=1GROUP BY date :与错误和误解太多机会GA UI会议


Answer 2:

张贴的问题后,我们坐上了与谷歌的支持接触和发现,在谷歌Analytics(分析)只是有一个“事件”会话被解雇的实际计数。

BigQuery中,你会发现所有的会话,无论他们是否有一个互动与否。

为了找到相同的结果GA,你应该用会话过滤totals.visits = 1在BQ查询( totals.visits是1只为有一个事件被解雇会话)。

那是:

select sum(sessions) as total_sessions from (
  select
    fullvisitorid,
    count(distinct visitid) as sessions,
    from (table_query([40663402], 'timestamp(right(table_id,8)) between timestamp("20150519") and timestamp("20150519")'))
    where totals.visits = 1
    group each by fullvisitorid
)


Answer 3:

这个问题可能是由于“COUNT DISTINCT”。

根据这篇文章 :

COUNT DISTINCT是所有结果大于1000的统计逼近

你可以尝试设置附加的COUNT参数以改善性能为代价的精度(见文章),但我想先试试:

SELECT COUNT( CONCAT( fullvisitorid,'_', STRING(visitid))) as sessions 
from (table_query([40663402], 'timestamp(right(table_id,8)) between 
timestamp("20150519") and timestamp("20150519")'))


文章来源: Total Sessions in BigQuery vs Google Analytics Reports