Big Query - разное количество пользователей при использовании устаревшего и обычного sql

Я написал запрос в Google Big Query и хочу получить то же количество пользователей, что и в Google Analytics. Я использовал Legacy и Normal SQL и получил 3 разных номера пользователей, в то время как сессии были одинаковыми. Что я сделал не так, или у кого-нибудь есть объяснение / решение для этого? Любая помощь приветствуется!

Нормальный SQL

SELECT COUNT(DISTINCT fullVisitorId) AS users, SUM(IF(totals.visits IS 
NULL,0,totals.visits)) AS sessions
FROM `XXX.XXX.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20181120' AND '20181120'

Устаревший SQL

SELECT COUNT(DISTINCT fullVisitorId) AS users, SUM(IF(totals.visits IS 
NULL,0,totals.visits)) AS sessions
FROM TABLE_DATE_RANGE([XXX:XXX.ga_sessions_], TIMESTAMP('2018-11-20'), 
TIMESTAMP('2018-11-20'))

1 ответ

Решение

Я думаю, что это предупреждение из документации объясняет, что происходит:

В устаревшем SQL COUNT(DISTINCT x) возвращает приблизительное количество. В стандартном SQL он возвращает точное количество.

StandardSQL имеет правильный номер. Вы можете проверить это, пытаясь использовать EXACT_COUNT_DISTINCT() в устаревшем SQL.

Другие вопросы по тегам