Общее количество сеансов в отчетах BigQuery vs Google Analytics
Я просто изучаю 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
.
но в наших отчетах Google Analytics, в разделе "Обзор аудитории", в тот же день результаты:
This report is based on 1,026,641 sessions (100% of sessions).
всегда эта разница примерно ~5%, несмотря на день. Поэтому мне интересно, хотя запрос довольно прост, есть ли какая-либо ошибка, которую мы сделали?
ожидается ли эта разница? Я прочитал документацию BigQuery, но не смог найти ничего по этому вопросу.
заранее спасибо,
3 ответов
просто 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*`
Wrap up:
-
fullVisitorId
+visitId
: полезно для повторного подключения midnight-splits -
fullVisitorId
+visitStartTime
: полезно принимать расколы в счет -
totals.visits=1
для сеансов взаимодействия -
fullVisitorId
+visitStartTime
здесьtotals.visits=1
: сеансы пользовательского интерфейса GA (в случае, если вам нужен идентификатор сеанса) -
SUM(totals.visits)
: простые сеансы пользовательского интерфейса GA -
fullVisitorId
+visitId
здесьtotals.visits=1
иGROUP BY date
: сеансы GA UI с слишком большим количеством шансов на ошибки и недоразумения
после публикации вопроса мы связались с поддержкой Google и обнаружили, что в Google 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
)
проблема может быть связана с"COUNT DISTINCT".
по данным этот пост:
COUNT DISTINCT является статистическим приближением для всех результатов, превышающих 1000
вы можете попробовать установить дополнительный параметр COUNT для повышения точности за счет производительности (см. post), но я бы сначала попробовал:
SELECT COUNT( CONCAT( fullvisitorid,'_', STRING(visitid))) as sessions
from (table_query([40663402], 'timestamp(right(table_id,8)) between
timestamp("20150519") and timestamp("20150519")'))