GA BigQuery Export - COUNT (DISTINCT (fullVisitorId)) с перерасчетом источника / среды - PullRequest
0 голосов
/ 29 апреля 2019

У меня проблема с подсчетом уникальных пользователей в нашем экспорте GA BigQuery.Я воспроизвел ту же ошибку, используя примеры данных.

SELECT sum(users) as users, sum(sessions) as sessions FROM (
  SELECT
    h.page.pagePath as page_path,
    trafficSource.source,
    trafficSource.medium,
    COUNT(DISTINCT(fullVisitorId)) AS users,
    COUNT(*) as sessions
  FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_20170101`, UNNEST(hits) h
  WHERE h.page.pagePath = "/home"
  GROUP BY page_path, source, medium
)
UNION ALL
SELECT sum(users) as users, sum(sessions) as sessions FROM (
  SELECT
    h.page.pagePath as page_path,
    COUNT(DISTINCT(fullVisitorId)) AS users,
    COUNT(*) as sessions
  FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_20170101`, UNNEST(hits) h
  WHERE h.page.pagePath = "/home"
  GROUP BY page_path
)

Когда я включаю столбцы source и medium, различное число fullVisitorId на 10 выше, чем без них.Как включение этих столбцов приводит к увеличению числа fullVisitorId с?Это не имеет смысла для меня.

Что вызывает это и как я могу получить точный счет?

1 Ответ

1 голос
/ 01 мая 2019

Как включение этих столбцов приводит к увеличению числа fullVisitorIds?Это не имеет смысла для меня.

Вы можете понять, почему, если вы выполняете свой внутренний запрос следующим образом:

SELECT
    MAX(fullVisitorId) AS fullVisitorId,
    h.page.pagePath as page_path,
    trafficSource.source,
    trafficSource.medium,
    COUNT(DISTINCT(TRIM(fullVisitorId))) AS users,
    COUNT(*) as sessions
  FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_20170101`, UNNEST(hits) h
  WHERE h.page.pagePath = "/home"
  and fullVisitorId = '9902321252073939460'
  GROUP BY page_path, source, medium

, который возвращает эти результаты:

enter image description here

Как вы можете видеть, поскольку пользователь приходит из 2 разных источников / средних , вы учитываете одного и того же пользователя дважды, что вызывает увеличение.

Одним из вариантов решения этой проблемы является использование агрегатной функции на источнике / носителе и удаление их из GROUP BY следующим образом:


    SELECT sum(users) as users, sum(sessions) as sessions FROM (
      SELECT
        h.page.pagePath as page_path,
        <b>MAX(trafficSource.source) as source,
        MAX(trafficSource.medium) as medium,</b>
        COUNT(DISTINCT(TRIM(fullVisitorId))) AS users,
        COUNT(*) as sessions
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_20170101`, UNNEST(hits) h
      WHERE h.page.pagePath = "/home"
      GROUP BY page_path
    )
    UNION ALL
    SELECT sum(users) as users, sum(sessions) as sessions FROM (
      SELECT
        h.page.pagePath as page_path,
        COUNT(DISTINCT(TRIM(fullVisitorId))) AS users,
        COUNT(*) as sessions
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_20170101`, UNNEST(hits) h
      WHERE h.page.pagePath = "/home"
      GROUP BY page_path
    )

Теперь количество пользователей одинаково:

enter image description here

...