Блог / Статьи

5 причин строить отчеты в Google BigQuery

 
5

Google Analytics стала самой популярной аналитической системой для веб-сайтов благодаря легкой установке и множеству готовых стандартных отчетов. Ее вполне хватает для базового анализа основных KPI. Однако, если вы уже пробовали провести более глубокий анализ сайта, то могли заметить, что в некоторых случаях возможностей Google Analytics недостаточно. Это может быть связано с внутренними ограничениями системы, областью действия параметров и показателей, семплированием и агрегированием данных в отчетах.

В этой статье вы узнаете, с какими проблемами можно столкнуться при построении отчетов в Google Analytics и как решить их с помощью облачной базы данных Google BigQuery.

1. Ограничение на количество параметров и показателей в отчетах

Первая проблема, которую вы можете встретить при работе с Google Analytics — это ограничения на количество переменных в отчетах. Например, перед вами стоит задача — провести когортный анализ, чтобы оценить рекламные каналы и оптимизировать расходы на привлечение пользователей. Или нужно определить, как менялся LTV Доход, который компания получает от одного клиента за все время сотрудничества с ним для каждой когорты в течение отчетного периода, и увеличить этот показатель, взаимодействуя с пользователями в каждой когорте отдельно. Для этого нужно собрать в одной системе всю необходимую информацию о каждом хите, сессии, пользователе. Плюс данные о доходах и рекламных расходах.

Обработать эти данные можно непосредственно в интерфейсе Google Analytics или выгрузить их в сторонний сервис с помощью API (например, Core V3). Если вы выберете любой из этих вариантов, то столкнетесь с ограничениями на количество параметров и показателей в отчетах. Подробнее о том, что такое параметры и показатели, читайте в нашей статье.

В интерфейсе Google Analytics один отчет может содержать максимум 5 параметров. На скриншоте ниже пример специального отчета (custom report):

С помощью Core V3 для одного отчета можно выгрузить немного больше — 7 параметров:

Что касается показателей, то в Core V3 вы можете выбрать не более 10 показателей. Кроме того, при выгрузке по API показатель является обязательным параметром запроса, то есть вы не сможете построить отчет без хотя бы одного показателя. Например, вы хотите создать базу активных за последний месяц пользователей для email-рассылки. Чтобы получить отчет только с необходимым вам параметром User ID, придется добавить в него какой-нибудь показатель, что не очень удобно.

В интерфейсе Google Analytics можно выбрать максимум 25 показателей:

В Google BigQuery таких ограничений нет. Чтобы решить проблему с количеством параметров и показателей в отчетах, вы можете собрать данные в Google BigQuery и обработать всю нужную информацию. Например, вы хотите сегментировать пользователей, чтобы запустить ретаргетинг, улучшить контент или адаптировать сайт под популярный браузер. Для этого вам понадобится узнать, сколько взаимодействий, просмотров страниц, событий, транзакций и сессий сгенерировал каждый пользователь. При этом нужно увидеть эти данные не только в разрезе пользователя, но и его основных параметров: устройство, браузер, версия браузера, город, страна и т.д.

Если вы попытаетесь сделать это в Google Analytics, то ваш отчет будет ограничен пятью параметрами:

В Google BigQuery вы сможете выгрузить всю необходимую информацию простым запросом, перечислив нужные параметры и показатели. Вот пример такого запроса к данным, собранным с помощью стриминга OWOX BI:

    
SELECT
  clientId,
  sessionId,
  date,
  device.deviceCategory deviceCategory,
  device.browser browser,
  device.browserVersion browserVersion,
  geoNetwork.city city,
  geoNetwork.country country,
  trafficSource.channelGrouping channel,
  trafficSource.source source,
  trafficSource.medium medium,
  totals.hits hits,
  totals.pageviews pageviews,
  totals.events events,
  totals.transactions transactions,
  totals.visits visits
FROM
  [owox-demo:OWOXBI_Streaming.session_streaming_20160708]
    

В результате вы получите отчет со всеми необходимыми данными:

2. Сочетаемость параметров и показателей в отчетах

В Google Analytics у параметров и показателей есть своя область действия. У параметров может быть 4 области действия:

  • «Хит» — значение параметра меняется и передается в GA при каждом взаимодействии пользователя с сайтом. Примеры параметров: «Страница», «Название страницы», «Категория события» и т.д.
  • «Сессия» — значение параметра применяется ко всем хитам в сессии.
    Примеры: «Источник», «Канал», «Ключевое слово».
  • «Пользователь» — значение параметра применяется ко всем хитам в текущей и будущих сессиях, пока оно не изменится или пока параметр не перестанет быть активным. Примеры: «Пол», «Возраст», «Город».
  • «Товар» — значение параметра передается один раз для каждого товара и только в рамках расширенной электронной торговли. Примеры: «Товар», «Бренд», «Категория товара» и т.д.

У показателей только две области действия: «Хит» (например, «Сессии», «Процент новых сессий», «Показатель отказов») и «Товар» (например, «Выручка от товара», «Уникальные покупки», «Количество»).

В основном Google Analytics позволяет сочетать в отчете только те параметры и показатели, у которых одинаковая область действия. Это станет проблемой, если вам понадобится выгрузить параметры и показатели разной области действия в рамках одного отчета. Например, вы хотите узнать, как взаимодействовали пользователи с товарами конкретного бренда, и использовать эту информацию для увеличения его продаж. Перед вами стоит задача — оценить, сколько было сессий с кликами по товарам определенного бренда и сколько пользователей кликнули по этому товару.

Проверить совместимость параметров и показателей в Google Analytics можно с помощью инструмента Dimensions & Metrics Explorer. Если сделать это для нашего примера, мы увидим, что «Пользователи» и «Сессии» несовместимы с параметром «Бренд товара»:

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

                        
SELECT
  hits.product.productBrand Brand,
  COUNT_DISTINCT(sessionId) Sessions,
  COUNT_DISTINCT(clientId) Users
FROM
  [owox-demo:OWOXBI_Streaming.session_streaming_20160701]
WHERE
  hits.product.productBrand='Gucci'
  AND hits.eCommerceAction.action_type='click'
GROUP BY
  1
                        
                    

В результате запроса вы получите отчет, из которого видно, что товары бренда Gucci просматривали пять пользователей в пяти сессиях:

Как использовать результаты отчета, зависит от того, какие у вас цели. Если вы запускали ретаргетинг по товарам Gucci, можно оценить его эффективность. Если еще не запускали — отправить заинтересовавшимся пользователям письма со спецпредложениями.

3. Семплирование данных

Если у вас в рамках одного ресурса за анализируемый период собирается больше 500 тыс. сессий (для Google Analytics 360 — 100 млн сессий на уровне представления), вы наверняка сталкивались с семплированием (выборкой данных). Что это значит? Когда данных становится много, чтобы сократить время их обработки, Google Analytics берет определенный процент от всех данных, например 20%, анализирует их, результаты умножает на 5 и говорит, что они релевантны для 100% данных. Это удобно и быстро, но не всегда достоверно. Представьте, что вам нужно посчитать количество косточек в мандарине. Вам вручили одну из 10 долек, в которой была одна косточка. Можно, конечно, перемножить эти цифры и сказать, что в мандарине 10 косточек, но где гарантия, что в других тоже была одна косточка, а не 0, 2 или даже 3?

Семплирование может искажать данные, поэтому нельзя на 100% доверять отчетам, построенным с применением выборки. Особенно это актуально для отчетов за большой период времени или для пользовательских отчетов с большим количеством параметров и показателей.

Как избежать семплирования и принимать более точные решения? Передавать все данные в Google BigQuery, например, с помощью OWOX BI Pipeline или стандартной выгрузки для Google Analytics 360 (чем отличаются способы выгрузки, читайте в статье). В таком случае любой запрос в Google BigQuery будет обрабатывать полные данные по вашим ресурсам, и вы сможете делать выводы на основании несемплированных данных. При этом разница между выполнением запроса за один день или за год обычно составляет считанные секунды.

4. Агрегирование значений в отчетах

В отчетах Google Analytics у каждого параметра может быть несколько значений. Например, у параметра «Пол» всего два значения: мужчины и женщины, а у параметра «Страница» их может быть неограниченное количество.

Если в отчете за день количество строк со значениями параметра превышает 50 тыс. (75 тыс. для Google Analytics 360), то сервис агрегирует (объединяет) все оставшиеся значения в строку «Другие». Вот как это выглядит в отчете:

Из этого примера видно, что достаточно большой процент страниц (26,13%), которые посетили пользователи, скрыт под строчкой «Другие». То есть мы не можем посмотреть URL и показатели отдельно для каждой страницы, попавшей в эту строчку, и соответственно не можем определить, например, какие страницы посещают реже всего.

Агрегирование данных применяется не только в ежедневных отчетах — в Google Analytics есть ограничение в 1 миллион строк в отчете за любой период времени. Все остальные значения (свыше 1 млн) в таблице также объединяются в строку «Другие».

С одной стороны, с агрегированными данными удобно работать — они уже собраны в отчеты, и рассчитаны основные KPI. С другой стороны, для более сложных задач их может быть недостаточно. Например, с помощью неагрегированных (сырых) данных вы можете отслеживать путь каждого пользователя по вашему сайту; строить собственные модели атрибуции, чтобы оценить вклад каждого рекламного канала; использовать более «прицельный» таргетинг.

Данные, собранные в Google BigQuery, при построении отчетов не агрегируются, поэтому вы не упустите важных деталей при анализе.

5. Примеры отчетов в BigQuery

Мы рассмотрели четыре основных случая, когда возможностей Google Analytics недостаточно. Однако есть еще много более сложных отчетов, которые можно построить на неагрегированных данных в Google BigQuery, но нельзя построить в GA.

Допустим, вам нужно посмотреть, в какой последовательности пользователи посещают страницы вашего сайта и какой из путей самый популярный. В рамках этой задачи нужно построить отчет, в котором можно выбрать базовые URL и увидеть все входящие и исходящие URL для базовых страниц. В Google Analytics можно посмотреть отдельно список входящих страниц для базового URL и отдельно — список исходящих, но в одном отчете вывести оба списка пока нельзя. Зато такую возможность предоставляет Google BigQuery. С помощью этого отчета можно проанализировать поведение пользователей на определенной странице и управлять им. Например, переместить кнопку или ссылку, изменить меню, добавить новый функционал и т.д.

Отчет о последовательности URL легко построить, отправив к данным Google BigQuery такой запрос:

                        
SELECT
  IF(a.URL IS NOT NULL,a.URL,b.URL) BaseURL,
  IF(a.PreviousURL IS NOT NULL,a.PreviousURL,b.NextURL) URL,
  a.Number PreviousPageQuantity,
  b.Number NextPageQuantity
FROM (
  SELECT
    URL,
    PreviousURL,
    COUNT(PreviousURL) Number
  FROM (
    SELECT
      sessionId,
      time,
      URL,
      number,
      LAG(URL) OVER (PARTITION BY sessionId ORDER BY time) PreviousURL
    FROM (
      SELECT
        sessionId,
        hits.time time,
        hits.pagePath URL,
        RANK() OVER (PARTITION BY sessionId ORDER BY hits.time ASC) number
      FROM
        [owox-demo:OWOXBI_Streaming.session_streaming_20160711]
      WHERE
        hits.type='pageview'
      ORDER BY
        1,
        2,
        3) )
  WHERE
    URL='/products/id1222894335'
  GROUP BY
    URL,
    PreviousURL) a
FULL OUTER JOIN EACH (
  SELECT
    URL,
    NextURL,
    COUNT(NextURL) Number
  FROM (
    SELECT
      sessionId,
      time,
      URL,
      number,
      LEAD(URL) OVER (PARTITION BY sessionId ORDER BY time) NextURL
    FROM (
      SELECT
        sessionId,
        hits.time time,
        hits.pagePath URL,
        RANK() OVER (PARTITION BY sessionId ORDER BY hits.time ASC) number
      FROM
        [owox-demo:OWOXBI_Streaming.session_streaming_20160711]
      WHERE
        hits.type='pageview'
      ORDER BY
        1,
        2,
        3))
  WHERE
    URL='/products/id1222894335'
  GROUP BY
    URL,
    NextURL) b
ON
  a.PreviousURL=b.NextURL
WHERE
  PreviousURL IS NOT NULL
  OR NextURL IS NOT NULL
ORDER BY
  3 DESC,
  4 DESC
                        
                    

В итоге вместо разрозненных данных, которые пришлось бы объединять вручную, вы получите готовый отчет:

Результаты запроса можно легко визуализировать, используя Google SpreadSheets или Google Data Studio:

Из этого примера мы видим, что на анализируемую страницу чаще всего переходят со страницы товара id 1946305601, а уходят с нее на страницу товара id 1236971198. Эту информацию можно использовать, например, чтобы внести корректировки в систему товарных рекомендаций на сайте.

С помощью Google BigQuery можно построить отчет практически любой сложности. Например, когортный анализ в разрезе показателей, интересных для вашего бизнеса. Пример такого отчета смотрите в нашем кейсе с Contentmart. В справочном центре OWOX BI есть готовые запросы, которые вы можете использовать для своего проекта.

Выводы

Google BigQuery — мощный инструмент и незаменимый помощник для маркетологов и аналитиков, которым не хватает стандартных возможностей Google Analytics. Сервис помогает решить такие проблемы, как ограничение в количестве параметров и показателей в отчетах, агрегирование и семплирование данных. Кроме того, он позволяет строить более сложные отчеты — в общем, нет причин не попробовать, тем более что пробная версия бесплатна :)

И по традиции мы подготовили для вас бонус — пример запроса, благодаря которому можно оценить, как продвигаются по воронке продаж клиенты, привлеченные разными каналами и пользующиеся разными устройствами, и узнать, какой доход они приносят. Оставьте свой email, и мы пришлем вам файл с запросом, графиком, который получается в итоге, и примерами интерпретации полученных данных.

Вас также могут заинтересовать