Различные итоговые результаты в BigQuery - PullRequest
0 голосов
/ 16 января 2020

Я сейчас анализирую разные данные о пользователе приложения. К сожалению, я не могу поделиться нашими данными, но мне удалось перестроить проблему с помощью опубликованных данных * big5query *.

Сначала я подвел итог Пользователям (которых 199,681):

SELECT
  COUNT(DISTINCT visitId) as Users,
FROM `bigquery-public-data.google_analytics_sample.*`
WHERE date BETWEEN '20170501' AND '20170820'

Затем я хочу увидеть распределение по операционным системам:

SELECT
  COUNT(DISTINCT visitId) as Users,
  device.operatingSystem
FROM `bigquery-public-data.google_analytics_sample.*`
WHERE date BETWEEN '20170501' AND '20170820'
GROUP BY device.operatingSystem
ORDER BY Users DESC

И я получаю эти результаты (всего 202,008)

Users   operatingSystem
67846   Windows
47923   Macintosh
34645   Android
33130   iOS
9683    Linux
7395    Chrome OS
1066    (not set)
172     Windows Phone
87      Samsung
38      BlackBerry
10      Xbox
7       Nintendo WiiU
5       Firefox OS
1       FreeBSD

Если я выполняю эти вариации для разных категорий (например, для страны), я всегда получаю разные итоговые результаты. Есть ли способ решить эту проблему или код неправильный?

Заранее спасибо!

1 Ответ

1 голос
/ 16 января 2020

Немного переключая ваш запрос ...

SELECT
  visitId,
  count(distinct device.operatingSystem) as os_count
FROM `bigquery-public-data.google_analytics_sample.*`
WHERE date BETWEEN '20170501' AND '20170820'
GROUP BY 1
HAVING os_count > 1

, и вы можете видеть, что существуют некоторые идентификаторы посещений с несколькими операционными системами. В вашем первом запросе каждый визит ID считается один раз, а во втором запросе каждый визит ID будет учитываться один раз для каждой операционной системы.

В этом конкретном случае это может быть ошибка в исходных данных или преднамеренный выбор в том, как GA «сессионизирует» визит. Для вашего случая использования решите, что лучше всего представляет ваш бизнес, и go с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...