Дорогостоящая ошибка при подключении GA4 - BigQuery к Looker Studio (Data Studio)

10 декабря, 2022

Возможность работать с "сырыми", необработанными данными - одна из парадигм, которая изначально была заложена компанией Google в Google Analytics 4. Для этого они сделали бесплатной и доступной для всех желающих интеграцию GA4 - BigQuery. Часть из этих пользователей, наверняка, попробует новый инструмент и подключение к облачному хранилищу данных в Looker Studio (ранее Google Data Studio). Но те, кто так делает, не догадываются, в какую ловушку они попадают и к каким рискам и материальным потерям ($) может привести их неоптимизированная работа.

Данный материал - это перевод статьи сайта analyticscanvas.com (автор - James Standen), на который я наткнулся пару дней назад. Несмотря на то, что я достаточно давно изучаю новый Google Analytics и работаю с облачными хранилищами, о проблеме, которую Джеймс описал в блоге Analytics Canvas, я ранее не задумывался. По большей части это связано с уровнем проектов, с которыми я работаю. Как правило, это небольшие компании, стартапы, малый бизнес. Но если вы работаете в крупной компании, отслеживаете большое количество событий и собираете много данных в GA4, а затем экспортируете их в BigQuery и визуализируете с какими-то другими данными в Looker Studio, нижеописанная информация будет вам крайне полезна. Как говорится, предупрежден - значит вооружен!

Все скриншоты я оставлю без изменений, а при переводе текста будут стараться максимально следовать оригиналу. Единственное отличие - это наименование продукта. Продукты Looker и Google Data Studio были объединены. С середины октября 2022 года Data Studio теперь называется Looker Studio.

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

Хотя подключить необработанные данные к отчету несложно, когда дело доходит до подключения данных GA4 из BigQuery в Looker Studio, есть два способа сделать это:

  1. правильный (right way);
  2. неправильный (wrong way).

Неправильный способ:  подключиться напрямую к таблице с данными BigQuery с помощью пользовательского запроса. Далее мы покажем вам, как это может стоить сотни долларов ($) в день в расходах BigQuery.

Правильный способ: создать сводную таблицу и подключиться к ней в Looker Studio. Мы покажем вам, как избежать больших затрат на BigQuery для точно такого же отчета без ущерба для производительности.

Как рассчитать стоимость запроса в BigQuery?

Давайте рассмотрим простой пример, который включает только одну диаграмму (chart), сеансы целевой страницы (landingPage) по дате всего за один месяц. Для этого возьмем сайт с установленным Google Analytics 360 и довольно большим трафиком (~ 3 000 000 событий в день) для ресурсов Google Analytics 4. Нам важно рассмотреть относительную экономию, поэтому данный пример применим к любому уровню трафика.

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

В этом случае при выполнении запрос будет обрабатывать 67,43 ГБ.

На стоимость этого запроса влияют три фактора:

  1. количество и размер столбцов, включенных в запрос, либо в результате, либо в операторе WHERE;
  2. диапазон дат (количество ежедневных таблиц, используемых запросом);
  3. количество событий в день, определяющее количество строк в каждой таблице.

Запросы с более длительными интервалами дат стоят значительно дороже. При прочих равных, запрос на год в 12 раз дороже запроса на месяц!

Ценообразование в BigQuery состоит из двух компонентов: хранения и анализа. В примере выше запрос подпадает под ценообразование анализа, которое может быть либо по запросу, либо по фиксированной ставке. Цена фиксированной ставки может варьироваться, но начинается от 1700 долларов в месяц!

Плата за использование по требованию зависит от количества байтов, обработанных каждым запросом, и составляет 5 долларов за 1ТБ. Первый ТБ в месяц пользователям предоставляется бесплатно. Наш пример запроса составляет 67,43 ГБ или 0.06743 ТБ (в десятичной системе) или 0,06585 ТБ (в двоичной системе). Таким образом, этот запрос будет стоить 0,06585 ТБ * 5 долларов = 0,33 доллара.

Вроде не так уж и плохо, правда? Подождите, вы пока не видели сколько запросов генерирует Looker Studio...

Как Looker Studio (Data Studio) запрашивает BigQuery?

Проблема в том, что Looker Studio не просто выполняет запрос один раз. Когда пользователи взаимодействуют с отчетом, он отправляет постоянный поток запросов в BigQuery. Каждый из них приводит к использованию BigQuery и потенциальной стоимости. Представьте, что произойдет, если вы поместите этот запрос Looker Studio как пользовательский запрос:

Каждый пользователь, имеющий доступ к отчету, когда изменяет фильтр дат на новый диапазон, вызывает выполнение другого запроса. К счастью, в Looker Studio есть кэширование. Если два пользователя просматривают один и тот же диапазон дат с одинаковыми параметрами (все фильтры, все настройки), кэш будет использоваться в течение заданного периода времени.

Кэш - это система временного хранения данных. Извлечение кэшированных данных может быть намного быстрее, чем их непосредственное извлечение из базового набора данных, и помогает сократить количество отправляемых запросов, сводя к минимуму затраты на платный доступ к данным.

Если пользователь пробует 10 разных фильтров, то он будет генерировать 10 запросов. Кэширование как в Looker Studio, так и на уровне BigQuery может немного уменьшить это.

Каждый элемент в отчете Looker Studio создает больше запросов и увеличивает ваши затраты

Looker Studio делает один или два запроса для каждого элемента в вашем отчете. В большинстве отчетов есть по крайней мере несколько диаграмм или отдельных сводок (scorecard) с показателями. Это увеличивает стоимость в несколько раз.

Например, линейная диаграмма приводит к двум запросам: один для определения 10 лучших категорий, а другой для получения подробных данных по этим категориям. Когда вы в Looker Studio используете встроенный коннектор BigQuery, оба эти запроса будут связаны с затратами на BigQuery. Если у вас есть отчет с 10 диаграммами, 2 сводками и таблицей, у вас может быть два десятка запросов, попадающих в BigQuery.

Как увидеть запросы Looker Studio (Data Studio) в BigQuery по мере их поступления?

Чтобы увидеть, как Looker Studio взаимодействует с BigQuery и сколько запросов при этом выполняется:

  • создайте новый пользовательский запрос с помощью коннектора BigQuery

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

  • добавьте диаграмму, используя созданный вами запрос.

Добавьте в отчет диаграмму или таблицу, в которой используется набор данных BigQuery.

  • зайдите в BigQuery

Используя те же учетные данные, что и в Looker Studio, войдите в аккаунт Google Cloud и раздел BigQuery.

  • проверьте свою личную историю

Выберите тот же проект, который вы использовали в Looker Studio, а затем перейдите на вкладку PERSONAL HISTORY. Вы увидите запросы, сделанные Looker Studio от вашего имени:

Давайте посмотрим на предыдущий пример отчета в Looker Studio. Я обновил его, затем зашел в редактор BigQuery, и моя личная история выглядит так:

Как и ожидалось, мы видим, что Looker Studio выполнил 5 запросов. Один из них предназначен для заполнения таблицы, два для диаграммы и два для кольцевой диаграммы. Если я нажму на идентификатор задания (Job ID) и посмотрю на один из них, я увижу свой SQL-запрос, параметры даты Looker Studio и сколько именно данных этот запрос обработал. В этом примере - 61,62 ГБ, что составляет 0.06162 ТБ (в десятичной системе) или 0,06018 ТБ (в двоичной системе), и стоит 0,30 доллара.

Когда я смотрю на все 5 запросов, я вижу, что все они занимают около 60 ГБ. Таким образом, это одно обновление отчета приведет к оплате BigQuery примерно в 1,5$ . Если у вас несколько пользователей и много отчетов, это очень быстро складывается. Все эти клики могут стоить сотни долларов в день.

Помните, что этот запрос был продемонстрирован на ресурсе Google Analytics 4 с отслеживанием более 3 миллионов событий в день. Если у вас небольшой проект и около 20 000 событий в день, такое же обновление отчета будет стоить копейки.

Теперь понимаете, почему различные SaaS-сервисы (например, Supermetrics), в своей тарификации оперируют еще и пользователями? Каждый отдельно взятый человек, использующий отчет, будет отправлять запросы и использовать ресурсы проекта, которые стоят денег.

Помогает ли кэширование в Looker Studio (Data Studio) снизить стоимость BigQuery?

Кэширование определенно может помочь. И в Looker Studio, и в BigQuery есть кэширование. Кэширование вернет ранее обработанный запрос при условии, что базовые данные не изменились, и запрос точно такой же. Таким образом, даже если вы используете пользовательский запрос непосредственно к своим таблицам событий GA4, и в вашем отчете нет настраиваемых фильтров, или у вас низкая кардинальность данных (параметров), тогда пользователи часто будут видеть кэшированные результаты в Looker Studio, и дополнительные затраты на BigQuery не потребуются.

Для справки: кардинальность (cardinality) характеризует уникальность данных. Высокая кардинальность - уникальные данные, низкая кардинальность - повторяющиеся данные. Например, в таблице событий могут быть колонки:

  • gender (пол) - высокоповторяющиеся данные, низкая кардинальность;
  • city (город) - данные повторяются, но уже не так часто - нормальная кардинальность;
  • phone (телефон) - данные уникальны, высокая кардинальность.

Если вы не позволите своим пользователям (тем, у кого есть доступ/ссылка) настраивать и редактировать отчет, данные будут кэшироваться, и это сократит количество запусков запроса. В таком случае все пользователи должны видеть только фиксированные отчеты (статические) - без возможности их исследования. И все запросы должны выполняться хотя бы раз в день, так как в GA4 появляются новые данные, и люди должны будут видеть обновленную статистику.

Как насчет фиксированной ставки (flat-rate) BigQuery, она не ограничена?

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

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

А для меня какова стоимость использования Looker Studio (Data Studio) в GA4 - BigQuery?

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

Основные факторы, влияющие на стоимость BigQuery для Looker Studio:

  • строки в запрашиваемой таблице (для GA4 - это количество строк в день);
  • байты в столбцах в запросе (зависит от запроса, мы используем среднее значение);
  • количество активных пользователей отчета Looker Studio;
  • количество запросов, которые делают пользователи (связано с их активностью в отчете);
  • количество одинаковых запросов, в точности совпадающих (кэширование помогает избежать дополнительных затрат).

Помните, что пользователь, который делает одно изменение в отчете (например, при выборе фильтра или изменении диапазона дат), может сгенерировать 20 или 30 запросов одним щелчком мыши. Если несколько пользователей (членов вашей команды) активны в Looker Studio даже один час в день, могут быть сгенерированы тысячи запросов.

Чтобы оценить стоимость прямого запроса к таблицам событий Google Analytics 4, мы используем ряд допущений, которые могут быть применимы или неприменимы к вашей ситуации. Тем не менее, они дают общее представление о порядке величины на основе размера данных и типе использования. Затраты в нашей таблице ниже, вероятно, будут немного занижены. Более подробные запросы, более активные пользователи или более интерактивные отчеты Looker Studio увеличивают количество запросов и, следовательно, итоговую стоимость для вас.

BigQuery сохраняет все результаты запросов в таблицу, которая может быть временной (temporary tables) или постоянной (permanent tables).

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

К стоимости использования таблиц отчетов Analytics Canvas применяет предполагаемое уменьшение размера временной таблицы - все эти запросы Looker Studio направляются к таблицам гораздо меньшего размера. Но нам нужно обновлять эти таблицы каждый день, а для этого необходимо запрашивать таблицы событий GA4 хотя бы один раз в день. Поэтому мы ежедневно рассчитываем стоимость загрузки данных о событиях за 5 дней, предполагая, что вы ежедневно обновляете данные за последние 5 дней. Это обеспечивает актуальность данных (но не тратит затраты BigQuery на постоянный повторный запрос исторических данных, которые не изменились).

По оценкам Analytics Canvas, использование временных таблиц обойдется примерно в 50 раз дешевле.

Затраты согласно оценке Analytics Canvas, сентябрь 2022 г.

* скорее всего, на этом этапе вы перейдете на фиксированную ставку, поэтому платите 2000 долларов в месяц. И в зависимости от того, как ваши пользователи взаимодействуют с Looker Studio, могут наблюдаться замедления в часы пик.

** если у вас очень мало событий в экспортных таблицах GA4, вы можете просто запросить таблицы событий напрямую. Но есть много других причин, по которым следует избегать использования необработанных сложных SQL-запросов непосредственно для коннектора BigQuery в Looker Studio.

Подведение итогов

Экспорт BigQuery для GA4 - отличный способ получить доступ к вашим "сырым данным" GA4. Но затраты могут возрасти! Особенно, если вы подключаетесь напрямую к экспорту BigQuery без использования методов оптимизации затрат. Несмотря на то, что каждый запрос стоит не очень дорого, поскольку BigQuery - очень экономичный способ запроса данных, создание десятков тысяч из них без необходимости может стать дорогостоящей ошибкой для вас и вашей компании. Однако если у вас небольшой проект, не так много данных, и вы работаете с отчетом Looker Studio в одиночку, вы можете не переживать за большие расходы в облачном хранилище. Но обязательно следите за количеством байтов, обработанных каждым запросом, и итоговой суммарной цифрой.

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

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