Перенос данных отчетов Google Analytics 4 в BigQuery

27 марта, 2025

У Google вышло новое обновление - перенос данных отчетов Google Analytics 4 и BigQuery с помощью готового коннектора BigQuery Data Transfer Service для Google Analytics 4. О том, что это за новая опция и как работает трансфер отчетов, вы узнаете из этого руководства.

Если вы работаете с сырыми (неагрегированными) данными Google Analytics 4 в BigQuery, то наверняка знаете, что данные в таблицах BigQuery начинают собираться только после настройки связи GA4 - BigQuery. Исторические данные, которые уже были в счетчике Google Analytics 4 до момента экспорта, в облачное хранилище Google не передаются. Другими словами, пока связь GA4&BigQuery не установлена - в BigQuery необработанных данных на уровне событий нет. Как только вы установили связь - только с этого момента в BigQuery начинает собираться статистика.

Если требовалось передавать исторические данные из Google Analytics 4 в BigQuery, то владельцы счетчика могли использовать несколько решений:

  • самостоятельно выгружать статистику с помощью Data API (API Google Analytics 4) за прошлые диапазоны дат и передавать ее в BigQuery;
  • использовать сторонние сервисы и приложения (например, Supermetrics) для автоматической передачи исторических данных из ресурса GA4 в BigQuery.

Однако у каждого из этих способов есть свои недостатки:

  • при самостоятельной настройке нужно обладать навыками программирования и разбираться не только в выгрузке данных по API, но и понимать как устроена схема данных BigQuery для данных Google Analytics 4, чтобы правильно передавать их в набор данных и таблицы;
  • трансфер, основанный на стороннем решении, как правило, стоит денег. И чем больше информации из GA4 в BigQuery требуется передать, тем дороже обойдутся услуги за использование готового коннектора.

Но у них есть и общий недостаток. И в том, и в другое случае статистика выгружается с помощью Data API. А это не сырые данные о событиях и данные на уровне пользователей, которые предоставляет Google при экспорте в BigQuery, а агрегированная (сводная) статистика. То есть это обобщенные данные, которые группируют информацию о поведении пользователей. Вы не сможете получить информацию о времени сеанса, данные конкретного уникального идентификатора пользователя (Client ID/User ID, user_pseudo_id/user_id), не сможете построить его путь, некоторые сведения даже будут скрыты из-за выборки и других ограничений (например, кардинальности).

Вы увидите только суммарные (итоговые и средние) данные, статистика по конкретному посещению или пользователю будет недоступна. А сырые данные дают возможность все это видеть. Таким образом, работа с сырыми данными Google Analytics 4 возможна ТОЛЬКО в связке GA4 - BigQuery с использованием прямого подключения.

Google на днях выпустил новый тип передачи данных, который с помощью готового коннектора BigQuery Data Transfer переносит в BigQuery подготовленные (стандартные) отчеты из вашего ресурса Google Analytics 4, автоматически преобразовывая их в таблицы (tables) и представления (views) нужного формата. Сам перенос данных Google Analytics 4 в BigQuery - бесплатный, а после переноса применяется стандартная тарификация на хранение и обработку запросов в BigQuery.

BigQuery Data Transfer передает в BigQuery следующие стандартные отчеты Google Analytics 4:

  • Audiences (Аудитории)
  • Conversions (Конверсии)
  • Demographic details (Демографические данные)
  • Ecommerce purchases (Совершенные покупки)
  • Events (События)
  • In-app purchases (Покупки в приложении)
  • Landing page (Целевая страница)
  • Pages and screens (Страницы и экраны)
  • Promotions (Промоакции)
  • Tech details (Технические данные)
  • Traffic Acquisition (Привлечение трафика)
  • User Acquisition (Источники трафика)

Стандартные отчеты Google Analytics 4

Из официальной документации Google следует, что передача Google Analytics 4 в BigQuery подчиняется квотам, установленным для Data API. Фактически, этот коннектор не что иное, как аналог сторонних решений и самостоятельной выгрузки статистики GA4 по API. BigQuery Data Transfer для Google Analytics 4 не работает с сырыми данными, а предоставляют возможность загрузить сведения из стандартных отчетов GA4 в BigQuery. При этом вы можете осуществить трансфер исторических данных. И для этого не требуются навыки программирования. Следует лишь придерживаться нижеприведенных этапов настройки.

Google приостановил работу для пользователей из России. На момент публикации этого материала вы не сможете привязать свою банковскую карту, выпущенную на территории РФ, и начать работу с BigQuery Data Transfer. Наиболее простое и эффективное решение - выпустить карту другой страны (Казахстан, Киргизия, Армения и т.д.), чтобы иметь возможность пользоваться Google Cloud и оплачивать счета за использование дополнительных услуг и BigQuery.

Перед тем, как начать передачу данных Google Analytics 4 в BigQuery, выполните подготовительные работы:

  • в Google Analytics 4 ваша учетная запись или учетная запись службы должны иметь доступ для просмотра к идентификатору ресурса (property_id), который используется в конфигурации передачи;
  • убедитесь, что в своем проекте Google Cloud ds активировали API BigQuery и BigQuery Data Transfer API;

Для этого перейдите в Google Cloud и выберите свой проект:

Выбор проекта в Google Cloud

Если у вас проекта в Google Cloud, создайте его - NEW PROJECT:

Создание проекта

Если есть, выберите его из выпадающего списка:

Выбор проекта из списка

Когда вы создаете новый проект, API BigQuery включается автоматически. Но я рекомендую перепроверить это. Для этого просто перейдите по ссылке. Вы должны увидеть зеленую галочку и надпись API Enabled, свидетельствующую о включенном BigQuery API.

BigQuery API Enabled

Если API не активирован, включите его. Сделайте тоже самое для BigQuery Data Transfer API. Перейдите по ссылке и активируйте службу:

BigQuery Data Transfer API Enabled

  • создайте набор для хранения данных отчетов Google Analytics 4. Если у вас уже настроена связь GA4&BigQuery и вы желаете, чтобы новые таблицы и представления сохранялись именно в этом датасете, новый набор данных можно не создавать.

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

Новый набор данных (датасет)

  • если вы планируете настроить уведомления о запуске передачи для Pub/Sub, убедитесь, что у вас есть разрешение Identity and Access Management (IAM) - pubsub.topics.setIamPolicy. Если вы настраиваете только уведомления по электронной почте, разрешения Pub/Sub не требуются.

Теперь мы можем перейти к непосредственной настройке переноса данных стандартных отчетов Google Analytics 4 в BigQuery. Для этого вы должны иметь роль BigQuery Admin (roles/bigquery.admin). Эта предопределенная роль содержит разрешения, необходимые для создания передачи данных.

Конкретные роли для создания трансфера:

  • bigquery.transfers.update
  • bigquery.datasets.update

Для создания трансфера перейдите по ссылке. Нажмите Create a transfer:

Создание трансфера

На открывшейся странице для Source type выберите Source (Источник) - Google Analytics 4:

Источник - Google Analytics 4

В разделе Data source details (Сведения об источнике данных) укажите идентификатор вашего ресурса Google Analytics 4 (property_id). Найти его можно в интерфейсе Google Analytics 4, перейдя в раздел Администратор – Настройки ресурса - Информация о ресурсе. В правом верхнем углу скопируйте значение идентификатора ресурса:

Идентификатор ресурса Google Analytics 4 (property_id)

Вставьте это значение в поле Property ID:

Property ID (идентификатор ресурса GA4)

Следующее поле - Refresh window. Окно обновления - это количество дней, в течение которых обновленные данные могут быть извлечены и загружены в целевую таблицу. Этот параметр используется для управления частотой обновления данных из источников, таких как Google Ads, Google Analytics 4 и других поддерживаемых сервисов BigQuery Data Transfer.

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

Другими словами, когда вы настраиваете передачу данных, вы можете указать, как часто данные должны обновляться (частота повторения), а также установить окно обновления (refresh window), в течение которого будут учитываться новые данные. Например, если вы укажете окно обновления в 1 день, то система будет извлекать данные, которые были изменены или добавлены за последние 24 часа.

BigQuery Data Transfer для Google Analytics 4 поддерживает следующие параметры трансфера:

Repeat frequency
(Частота повторения)
Ежедневно, в момент первого создания передачи данных (по умолчанию).

Вы можете настроить время суток

Refresh window

(Окно обновления)

За последние 4 дня (по умолчанию).

Возможно настроить до 30 дней

Когда вы запускаете передачу данных в первый раз, передача данных извлекает все исходные данные, доступные в пределах окна обновления. Например, если окно обновления составляет три дня и вы запускаете передачу данных в первый раз, BigQuery Data Transfer извлекает все исходные данные в течение трех дней.

В качестве примера я буду использовать максимально допустимое значение окна обновления - 30 дней.

Окно обновления - 30 дней

Примечание:

  • окно обновления сопоставляется с полем TransferConfig.data_refresh_window_days;
  • чтобы извлечь данные за пределами окна обновления, например исторические данные отчетов Google Analytics 4, или восстановить данные после сбоев или пропусков передачи, вы можете инициировать или запланировать запуск обратного заполнения (вручную).

Задав Property ID и Refresh window, нажмите Continue. В разделе Destination settings выберите Dataset, который вы создали для хранения своих данных. Поскольку я создал отдельный набор данных ga4_transfer, то из списка выберу именно его:

Датасет для хранения данных

Нажмите Continue. В разделе Transfer config name для поля Display name введите название трансфера. Имя передачи может быть любым. Оно позволяет вам идентифицировать сам трансфер, если вам потребуется изменить его позже. По сути, это просто отображаемое название трансфера в списке всех передач данных. Например, Google Analytics 4 Transfer:

Отображаемое имя трансфера

Нажмите Continue. На следующем шаге Schedule options вас попросят задать расписание передачи данных. Выберите:

Начало трансфера

  • Start now - начать сейчас;
  • Start at set time - начать в заданное время.

Для Repeats выберите опцию того, как часто запускать передачу данных. Если вы выбрали Days, укажите допустимое время в формате UTC. Можно запускать трансфер в самом конце дня, например, в 23:59.

Выбрав итоговую конфигурацию, Google отобразит вам ваши настройки. Например, у меня запуск запланирован на каждый день в 23:59 UTC, начиная с текущего момента.

Расписание трансфера

Нажмите Continue. Следующий шаг настройки является необязательным, если вы вошли в систему и создаете трансфер с соответствующими правами и с помощью учетной записи Google.

Сервисный аккаунт (необязательно)

Нажмите Continue. В настройках уведомлений Notification options измените переключатель для Email notifications, чтобы получать сведения о состоянии трансфера на электронную почту. Если вы желаете получать уведомления Pub/Sub, то активируйте ползунок и для этой службы.

Уведомления по электронной почте

Примечание: Google Pub/Sub - это служба обмена сообщениями, которая позволяет публиковать и подписываться на потоки событий.

На заключительном шаге в Advanced options вы должны указать тип шифрования данных при трансфере. Изменить его после создания трансфера будет невозможно.

Расширенные настройки - Тип шифрования

В контексте BigQuery Data Transfer, Google-managed encryption keys и Cloud KMS keys относятся к способам шифрования данных, которые вы можете использовать для обеспечения безопасности ваших данных.

Google-managed encryption keys

Это ключи шифрования, которые управляются Google. Когда вы используете Google-managed keys, вам не нужно беспокоиться о создании, управлении или ротации ключей. Google автоматически управляет этими ключами и обеспечивает их безопасность. Данные, хранящиеся в BigQuery и других сервисах Google Cloud, шифруются с использованием этих ключей. Это наилучший выбор для пользователей, которые хотят минимизировать свои усилия по управлению безопасностью и сосредоточиться на использовании сервисов.

2. Cloud KMS keys (Google Cloud Key Management Service)

Это ключи шифрования, которые управляются пользователем. Если вы выбираете Cloud KMS keys, вы создаете и управляете своими собственными ключами шифрования. Это дает вам больше контроля над процессом шифрования, включая возможность ротации ключей, управления доступом и аудита. Cloud KMS keys подходит для организаций с особыми требованиями к безопасности и соответствию, которые хотят иметь полный контроль над своими ключами.

Поскольку у нас нет никаких особых требований к шифрованию, мы воспользуемся ключами шифрования Google (Google-managed encryption keys).

После заполнения всех настроек трансфера нажмите Save.

Сохранение конфигурации трансфера

Вам откроется отдельно окно с приложением BigQuery Data Transfer Service, где вас попросят выбрать аккаунт, к которому вы предоставить дополнительные разрешения:

Выбор аккаунта

Несколько раз нажмите Продолжить, пока не дойдете до последнего окна, где BigQuery Data Transfer Service попросит вас разрешение на просмотр и скачивание данных Google Analytics 4. Дайте приложению такое разрешение.

Разрешение на просмотр и скачивание данных Google Analytics 4

Как только вы это сделаете, окно приложения закроется, а вас автоматически перенаправит в раздел Data transfers, где вы увидите основные сведения о вашем созданном трансфере:

Data transfers

Поскольку расписание первого трансфера у меня запланировано на 23:59 UTC (2:59 ночи, UTC+3 по Москве), мне пришлось подождать некоторое время.

Вернувшись в Data transfers на следующий день, я увидел, что передача данных стандартных отчетов Google Analytics 4 в BigQuery проходит успешно:

The transfer run has completed successfully (Передача успешно завершена)

А сам настроенный трансфер выглядит так:

Настроенный трансфер

Открыв BigQuery Studio, я обнаружил в своем наборе данных ga4_transfer созданные таблицы и представления:

Таблицы и представления Google Analytics 4

Согласно официальной документации Google, когда стандартные отчеты Google Analytics 4 переносятся в BigQuery, они преобразуются в следующие таблицы и представления BigQuery:

GA4 report name BigQuery table BigQuery view
Audiences p_ga4_audiences ga4_audiences
Conversions p_ga4_conversions ga4_conversions
Demographic details p_ga4_demographicDetails ga4_demographicDetails
Ecommerce purchase p_ga4_ecommercePurchase ga4_ecommercePurchase
Events p_ga4_events ga4_events
In-app purchases p_ga4_inAppPurchases ga4_inAppPurchases
Landing page p_ga4_landingPage ga4_landingPage
Pages and screens p_ga4_pagesAndScreens ga4_pagesAndScreens
Promotions p_ga4_promotions ga4_promotions
Tech details p_ga4_techDetails ga4_techDetails
Traffic Acquisition p_ga4_trafficAcquisition ga4_trafficAcquisition
User Acquisition p_ga4_userAcquisition ga4_userAcquisition

Именно этот список отчетов и отображается в наборе данных BigQuery.

Сопоставление отчетов GA4 и таблиц и представлений в BigQuery

Вот как выглядит таблица BigQuery одного из отчетов, например, p_ga4_events (отчет по событиям):

Таблица p_ga4_events

Как видите, это агрегированная статистика (не сырые данные!), которые отображаются точно так же, как и в интерфейсе самого Google Analytics 4. Схема данных у каждого отчета своя. У p_ga4_events она состоит из следующего набора полей:

Схема данных таблицы p_ga4_events

Каждое поле имеет свой тип данных и сопровождается описанием. А надпись This is a partitioned table означает, что таблица разделена на партиции - отдельные физические части, которые хранят данные на основе определенного условия. На вкладке Details можно узнать подробнее о том, по какому полю и типу эта таблица партиционирована.

Партиционирование таблицы

Примечание: префикс p_ в начале таблицы означает, что она партиционирована.

Помимо таблиц с данными, BigQuery Data Transfer создает в датасете еще и представления. Например, вот так выглядит представление для отчета по событиям, ga4_events:

Представление ga4_events

В Google BigQuery таблицы и представления имеют разные характеристики и предназначение.

Хранение данных

  • Таблицы - это структуры, которые хранят данные. Данные в таблицах могут быть загружены из различных источников, таких как CSV-файлы, JSON, или могут быть результатом выполнения запросов;
  • Представления не хранят данные сами по себе. Они представляют собой сохраненные SQL-запросы, которые выполняются каждый раз, когда вы обращаетесь к представлению. Представления служат для абстракции и упрощения доступа к данным.

Обновление данных:

  • Таблицы - данные в таблицах можно обновлять, добавлять или удалять;
  • Представления - поскольку представления основаны на запросах, они не могут быть изменены напрямую. Чтобы изменить данные, отображаемые в представлении, необходимо изменить базовые таблицы или сам SQL-запрос, на котором основано представление.

Использование

  • Таблицы - если нужно хранить данные, изменять их или оптимизировать запросы через партиции/кластеризацию;
  • Представления - если нужно упростить сложные запросы, создать "виртуальную таблицу" без дублирования данных или обеспечить актуальность информации.

Производительность

  • Таблицы - запросы к таблицам могут быть более производительными, так как данные уже хранятся в физическом формате;
  • Представления - запросы к представлениям могут быть менее производительными, особенно если представление основано на сложных запросах или объединениях, так как каждый раз выполняется SQL-запрос.

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

Именно поэтому в представлениях содержатся дополнительные поля в схеме данных (_LATEST_DATE и _DATA_DATE), а сам SQL-запрос ссылается на таблицу:

, где:

  • _LATEST_DATE - константное значение (например, 2025-03-25), преобразованное в тип DATE;
  • _DATA_DATE - извлекает дату из системного поля _PARTITIONTIME (если таблица партиционирована по времени).

Пример выполнения SQL-запроса и отображение данных со столбцами _LATEST_DATE и _DATA_DATE

При переносе данных из Google Analytics 4 в BigQuery данные загружаются в таблицы BigQuery, которые разделены по дате. Раздел таблицы, в который загружаются данные, соответствует дате из источника данных. Если вы запланируете несколько переносов на одну и ту же дату, BigQuery Data Transfer Service перезапишет раздел для этой конкретной даты последними данными. Многочисленные переносы в один и тот же день или выполнение обратных заполнений не приводят к дублированию данных, а разделы для других дат не затрагиваются.

Google запустил BigQuery Data Transfer Service для Google Analytics 4, с помощью которого вы можете переносить данные стандартных отчетов из Google Analytics 4 в таблицы и представления BigQuery. Сам перенос данных Google Analytics 4 в BigQuery - бесплатный, а после переноса применяется стандартная тарификация на хранение и обработку запросов в BigQuery. Этот трансфер отличается от настроенной связи Google Analytics 4 - BigQuery, поскольку позволяет переносить агрегированную статистику (то, что делает Data API). Это не сырые данные! Пожалуйста, не забывайте про это.

Тем не менее, BigQuery Data Transfer Service упрощает некоторые ETL-процессы и может быть полезен в работе, поскольку:

  • дает возможность выгрузить исторические данные ресурса Google Analytics 4 или восстановить данные после сбоев или пропусков передачи за пределами окна обновления;
  • является альтернативой сторонним сервисам и приложениям (например, Supermetrics), где использование коннектора стоит денег. Теперь вы можете отказаться от таких решений, если функционал BigQuery Data Transfer Service удовлетворяет вашим задачам;
  • теперь вам не нужно обладать навыками программирования, изучать Data API (API Google Analytics 4), разрабатывать свои собственные решения по транспортировке данных и осуществлять перенос согласно установленной Google схеме данных.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике