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.