Советы по повышению эффективности работы с BigQuery при массовом экспорте данных в Search Console

Понедельник, 5 июня 2023 г.

Массовый экспорт данных в Search Console – надежный способ передавать данные об эффективности сайта в результатах поиска сервису BigQuery для расширения возможностей хранения и анализа данных, а также создания отчетов. Так, после экспорта данных вы можете выполнить кластеризацию запросов и URL, проанализировать низкочастотные поисковые запросы и объединить данные Поиска с данными из других источников. Кроме того, вы можете хранить данные столько, сколько вам нужно.

При использовании массового экспорта данных важно взвешенно подходить к вопросу управления обработкой данных и расходами на их хранение. Сервис Search Console не взимает плату за экспорт данных. Однако рекомендуем внимательно ознакомиться с тарифами BigQuery, чтобы понимать, за что вы будете платить. В этой публикации мы расскажем, как воспользоваться преимуществами новых данных, чтобы не нести существенных расходов.

Если вы ещё не настроили массовый экспорт данных, ознакомьтесь с пошаговыми инструкциями в Справочном центре Search Console. Советуем также посмотреть это видео, чтобы узнать, какие данные можно экспортировать.

Создайте оповещения о превышении бюджета и ограничений на его превышение

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

После этого вы можете создать оповещение о достижении лимита бюджета в Google Cloud, чтобы избежать его перерасхода. Кроме того, вы можете настроить правила, чтобы получать оповещения, когда сумма фактических расходов приближается к установленному бюджетом лимиту.

Скриншот Google Cloud Console, на котором показано, как создать оповещение о достижении лимита бюджета

Для дополнительной защиты вы также можете ограничить количество байтов в запросе, за которые взимается плата. При этом количество байтов, которое будет обработано, рассчитывается до выполнения запроса. Если количество байтов превышает лимит, запрос не выполняется, а плата не взимается.

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

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

Чтобы избежать этого, рекомендуем выполнить предварительную агрегацию данных за каждый день, представив их в виде одной или нескольких сводных таблиц. Это позволит обрабатывать гораздо меньший объем данных в рамках запроса и сократить расходы.

Ознакомьтесь с функцией планирования запросов в BigQuery или используйте сервис BI Engine, если склоняетесь в пользу более автоматизированного решения.

Оптимизируйте расходы на хранение данных

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

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

Оптимизируйте запросы SQL

Запросы, которые вы выполняете с данными из Search Console, должны быть оптимизированы с точки зрения производительности. Если вы раньше не пользовались BigQuery, ознакомьтесь с рекомендациями по созданию запросов и их примерами в Справочном центре. Существует три способа сделать это.

1. Ограничение объема сканирования

Во-первых, старайтесь не использовать оператор SELECT *, это самый дорогостоящий способ выполнения запроса, поскольку BigQuery полностью сканирует каждый столбец таблицы. Использование условия LIMIT не влияет на объем считываемых данных.

Поскольку экспортируемые таблицы разбиты по датам, вы можете ограничить объем сканирования, указав только нужные даты, особенно если вы проводите тестирование и экспериментируете с данными. Используйте условие WHERE, чтобы ограничить диапазон данных в таблице, разбитой по датам. Экономия может оказаться весьма существенной. Например, вы можете проанализировать только последние 14 дней, используя следующее условие:

WHERE data_date between DATE_SUB(CURRENT_DATE(), INTERVAL 14 day)

Используйте всевозможные фильтры для каждого запроса на максимально раннем этапе, чтобы сократить объем сканирования. Например, если вы анализируете запросы, то может оказаться полезным исключить строки с анонимизированными запросами. Такие запросы отображаются в виде пустых значений. Чтобы сделать это, используйте следующее выражение:

WHERE query != ''

2. Использование выборки данных

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

3. Использование функций приближенного агрегирования, когда точные значения не требуются

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

SELECT APPROX_TOP_SUM(url, impressions, 10) WHERE datadate=...;

вместо

SELECT url, SUM(impressions) WHERE datadate=... GROUP BY url ORDER BY 2 DESC LIMIT 10;

Ресурсы

Это лишь часть рекомендаций по управлению расходами. Более подробная информация доступна в статье Рекомендации по оптимизации расходов в BigQuery.

Задать нам вопросы и оставить комментарии вы можете на справочном форуме Центра Google Поиска или в Твиттере.