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-ом. Если вы обнаружили здесь неактуальную информацию, напишите об этом в комментариях.



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

Как найти и закрыть внешние спамные ссылки — подробная инструкция

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

02 11 2026 8:39:25

Как настроить божественные списки ремаркетинга с помощью GTM

Как настроить божественные списки ремаркетинга с помощью GTM Несколько фишек Google Tag Manager, чтобы сделать продвинутые списки ремаркетинга....

01 11 2026 8:16:47

Падение Facebook: о чем задуматься пользователям «больших сайтов»

Падение Facebook: о чем задуматься пользователям «больших сайтов» О чем стоит задуматься владельцам бизнеса и пользователям больших сайтов и почему Марку Цукербергу надо брать пример с телефонных сетей...

31 10 2026 0:45:57

50 самых ужасных сайтов

Лихие девяностые и самые ужасные сайты интернета: образцы, примеры, оформление....

30 10 2026 7:45:15

Как новостная лента Facebook предсказывает то, что вы хотите увидеть?

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

29 10 2026 17:42:10

Как создать чат-бот для Telegram-канала — инструкция для администраторов

Как создать чат-бот для Telegram-канала — инструкция для администраторов Как с помощью ботов ControllerBot и BotFather упростить управление каналами и разнообразить контент....

28 10 2026 3:49:17

Кейс: настраиваем ремаркетинг на брошенную корзину

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

27 10 2026 15:59:32

Как настроить тег конверсий Google Ads

Как настроить тег конверсий Google Ads Устанавливаем тег конверсий: самостоятельно и с помощью Google Tag Manager....

26 10 2026 14:27:59

Как арбитражнику получить правильную статистику конверсий из контекстной рекламы

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

25 10 2026 7:44:54

Список Telegram-ботов для SMM-специалиста

Список Telegram-ботов для SMM-специалиста Лайфхаки, как упростить работу с соцсетями от специалиста агентства Netpeak и ежедневной работы SMM-специалиста. Телеграм-боты, которые облегчат рутину и сэкономят время. Узнать больше!...

24 10 2026 21:52:33

Как компании контролируют сотрудников в соцсетях. Три кейса

Как компании контролируют сотрудников в соцсетях. Три кейса К социальным сетям уже нельзя относиться, как к сугубо личному прострaнcтву?...

23 10 2026 23:13:29

Миссия компании и как ее выполнить — кейс Netpeak

Миссия компании: делимся опытом создания и реализации в компании с 300 сотрудниками...

22 10 2026 16:28:57

Как реклама на поиске Яндекса и в РСЯ помогла вдвое снизить цену конверсии — кейс Mechta.kz

Как реклама на поиске Яндекса и в РСЯ помогла вдвое снизить цену конверсии — кейс Mechta.kz Настроить контекстную рекламу для сети гипермаркетов бытовой техники и электроники Mechta.kz...

21 10 2026 4:49:41

SEMRUSH. Шпионаж за конкурентами при раскрутке сайтов

SEMRUSH. Шпионаж за конкурентами при раскрутке сайтов Обзор ресурса по подбору ключевых запросов www.SEMRUSH.com на Netpeak.ua...

20 10 2026 4:30:24

Как написать письмо с благодарностью

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

19 10 2026 4:10:32

Беседа Netpeak с клиентом — отвечаем на вопрос «как оценить эффективность агентства»

Беседа Netpeak с клиентом — отвечаем на вопрос «как оценить эффективность агентства» Взяли интервью у нашего клиента — магазина климатической техники Mircli.ru. Поговорили о том, как клиенту и подрядчику лучше взаимодействовать....

18 10 2026 19:46:47

Инфографика: как именно рулит контент

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

17 10 2026 20:53:45

Что такое логическая структура сайта и зачем она нужна

Что такое логическая структура сайта и зачем она нужна Базовые знания, которые нужны, чтобы ресурс понравился поисковикам и пользователям....

16 10 2026 1:51:28

13 фишек маркетинга и продвижения проектов за рубежом — круглый стол 8P 2017

13 фишек маркетинга и продвижения проектов за рубежом — круглый стол 8P 2017 «Нет, нам нужна раскрутка и точка!» Список маркетинговых пpaктически применимых фишек....

15 10 2026 7:39:19

10 неочевидных функций приложения для скриншотов KISS

10 неочевидных функций приложения для скриншотов KISS Опции скриншутера, которые упростят вам жизнь....

14 10 2026 16:33:29

Какую роль играют запахи?

Какую роль играют запахи? Аромамаркетинг. Почему В Нью-Йоркских магазинах Samsung пахнет медовой дыней, в British Airways — луговыми травами. Что мы знаем о восприятии нами сенсорной информации, а конкретно — ароматов. Читать дальше!...

13 10 2026 18:32:10

Дублирование контента на сайтах, ориентированных на разные страны

Дублирование контента на сайтах, ориентированных на разные страны Дублирование контента на разных сайтах, ориентированных на рынки разных стран, например, на публику Канады...

12 10 2026 13:50:22

Кейс по контекстной рекламе в тематике «детская обувь»: ROMI 110%

Кейс по контекстной рекламе в тематике «детская обувь»: ROMI 110% Магазин детской обуви: конкретные цифры в кейсе по продвижению....

11 10 2026 17:25:40

Как сделать в Google Web Designer анимированные баннеры для рекламных кампаний

Как сделать в Google Web Designer анимированные баннеры для рекламных кампаний Простая инструкция для новичков, как легко создать анимированные баннеры для рекламных кампаний с помощью бесплатного инструмента Google Web Designer. При создании баннера сервис предложит создать файл с нуля либо использовать шаблон. Узнайте обо всех возможностях!...

10 10 2026 7:30:22

Анализ контента в социальных сетях: цифры, цифры и еще раз цифры

Анализ контента в социальных сетях: цифры, цифры и еще раз цифры Что нам дают знания о статистике контента в социальных сетях и какими сервисами анализировать данные...

09 10 2026 5:41:34

Как добавить видео на Youtube с телефона. Пошаговая инструкция

Как добавить видео на Youtube с телефона. Пошаговая инструкция Будь мобильным — заливай видео на Youtube с телефона...

08 10 2026 18:43:39

Как создать отчет по категориям и брендам в Google Data Studio, если они не передаются в Google ***ytics

Как создать отчет по категориям и брендам в Google Data Studio, если они не передаются в Google ***ytics Как настроить передачу категории и бренда товара в Google Data Studio....

07 10 2026 2:55:10

Как узнать, было ли прочитано ваше письмо адресатом?

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

06 10 2026 8:40:14

Нестандартные форматы баннеров в Google Marketing Platform

Нестандартные форматы баннеров в Google Marketing Platform Краткий обзор динамических мультимедийных объявлений...

05 10 2026 16:25:19

Как запустить контекстную рекламу в Google Ads — руководство для малого бизнеса

Как запустить контекстную рекламу в Google Ads — руководство для малого бизнеса Что такое контекстная реклама? Настраиваем рекламу в поиске Google...

04 10 2026 20:47:30

Бизнес-фреш: что такое digital и чем это отличается от SMM (продвижения в социальных сетях)

Бизнес-фреш: что такое digital и чем это отличается от SMM (продвижения в социальных сетях) «Что такое диджитал и чем это отличается от услуги продвижения в социальных сетях» — о цифровой стратегии, креативных концепциях и том, как это все происходит в крупных агентствах....

03 10 2026 23:12:46

Как настроить таргетинг для рекламы в Instagram и Facebook

Как настроить таргетинг для рекламы в Instagram и Facebook Запускаем первую таргетированную рекламу. Мы составили инструкцию для начинающих таргетолов, а также для SMM-специалистов, которым регулярно нужно рекламировать товары и услуги. Читайте подробнее!...

02 10 2026 11:21:26

Как привлечь дополнительный трафик с помощью SNDS-кампаний — кейсы Netpeak

Как привлечь дополнительный трафик с помощью SNDS-кампаний — кейсы Netpeak Как получить больше конверсионного трафика из поиска и не выйти за рамки KPI? Запустите SNDS-кампании...

01 10 2026 7:25:44

6 эффективных приемов работы в Директ Коммaндере

6 эффективных приемов работы в Директ Коммaндере Быстрые ссылки и другие советы на тему того, как эффективно работать в Директ Коммaндере....

30 09 2026 12:52:24

10 способов увеличить количество заявок с корпоративного сайта

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

29 09 2026 13:52:44

Кейс по контекстной рекламе в Google Ads в тематике «автотюнинг»: ROMI 30%

Кейс по контекстной рекламе в Google Ads в тематике «автотюнинг»: ROMI 30% Эффективность контекстной рекламы в тематике «тюнинг автомобилей»....

28 09 2026 16:20:36

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

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

27 09 2026 1:37:11

Как работает программатик-баинг

Небольшая wiki о программатик-баинг и RTB. Объяснение алгоритма, обзор рынка, мнения экспертов....

26 09 2026 13:36:46

Как построить сводные таблицы в Excel, LibreOffice, OpenOffice и таблицах Google

Как построить сводные таблицы в Excel, LibreOffice, OpenOffice и таблицах Google Аналитик Netpeak Алексей Селезнев рассказал, как составить и пользоваться сводными таблицами онлайн в excel и за считанные секунды выделить нужные для анализа данные из десятков тысяч строк в отчетах Google ***ytics...

25 09 2026 10:30:20

Что такое фишинговая ссылка и как проверить сайт на её наличие

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

24 09 2026 15:45:28

Каково это — работать в Google

Каково это — работать в Google О том, как работают, празднуют, танцуют и в какой корпоративной культуре живут сотрудники корпорации Google. Этот пост развеет кое-какие мифы....

23 09 2026 19:58:40

Как проанализировать эффективность страницы бренда в Facebook

Как проанализировать эффективность страницы бренда в Facebook Бренду нужно зайти на Фейсбук? Несколько очень полезных советов об измерении эффективности SMM....

22 09 2026 2:27:20

Email-маркетинг для интернет-магазина — как настроить, чтобы получить от 7 до 15% общего дохода

Email-маркетинг для интернет-магазина — как настроить, чтобы получить от 7 до 15% общего дохода Email-маркетинг увеличивает частоту транзакций. Показываем как это происходит и за счет чего. Делимся кейсом email-маркетинга для книжного интернет-магазина. Читать дальше....

21 09 2026 14:51:34

Восемь советов успешного запуска рекламной кампании в myTarget

Восемь советов успешного запуска рекламной кампании в myTarget Делимся фишками, которые облегчат работу как новичкам, так и специалистам....

20 09 2026 15:19:11

Long-tail SEO — как продвигаться по низкочастотным запросам и зачем это нужно

Long-tail SEO — как продвигаться по низкочастотным запросам и зачем это нужно Относящиеся к низкочастотным long-tail запросы при правильном подходе могут стать эффективным инструментом для увеличения трафика. Рассказываем почему, а главное — как....

19 09 2026 17:35:45

Как METRO отказалась от печатных каталогов

Как METRO отказалась от печатных каталогов Как METRO Cash & Carry Украина нашла индивидуальный подход к 1 000 000 клиентов....

18 09 2026 10:23:41

Как работать с товарными фидами в Google Рекламе и Яндекс.Директ

Как работать с товарными фидами в Google Рекламе и Яндекс.Директ Образец товарного фида можно использовать при запуске динамических объявлений в поисковой сети Яндекса и Google, в кампаниях со смарт-баннерами в Яндекс.Директ, в динамических медийных кампаниях Google Рекламы, в товарной рекламе — с помощью Google Merchant Center....

17 09 2026 9:17:22

Clubhouse — как создать комнату, клуб и удалить спящего

Clubhouse — как создать комнату, клуб и удалить спящего Возможности и перспективы Clubhouse, лайфхаки для пользователей и бонус в конце...

16 09 2026 10:57:40

Рейтинг CPA-сетей в Украине — лучшие партнерки по мнению читателей

Рейтинг CPA-сетей в Украине — лучшие партнерки по мнению читателей Лидеров определили открытым голосованием. В ТОП-списки вошли CPA-сети, которые набрали больше всего голосов суммарно и по отдельным критериям....

15 09 2026 16:34:46

Внутренние факторы ранжирования — как сделать сайт понятным для поисковых систем

Внутренние факторы ранжирования — как сделать сайт понятным для поисковых систем Краткая инструкция для новичков. Структура сайта, внутренняя перелинковка, юзабилити, контент, оптимизация тегов и заголовков, HTTPS, скорость загрузки сайта, mobile friendly и другие. Узнать больше!...

14 09 2026 1:28:56

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