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



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

Выборы лучшего маркетинг-директора среди украинских проектов ecommerce

Выборы лучшего маркетинг-директора среди украинских проектов ecommerce Голосуй за первых лиц маркетинга ecommerce-проектов Украины...

01 04 2026 20:47:16

Анализ пути в Google ***ytics 4: как ускорить процесс покупки на сайте

Анализ пути в Google ***ytics 4: как ускорить процесс покупки на сайте Анализ пути — это как многокaнaльные последовательности в Universal ***ytics, только лучше....

31 03 2026 20:43:51

Как не слить бюджет на клики? Все, что нужно знать о кликфроде

Как не слить бюджет на клики? Все, что нужно знать о кликфроде Как избежать скликивания — инструкция...

30 03 2026 11:42:45

Рейтинг журнала Time — 11 изобретений, полезных для бизнеса

Рейтинг журнала Time — 11 изобретений, полезных для бизнеса Ноу-хау, интересные для бизнеса, которые вошли в ежегодный рейтинг журнала Time....

29 03 2026 23:38:47

Как сэкономить бюджет на рекламу в Google Ads — 30 тысяч минус-площадок, каналов YouTube, сайтов, приложений

Как сэкономить бюджет на рекламу в Google Ads — 30 тысяч минус-площадок, каналов YouTube, сайтов, приложений Как исключить показы на нецелевых площадках в новом интерфейсе Google Ads. В конце статьи 30 000 минус-площадок, каналов YouTube, сайтов, приложений...

28 03 2026 2:50:14

Продвижение сайта VIN-кодов в США по низкочастотным запросам: рост трафика на 681% за 6 месяцев

Продвижение сайта VIN-кодов в США по низкочастотным запросам: рост трафика на 681% за 6 месяцев Кейс SEO-продвижения в США: рост трафика сайта с помощью низкочастотных запросов....

27 03 2026 10:45:38

Ремаркетинг в поисковой сети Google для ecommerce проекта: ROMI 514%

Ремаркетинг в поисковой сети Google для ecommerce проекта: ROMI 514% В аккаунте ***ytics появилась возможность подключения ремаркетинга в поисковой сети Google. Расскажем о результатах применения инструмента на примере кейса крупного проекта ecommerce....

26 03 2026 14:40:42

KPI в социальных медиа

KPI в социальных медиа Все про kpi охват в социальных медиа или как оценивать эффективность работы SMM-специалиста?...

25 03 2026 1:54:50

Малкольм Гладуэлл о гениях и аутсайдерах

Малкольм Гладуэлл о гениях и аутсайдерах Миллионы решили купить книгу гении и аутсайдеры на Amazon: удивительное исследование канадского журналиста...

24 03 2026 20:49:24

Xsolla — антикейс с увольнением 150 сотрудников. И при чем здесь пунктуация

Xsolla — антикейс с увольнением 150 сотрудников. И при чем здесь пунктуация Мнение Сергея Петренко, CEO компании Odesseya....

23 03 2026 13:12:24

Как настроить рекламу в Facebook Messenger, Instagram Direct и даже WhatsApp

Как настроить рекламу в Facebook Messenger, Instagram Direct и даже WhatsApp Что нужно знать перед запуском рекламы в мессенджерах....

22 03 2026 8:37:40

Почему не стоит покупать в Черную пятницу

Почему не стоит покупать в Черную пятницу Ежегодно в конце ноября начинается ажиотаж вокруг «огромных» скидок на Черную пятницу. Во всем мире этого дня ждут и готовятся покупать выгоднее. Но так ли это на самом деле?...

21 03 2026 19:18:51

Девять месседжей клиенту от агентства интернет-маркетинга

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

20 03 2026 7:57:20

Как настроить передачу уведомлений из Google Calendar в Telegram

Как настроить передачу уведомлений из Google Calendar в Telegram Мануал по созданию удобного планировщика повторяющихся действий....

19 03 2026 6:57:55

Мобильные приложения: как собрать данные на этапе MVP, чтобы было с чем идти к инвестору

Мобильные приложения: как собрать данные на этапе MVP, чтобы было с чем идти к инвестору Как протестировать MVP мобильного приложения, получить обратную связь и сформировать гипотезы...

18 03 2026 16:31:47

Создаем рейтинг CPA-сетей в Украине

Создаем рейтинг CPA-сетей в Украине Опыт коллег и их рекомендации — самая ценная валюта в арбитраже. Давайте объединим усилия и составим актуальный рейтинг СРА-сетей Украины....

17 03 2026 12:32:56

Как с помощью контекстной рекламы мы добились роста брендового трафика на 268% за два года — опыт Kentavar.bg

Как с помощью контекстной рекламы мы добились роста брендового трафика на 268% за два года — опыт Kentavar.bg Повышаем узнаваемость бренда с помощью медийной кампании, а затем отслеживаем результат по запуску поисковой кампании с брендовыми запросами...

16 03 2026 13:44:16

Стадии формирования комaнд по Брюсу Такмену

Стадии формирования комaнд по Брюсу Такмену Перевод статьи о стадиях формирования комaнд по Брюсу Такмену — полезно знать всем....

15 03 2026 3:44:21

11 пpaктически применимых фишек по SEO и арбитражу трафика — итоги круглого стола 8P 2019

11 пpaктически применимых фишек по SEO и арбитражу трафика — итоги круглого стола 8P 2019 Панельная дискуссия, на которой специалисты представляют нестандартные идеи для привлечения трафика, продвижения проектов. Всё, что можно применить на деле. Читать!...

14 03 2026 14:51:31

Контекстная реклама интернет-магазина автотоваров — как снизить траты и увеличить ROMI на 772%

Контекстная реклама интернет-магазина автотоваров — как снизить траты и увеличить ROMI на 772% Изучаем на примере тестирования товарных кампаний в момент смены логотипа и ренейминга...

13 03 2026 0:47:31

Времена меняются: что будет с Википедией в 2030 году?

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

12 03 2026 4:50:50

Как грамотно построить структуру рекламного аккаунта Facebook

Как грамотно построить структуру рекламного аккаунта Facebook Как купить дешевый трафик из Facebook? Образец работы со структурой рекламного аккаунта...

11 03 2026 13:37:47

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

Сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в третьем квартале 2018 года Из нового исследования вы узнаете, сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в третьем квартале 2018 года...

10 03 2026 7:55:51

Как сделать разработчикам приятно — опыт Netpeak

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

09 03 2026 22:38:17

Алгоритмы Инстаграм 2021 — как работает ранжирование в ленте, сториз, Explore, Reels

Алгоритмы Инстаграм 2021 — как работает ранжирование в ленте, сториз, Explore, Reels Как посты и ролики Reels становятся первыми в ленте, сториз, попадают в рекомендации. Instagram впервые напрямую рассказали о том, как оценивают контент....

08 03 2026 10:45:20

Настраиваем Google Рекламу на мобильные приложения

Настраиваем Google Рекламу на мобильные приложения Реклама мобильных приложений. Хотите показывать рекламу в играх? Вам сюда. Узнайте как правильно настроить показ рекламы на мобильных устройствах....

07 03 2026 4:44:36

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

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

06 03 2026 2:15:16

Sitemap.xml или карта сайта — руководство для новичков

Sitemap.xml или карта сайта — руководство для новичков Подробно рассказываем, как создать, внедрить и проверить XML-карту сайта....

05 03 2026 16:37:15

Как продвигать посты в Instagram — пошаговая инструкция для новичков

Алгоритм настройки и запуска рекламы для SMM-, PPC-специалистов, блогеров и владельцев бизнеса....

04 03 2026 23:35:29

Макс Бурцев (Arriba): «Некреативных людей придумало общество»

Макс Бурцев (Arriba): «Некреативных людей придумало общество» О работе, креативности, мотивации и многом другом....

03 03 2026 8:34:39

Как обpaбатывать данные из множества таблиц в Google BigQuery

Как обpaбатывать данные из множества таблиц в Google BigQuery Альтернатива классическому SQL — обработка запросов из множества таблиц с помощью функций подстановки в Google BigQuery....

02 03 2026 13:24:42

Интересные Telegram-каналы о бизнесе

Интересные Telegram-каналы о бизнесе От идеи для стартапа до плана развития и масштабирования бизнеса. Познавательные, полезные каналы, которые помогут реализовать смелые бизнес-цели. Узнать больше!...

01 03 2026 3:24:56

Как увеличить CTR и open rate в email-рассылках: получаем больше переходов на сайт

Как увеличить CTR и open rate в email-рассылках: получаем больше переходов на сайт Делимся советами по оптимизации рассылок. Важны новые форматы писем, предварительное тестирование, смена тем письма, ярче CTA. Все это в сочетании с понятностью и искренностью не заставит ждать хороший CTR...

28 02 2026 5:17:54

Сeкc и эpoтика, магия, тренер-олень, и даже ребус! Апрельская реклама с блоком 18+

Чем шокировала, радовала и удивляла реклама в социальных сетях и контекстная в Google в апреле 2021 года...

27 02 2026 7:43:34

Как с помощью Google Earth собрать контакты для email-рассылок и холодных звонков

Как с помощью Google Earth собрать контакты для email-рассылок и холодных звонков Проверенный способ для сбора базы данных. Метод, с помощью которого можно извлечь контактные данные, а именно: название точки, телефон, адрес, сайт., а потом высылать своё КП, промокоды для акции, сообщить о выходе товара, сделать спецпредложение...

26 02 2026 12:25:20

Как нарисовать скелет сайта

Как нарисовать скелет сайта О создании структуры сайта на основе семантического ядра, работе с Xmind и таблицами онлайн...

25 02 2026 4:54:54

Управление репутацией в сети — особенности работы с отзовиками

Управление репутацией в сети — особенности работы с отзовиками Информация о любой организации распространяется в интернете очень быстро, особенно негативная. Поэтому необходимо учиться управлять своей репутацией....

24 02 2026 17:44:13

Визуализация данных с помощью DataDeck

Визуализация данных с помощью DataDeck Краш-тест сервиса визуализации данных: выбираем задачу, источники, создаём отчет с помощью DataDeck. Бонус в конце — лаконичные списки преимуществ и недостатков этого инструмента и приятный подарок для дочитавших...

23 02 2026 10:28:55

Реклама для интернет-магазина техники — запуск видеокампаний TrueView for Shopping и TrueView for Action

Реклама для интернет-магазина техники — запуск видеокампаний TrueView for Shopping и TrueView for Action Как рекламировать смартфоны в YouTube — советы крупному бизнесу по настройке и запуску эффективной рекламы. Важно: корректный анализ результатов. Узнайте как его сделать!...

22 02 2026 20:24:37

Как составить и анализировать KPI для PR-менеджера

Как составить и анализировать KPI для PR-менеджера PR должен решать задачи бизнеса и для этого мало мониторить упоминания компании или бренда, нужно анализировать. С появлением соцсетей пиар изменился. Узнать больше!...

21 02 2026 21:20:24

Козотерапия, душанбэнгеры, халабуда от Rozetka и капля трэша: майская реклама

Козотерапия, душанбэнгеры, халабуда от Rozetka и капля трэша: майская реклама Чем радовала, удивляла и шокировала таргетированная реклама в социальных сетях...

20 02 2026 9:56:19

Кейс по выводу из фильтра Google Panda интернет-магазина отопительной и водоснабжающей техники: ROMI 338%

Кейс по выводу из фильтра Google Panda интернет-магазина отопительной и водоснабжающей техники: ROMI 338% Признаки того, что магазин находится под фильтром и шаги по выводу из него...

19 02 2026 23:57:50

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

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

18 02 2026 1:18:44

Кейс по email-маркетингу для интернет-магазина книг Book24 — рост дохода в 2 раза

Кейс по email-маркетингу для интернет-магазина книг Book24 — рост дохода в 2 раза Когда email-маркетинг становится точкой роста. Кейс интернет-магазина книг Book24....

17 02 2026 1:44:57

Правила здорового сна от Мэтью Уокера

Правила здорового сна от Мэтью Уокера Привыкли к недосыпу и жизни «на кофе»? Вы, конечно же, понимаете, что это не дело. Но осознаете ли насколько? Если нет, почитайте....

16 02 2026 23:11:50

Как создать крутую комaнду фрилансеров

Как создать крутую комaнду фрилансеров Где и как разработчик может подобрать ответственных удаленщиков, как составить техническое задание, чем контролировать качество работы...

15 02 2026 9:37:38

18 способов собрать базу подписчиков для email-рассылок

18 способов собрать базу подписчиков для email-рассылок Будьте полезны, будьте удобны и будьте везде. Далее подробно — 18 способов собрать базу для email-рассылок. О пользе бесплатного, привлечении внимания, возможных активностях для аудитории, социальных доказательствах, предсказуемости, работе с Facebook и многом другом...

14 02 2026 12:16:48

Таргетированная реклама — что это, принцип работы и как настроить правильно

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

13 02 2026 11:28:50

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

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

12 02 2026 22:47:53

25 фактов про Google Рекламу

Интересные факты про Google Рекламу перевел Сергeй Бахарь для читателей нашего блога....

11 02 2026 21:12:26

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