NetPeak Biz Tech    


Партиционирование таблиц в Google BigQuery — понятная инструкция

Партиционирование таблиц в Google BigQuery — понятная инструкция

< >

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

Google BigQuery — это облачная база данных для хранения и быстрой обработки больших объемов информации. Как правило, стоимость использования облачной базы данных не превышает $5 в месяц даже при хранении и обработке достаточно больших объемов данных. Но при неправильном и неэффективном использовании инструментария оплата обходится в сумму в десять раз большую, чем вы ожидали.

Партиционирование — это разделение большой таблицы на части (партиции). Логически вы работаете с таблицей разбитой на партиции точно так же, как и с обычной, но физически эта таблица состоит из отдельных файлов (разделов) и в нужный момент вы получаете данные из тех разделов, в которых хранится запрашиваемая информация.

Такое разделение таблицы нужно для экономии ресурсов и ускорения работы запросов, а в случае с BigQuery — еще и для экономии денег за оплату обработанных данных.

Если вы не делите таблицу на партиции, то запрос будет сканировать все строки таблицы перед тем, как отдать вам результат. Если таблица разделена на партиции, и вам необходимо обработать данные из нескольких партиций, то запрос обратится за данными именно к этим частям таблицы, и объем данных для обработки будет значительно меньше.

Как создать таблицу с партициями в Google BigQuery

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

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

Название поля _PARTITIONTIME — зарезервированное. Поэтому обратиться к нему без присвоения псевдонима нельзя. Воспользуйтесь комaндой AS, чтобы получить значения данного поля.

Пример запроса:

SELECT _PARTITIONTIME AS pt, id, value FROM Test_WF.part_test

Пример результата выполнения запроса:

По результату запроса видно, что столбец pt (это переименованный с помощью комaнды AS виртуальный столбец _PARTITIONTIME) содержит два значения: «2017-12-13 00:00:00 UTC» и «2017-12-14 00:00:00 UTC».

Таблица Test_WF.part_test на данный момент разделена на две партиции:

  • строки с id 1-5 и значением «2017-12-13 00:00:00 UTC» — первая часть (эти данные загружены в таблицу 13 декабря 2017 года) ;
  • строки с id 6-10 и значением «2017-12-14 00:00:00 UTC» входят во вторую партицию (данные загружены в таблицу 14 декабря 2017 года).

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

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

Например, для добавления записи в таблицу партиции от 1 декабря 2017 года запишем в Test_WF.part_test$20171201.

Как обращаться к партициям

BigQuery поддерживает два SQL-диалекта, поэтому рассмотрим, как обращаться к конкретной партиции на обоих диалектах.

В Legacy SQL укажите нужную партицию после имени таблицы через знак $.

Пример запроса:

SELECT *FROM Test_WF.part_test$20171213

Пример результата выполнения запроса:

Этот запрос вернул все строки из партиции, в которую были загружены данные 13 декабря 2017 года.

В стандартном SQL вы можете обращаться к партициям в блоке WHERE.

Пример запроса:

SELECT * FROM Test_WF.part_test WHERE _PARTITIONTIME = \"2017-12-13\"

Пример результата выполнения запроса:

Чтобы получить данные сразу из нескольких партиций, обратитесь к полю _PARTITIONTIME в блоке WHERE. Этот способ работает как в Standart ,так и в Legacy SQL.

SELECT * FROM TABLE_DATE_RANGE(Test_WF.my_table, TIMESTAMP(\"2017-12-13\"), TIMESTAMP(\"2017-12-14\"))

Пример результата выполнения запроса:

Функции подстановки таблиц (Table Wildcard Function) поддерживаются только в Legacy SQL. Используйте виртуальное поле _TABLE_SUFFIX для обращения к отдельным партициям из таблицы, разбитой на разделы описанном в этом блоке способом.

Пример запроса:

SELECT * FROM `Test_WF.my_table*` WHERE _TABLE_SUFFIX BETWEEN \"20171213\" AND \"20171214\"

Пример результата выполнения запроса:

Для перечисления любых суффиксов таблиц используйте поле _TABLE_SUFFIX и оператор IN.

Пример запроса:

SELECT * FROM `Test_WF.my_table*` WHERE _TABLE_SUFFIX IN (\"20171213\", \"20171214\")

Пример результата выполнения запроса:

Название партиции удобно выводить в результате запроса.

Пример запроса:

SELECT *, _TABLE_SUFFIX as TableSuffix FROM `Test_WF.my_table*` WHERE _TABLE_SUFFIX BETWEEN \"20171213\" AND \"20171214\"

Пример результата выполнения запроса:

Как пользоваться партиционированием таблиц

Партиции здорово помогают при составлении оперативной отчетности за фиксированный период, например, за последние 7 или 30 дней.

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

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

Для создания представления в Google BigQuery напишите в редакторе запросов текст SQL-запроса и нажмите «Save View».

Укажите DataSet, в котором будет создано представление, и задайте имя представления.

Готово! Созданное вами представление появится в указанном наборе данных и вы сможете обращаться к нему, как обычной таблице.

Преимущество такого подхода очевидно: хранение данных в партициях, к которым вы не обращались более 90 дней, стоит в BigQuery на 50% дешевле. При этом счетчик времени сбрасывается при любом обращении к партиции: будь-то запрос, изменение, запись или копирование данных.

Для реализации подхода и получения данных за последние 7 дней воспользуйтесь примерами запросов для Legacy- и Standart-диалектов.

В Legacy SQL запрос будет выглядеть так:

SELECT * FROM Test_WF.part_test WHERE _PARTITIONTIME BETWEEN TIMESTAMP(UTC_USEC_TO_DAY(NOW() - 7 * 60 * 60 * 24 * 1000000)) AND TIMESTAMP(UTC_USEC_TO_DAY(CURRENT_TIMESTAMP()))

В Standart SQL условие WHERE будет выглядеть немного иначе:

SELECT * FROM Test_WF.part_test WHERE _PARTITIONTIME BETWEEN TIMESTAMP_TRUNC(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 * 24 HOUR),DAY) AND TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(),DAY)

Выводы

Партиционировать таблицы очень просто. Для этого в интерфейсе BigQuery при создании новой таблицы в опциях укажите формирование партиций по дням. Затем при запросе данных из таблицы с помощью соответствующего SQL-диалекта задайте нужную партицию после имени таблицы через символ $ или дату в формате ГГГГММДД.

При работе с партициями учитывайте ограничения:

  • одна таблица может иметь не более 2500 разделов (партиций) ;
  • партицию можно обновлять не более 2000 раз в сутки;
  • частота обновлении партиции не более 50 обновлений в течении 10 секунд.

Партиционирование для таблиц с большим количеством строк сэкономит ваши деньги и повысит производительность выполнения запросов к данным. Стоимость хранения разделов, которые не обновлялись более 90 дней на 50% дешевле, чем хранение данных, которыми вы пользуетесь регулярно.

Этот пост впервые опубликован в 2018 году. Обновлен в 2021-ом. Если вы обнаружили здесь неактуальную информацию, напишите об этом в комментариях.



Комментарии:

Что работает в 2019 году: кейсы и рекомендации спикеров 8P

Что работает в 2019 году: кейсы и рекомендации спикеров 8P Читать только интернет-маркетологам, SMM, PPC и SEO-специалистам....

23 07 2026 2:55:19

Как найти новые точки роста в рекламных кампаниях

Как найти новые точки роста в рекламных кампаниях Как и зачем отслеживать конверсии с тегом Google Рекламы...

22 07 2026 3:19:58

Cколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в третьем квартале 2017

Cколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в третьем квартале 2017 Казахстанские реалии: данные по более 1 млн кликов в 23 тематиках и 15 городах....

21 07 2026 13:29:33

Как я работаю: рассказ PPC-специалиста

Как я работаю: рассказ PPC-специалиста Как специалисту с нуля обучиться контекстной рекламе и совмещать работу с хобби...

20 07 2026 7:26:36

Как запустить рекламную кампанию Call-Only для мобильных устройств

Как запустить рекламную кампанию Call-Only для мобильных устройств Учим правильно платить за верхние строчки показов объявления: настройка быстрых звонков из поисковых объявлений «Только номер телефона» Google Ads...

19 07 2026 11:26:58

Netpeak + RadASO = Netpeak RadASO. Мы выходим на рынок комплексного продвижения мобильных приложений

Netpeak + RadASO = Netpeak RadASO. Мы выходим на рынок комплексного продвижения мобильных приложений Агентство Netpeak закрыло сделку по покупке агентства мобильного маркетинга Радомира Новковича RadASO....

18 07 2026 8:32:50

Статистика и аналитика аккаунта в Twitter — полезные инструменты

Статистика и аналитика аккаунта в Twitter — полезные инструменты Твиты, реплаи, ретвиты - как сделать правильные выводы из активности в Twitter? Об этом читайте в нашем посте....

17 07 2026 2:31:27

Какие инструменты использовать веб-аналитику, кроме Google ***ytics и Яндекс.Метрики

Какие инструменты использовать веб-аналитику, кроме Google ***ytics и Яндекс.Метрики Как решить все задачи и не изобретать велосипед. Мы оторвались от отчетов в Google ***ytics и Яндекс.Метрике и посмотрели в сторону менее популярных инструментов для веб-аналитики. Узнайте больше!...

16 07 2026 9:23:51

Что такое Progressive Web Apps и какие возможности они открывают для вашего бизнеса

Определение сайта нового типа. Захочет ли бизнес интернета перевести свои веб-приложения на более прогрессивные рельсы?...

15 07 2026 10:52:34

Как создать специальный отчет в Google ***ytics

Как создать специальный отчет в Google ***ytics Мануал, по которому вы создадите специальный отчет, чтобы применить его на своем сайте....

14 07 2026 2:16:14

Рэнд Фишкин: о трендах SEO и работе волшебника страны Moz

Рэнд Фишкин: о трендах SEO и работе волшебника страны Moz Экс-CEO, а теперь просто сотрудник и «волшебник страны Moz» Рэнд Фишкин поделился с читателями блога рассказом о своем видении будущего SEO, перспективах анонимизации сети и причудах американских клиентов....

13 07 2026 6:27:19

Кейс Office-Expert.kz: как на треть снизить стоимость транзакций и вырастить CR на 67%

Кейс Office-Expert.kz: как на треть снизить стоимость транзакций и вырастить CR на 67% Как эффективно выйти из карантина с помощью контекстной рекламы...

12 07 2026 16:36:38

Как провести тендер и выбрать подрядчика в сфере интернет-маркетинга — чек-лист

Как провести тендер и выбрать подрядчика в сфере интернет-маркетинга — чек-лист Один из лучших способов выбрать подрядчика — провести брифинг для компаний. При этом важно предоставить максимум информации: откройте доступ к реальным данным по проекту. Узнать больше!...

11 07 2026 22:22:12

45 советов по мобильному маркетингу от Mobile Growth Experts

45 советов по мобильному маркетингу от Mobile Growth Experts Лучшие фишки продвижения мобильных приложений в адаптированном переводе отчета Branch.io...

10 07 2026 10:55:51

SMM продвижение автомобильного бренда — «Дневники тест-драйвера»

Мы предложили фанам бренда прокатиться на автомобиле SEAT Altea Freetrack!...

09 07 2026 23:43:55

Как долго живет лид в базе email-рассылки?

Как долго живет лид в базе email-рассылки? Это исследование для тех, кто хочет выяснить, эффективно ли работать с лидами, если им год и больше...

08 07 2026 17:49:53

3 фишки про продвижение постов в Facebook

3 фишки про продвижение постов в Facebook Если маркетер хочет привлечь к бренд-контенту дополнительное внимание, стоит воспользоваться опцией Promote post....

07 07 2026 10:32:53

Особенности SEO-продвижения сайтов медицинской тематики

Особенности SEO-продвижения сайтов медицинской тематики Более строгие требования к таким ресурсам обуславливают свои подходы....

06 07 2026 16:28:28

Как мы сделали аналитический инструмент для блога Netpeak

Как узнать, хорошую ли статью вы опубликовали в блоге...

05 07 2026 8:14:50

Пользователи удаляют приложение — когда mobile-маркетологу не стоит волноваться

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

04 07 2026 14:12:15

Once upon a time… 22 правила сторителлинга от Pixar

Как рассказывать истории...

03 07 2026 16:43:40

Кейс по контекстной рекламе образовательных курсов в Казахстане: рост продаж с 0 до 12 мест за 1,5 месяца

Кейс по контекстной рекламе образовательных курсов в Казахстане: рост продаж с 0 до 12 мест за 1,5 месяца Тренинг по контекстной рекламе образовательных курсов в Google Ads, Яндекс.Директ, Target@mail...

02 07 2026 21:37:31

Как увеличить продажи на 75% с помощью внутренней оптимизации сайта — кейс maxi.az

Как увеличить продажи на 75% с помощью внутренней оптимизации сайта — кейс maxi.az Увеличение трафика из поисковых систем Азербайджана на 30% за три месяца. И он продолжает расти...

01 07 2026 16:44:33

Сотрудницы Netpeak Group о своей работе над проектами, самоорганизации, хобби — дайджест постов

Сотрудницы Netpeak Group о своей работе над проектами, самоорганизации, хобби — дайджест постов Сегодня именно тот день, когда пора решиться и отправить своё резюме в нашу компанию....

30 06 2026 23:52:34

От хорошего к великому

От хорошего к великому Большой проект Джима Коллинза и его комaнды. Одна из лучших книг в нашей библиотеке. Всем рекомендуется к прочтению!...

29 06 2026 2:46:53

Инструменты для веб-аналитики

Инструменты для веб-аналитики Инструменты веб-мастера: что может заменить Google ***ytics?...

28 06 2026 13:59:47

Google BigQuery — зачем нужна облачная база данных

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

27 06 2026 7:48:32

10 SEO-требований к сайту

Советы и даже требования SEO-специалистов к разработчикам сайтов....

26 06 2026 8:52:35

Синтаксис, виды и параметры UTM-меток — как правильно отследить трафик

Синтаксис, виды и параметры UTM-меток — как правильно отследить трафик UTM-метки позволяют эффективно отслеживать источники трафика. Но составлять их нужно правильно. Как именно, давайте разбираться....

25 06 2026 7:28:33

Рост небрендового трафика на 99% — кейс интернет-магазина Vodafone Retail Ukraine

Рост небрендового трафика на 99% — кейс интернет-магазина Vodafone Retail Ukraine За 10 месяцев сотрудничества увеличили небрендовый на 99%, а общий трафик — в два раза. Рассказываем не только о результатах, но и подходе создания реалистичного прогноза SEO-продвижения сайта. Читать дальше!...

24 06 2026 19:24:44

SEO-среда: Основные инструменты веб-мастера

SEO-среда: Основные инструменты веб-мастера Пройдем вместе путь вебмастера от первых шагов и до вершины ТОПа :)...

23 06 2026 9:44:26

Как украинский бизнес меняет свой маркетинг во время карантина — подборка примеров

Как украинский бизнес меняет свой маркетинг во время карантина — подборка примеров Новые тактики в рекламных кампаниях, SMM и PR, которые использует бизнес в новых условиях...

22 06 2026 22:26:11

Экономим время с Impact Mapping — кейс разработки мобильного приложения

Экономим время с Impact Mapping — кейс разработки мобильного приложения Заказчик всегда приходит с идеей. В этой идее может быть все продумано до мелочей, а может быть только каркас. В любом случае мысли клиента следует систематизировать так, чтобы с ними было удобно работать....

21 06 2026 3:31:48

Почти идеальный способ настроить междоменное отслеживание

Самые точные данные статистики, которые вы получите с помощью Google Tag Manager....

20 06 2026 10:47:44

Как я решил проблему слива бюджета по топ-позициям в органике

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

19 06 2026 11:28:57

Интервью с Марком Цукербергом про Facebook Home, деньги и будущее коммуникаций

Интервью с Марком Цукербергом про Facebook Home, деньги и будущее коммуникаций Основатель фейсбука опубликовал на WIRED крутое интервью...

18 06 2026 9:19:13

Как увеличить базу подписчиков на 100% за год — кейс domcomfort.ua

Как увеличить базу подписчиков на 100% за год — кейс domcomfort.ua Почти 50 тыс. контактов за год принесли формы подписки и регистрации....

17 06 2026 3:45:37

Как SaaS-у заработать $250 000 за неделю, или Четкая инструкция от Serpstat, как провести успешную кампанию на AppSumo

Как SaaS-у заработать $250 000 за неделю, или Четкая инструкция от Serpstat, как провести успешную кампанию на AppSumo Заработок в четверть миллиона. Как многофункциональная SEO-платформа Serpstat из Netpeak Group стала самым продаваемым продуктом на AppSumo — пошаговая история-инструкция...

16 06 2026 16:45:12

Как работает экосистема Netpeak Group — интервью каналу «Точка G»

Как работает экосистема Netpeak Group — интервью каналу «Точка G» Узнай, как бэкофис группы помогает развиваться компаниям, и выиграй iPhone — подбери крутое название для нашей группы....

15 06 2026 14:32:10

Кейс: как провести анализ конкурентов с помощью SimilarWeb

Кейс: как провести анализ конкурентов с помощью SimilarWeb Определение, исследование и проверка конкурентов в Similarweb — первый шаг перед запуском и масштабированием проекта...

14 06 2026 22:10:34

CEO of Ringostat Александр Максименюк: кому и зачем нужен Call Tracking

CEO of Ringostat Александр Максименюк: кому и зачем нужен Call Tracking 79% владельцев смартфонов, если верить Google, используют их для покупок или заказов услуг. Это более двух миллиардов человек. Ничего удивительного, что даже Google запустил собственный сервис Call Tracking. Кому и зачем жизненно важно отслеживать звонки...

13 06 2026 16:11:17

Как провести A/B-тест сайта: инструменты и популярные гипотезы

Как провести A/B-тест сайта: инструменты и популярные гипотезы 22 оригинальные гипотезы для A/B-теста сайта, которые чаще всего влияют на получаемую прибыль...

12 06 2026 9:50:39

Партиционирование таблиц в Google BigQuery — понятная инструкция

Партиционирование таблиц в Google BigQuery — понятная инструкция Как упростить работу с данными и сэкономить на оплате сервиса...

11 06 2026 11:45:50

Как грамотно предупредить о файлах cookie на сайте

Как грамотно предупредить о файлах cookie на сайте Как создать и внедрить баннеры об использовании куки-файлов с помощью Google Tag Manager и OneTrust...

10 06 2026 14:28:13

Кейс по SEO-продвижению интернет-магазина в тематике «фото и видео аксессуары»: ROMI 191%

Кейс по SEO-продвижению интернет-магазина в тематике «фото и видео аксессуары»: ROMI 191% Тематический кейс в нише «Фотография и аксессуары»: проделанные работы и полученные результаты...

09 06 2026 13:56:10

Сторителлинг как маркетинговый приём

Сторителлинг как маркетинговый приём Сторителлинг — это способ рассказывать истории, его цель — дать возможность читателю или зрителю почувствовать себя героем этой истории,...

08 06 2026 8:29:19

Блогеры vs таргетинг: плюсы и минусы

Блогеры vs таргетинг: плюсы и минусы Какой рекламный инструмент использовать, чтобы получить максимальный результат...

07 06 2026 1:37:28

Черная пятница 2021 в Европе и Украине. Как изменились традиционные даты распродаж и топы бестселлеров

Черная пятница 2021 в Европе и Украине. Как изменились традиционные даты распродаж и топы бестселлеров В этом году часть пользователей предпочла вернуться к привычным покупкам в оффлайн-магазинах....

06 06 2026 11:25:39

Как продвигаться в Instagram, если у вас B2B-бизнес

Как продвигаться в Instagram, если у вас B2B-бизнес Распространенные ошибки продвижения B2B-компаний + стратегии того, как наращивать число активных подписчиков и потенциальных клиентов....

05 06 2026 23:45:52

15 фишек контекстной рекламы — итоги круглого стола 8P 2019

Работающие способы повысить эффективность рекламных кампаний...

04 06 2026 5:11:16

Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::