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



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

Сколько стоил клик в Google Ads в первом квартале 2017

Сколько стоил клик в Google Ads в первом квартале 2017 Анализ цены за клик в 25 тематиках и 852 городах Украины, России, Казахстана, Болгарии...

20 05 2026 20:59:26

Как выбрать нишу для информационного сайта

Узкие специализированные ниши и широкие, которые, как правило, уже заняты лидерами рынка — в каждой найдется место для онлайн-издания с полезным контентом. Узнать больше!...

19 05 2026 10:57:59

Сайт загружается медленно: когда не нужно паниковать

О неправильных тpaктовках отчета по времени загрузки страниц сайта в ***ytics...

18 05 2026 9:38:53

Буба и кики — тест для развития креативного мышления

Буба и кики — тест для развития креативного мышления На этой картинке изображены два предмета. Один из них называется «буба», а второй «кики»....

17 05 2026 19:39:31

MEGOGO, Google, Фокстрот и AIR Brands — как бренды создают эффективный видеоконтент

MEGOGO, Google, Фокстрот и AIR Brands — как бренды создают эффективный видеоконтент Бренды поделились инсайтами на ДиВи Конф — фишки от MEGOGO, Google, TikTok, Banda, McCann, I am IDEA, AIR Brands, Rocket и Фокстрот...

16 05 2026 22:34:22

Как за месяц получить 60 тысяч подписчиков для мобильной аудитории сайта: сотрудничество Gravitec.net и F.ua

Как за месяц получить 60 тысяч подписчиков для мобильной аудитории сайта: сотрудничество Gravitec.net и F.ua «Случайный» посетитель потому, что может уйти (не сделав покупку) и не вернуться, не стать клиентом. Пуш-уведомления позволяют посетителю сразу стать подписчиком: ему предлагают подписаться на рассылку. Как это использовать? Читайте!...

15 05 2026 4:49:57

Как настроить воронку продаж через Google Tag Manager

Как настроить воронку продаж через Google Tag Manager Устраняем причины, по которым пользователи покидают сайт без покупки....

14 05 2026 4:46:10

Правила работы с отзывами клиентов — памятка для брендов

Правила работы с отзывами клиентов — памятка для брендов От наличия отзывов зависит решение клиента купить товар или заказать услугу. Как правильно работать с репутацией? Разбираемся...

13 05 2026 21:44:49

Девять фишек для онлайн-бизнеса: итоги круглого стола Netpeak Friends Day в Казахстане

Девять фишек для онлайн-бизнеса: итоги круглого стола Netpeak Friends Day в Казахстане Девять свежих советов для продвижения интернет-магазинов...

12 05 2026 5:33:51

Создание простой темы для WordPress

Простые пошаговые советы о том, как самому сделать верстку шаблона Wordpress. От вас не требуется знание PHP, но хорошо если вы владеете Photoshop и CSS для создания дизайна. Узнать больше!...

11 05 2026 21:36:52

Как увеличить коэффициент конверсии до 3,53% благодаря массовым рассылкам — кейс Artbooks

Как увеличить коэффициент конверсии до 3,53% благодаря массовым рассылкам — кейс Artbooks Мы запустили email с нуля и стали получать стабильный ежемecячный доход....

10 05 2026 16:33:28

Как написать статью о компании

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

09 05 2026 22:17:54

Время, в которое мы живём — лучшее в истории. Давайте это замечать!

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

08 05 2026 18:46:43

Песочницы контента: как публиковать статьи и получать за это клиентов

Песочницы контента: как публиковать статьи и получать за это клиентов Как получить трафик из песочниц контента в популярных изданиях....

07 05 2026 4:20:20

Сколько заpaбатывают интернет-маркетологи? Рейтинг зарплат за второе полугодие 2018

Сколько заpaбатывают интернет-маркетологи? Рейтинг зарплат за второе полугодие 2018 Комaнда Serpstat провела исследование среди интернет-маркетологов и создала виджет, который рассчитывает среднюю зарплату на основе опыта, навыков и знаний специалистов. Что из этого получилось, читаем в статье....

06 05 2026 19:38:42

Outreach — что это такое и как наладить процесс продвижения

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

05 05 2026 18:34:37

Как получить ещё больше от рекламы в Facebook: семь новых фишек

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

04 05 2026 9:40:47

Что такое SEO и зачем нужна поисковая оптимизация

Что такое SEO и зачем нужна поисковая оптимизация Основные этапы раскрутки сайта. Что такое и как работает поисковая оптимизация, ее виды, особенности, преимущества...

03 05 2026 5:57:17

Что такое 500 Internal Server Error

Что такое 500 Internal Server Error Ошибка, которая может привести к полной потере контроля над вашим сайтом. Рассказываем, что это такое, какие могут быть причины поломки и как исправить. Узнать больше!...

02 05 2026 23:14:45

Выбираем оффер правильно: инструкция для начинающего арбитражника

От того, что такое оффер до лучших стратегий и избежания ошибок...

01 05 2026 15:22:23

Как запустить R и R Studio в Google Cloud Platform

Как запустить R и R Studio в Google Cloud Platform Используем возможности Google Cloud Platform в работе с R...

30 04 2026 18:47:31

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

Как быстро составить карту редиректов для дроп-домена Чтобы проставить 301 редиректы, вначале надо выгрузить весь список топовых страниц по обратным ссылкам...

29 04 2026 7:20:16

Кейс по контекстной рекламе портала-каталога организаций: как оптимизация целевых страниц повлияла на поведенческие факторы

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

28 04 2026 10:31:57

Продвижение недвижимости: как снизить стоимость заявки на 46% — кейс

Продвижение недвижимости: как снизить стоимость заявки на 46% — кейс Работа с умными рекламными кампаниями с оплатой за конверсии в контекстно-медийной сети. Особенности настройки и оптимизации в кейсе продвижения недвижимости. Узнать больше!...

27 04 2026 10:21:40

Бизнес в Китае: история и реалии мирового лидера Tencent

Бизнес в Китае: история и реалии мирового лидера Tencent Tencent — китайская компания, мировой лидер в сфере игр. Все о создании компании, доходах, прибыли, инвестициях. Особенности ведения бизнеса в Китае — в пересказе статьи Паки Маккормик. Читать дальше!...

26 04 2026 2:53:27

Что такое сопли (Google Supplemental) и как проверить сайт на их наличие

Что такое сопли (Google Supplemental) и как проверить сайт на их наличие Supplemental results, они же «сопли» или дополнительные результаты — страницы и документы сайта, которые не находятся в основном индексе Google...

25 04 2026 15:48:20

Engagement Rate в email-маркетинге: что это, как посчитать и повысить

Engagement Rate в email-маркетинге: что это, как посчитать и повысить Определяем, кто из mail подписчиков предан вашему бренду по-настоящему....

24 04 2026 21:47:13

Массовые изменения в Google Ads Editor

При работе с рекламным аккаунтом приходится вносить много однотипных изменений. Рассказываем, как сделать это быстро....

23 04 2026 15:14:28

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

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

22 04 2026 10:28:41

Кейс по продвижению интернет-магазина цветов: ROMI 187%

Кейс по продвижению интернет-магазина цветов: ROMI 187% SEO для цветочных магазинов с оплатой за трафик и полученные результаты...

21 04 2026 16:34:44

LinkedIn для SaaS-сервисов: почему это выгодно?

LinkedIn для SaaS-сервисов: почему это выгодно? Обычно SaaS-бизнесы начинают привлечение лидов с запуска рекламы на Facebook. Но наш опыт говорит о том, что это не самые подходящие каналы. Более высокие результаты можно получить на LinkedIn....

20 04 2026 15:49:14

Культурный шок, Горько 3, или Зимний корпоратив Netpeak Group

Культурный шок, Горько 3, или Зимний корпоратив Netpeak Group Больше пятисот человек из Украины, России, Болгарии и Казахстана. Я зашел в зал и увидел толпу каких-то гопарей и воровайок родом из 90-х, а само помещение было оформлено под свадьбу. Выпьем за молодых!...

19 04 2026 2:40:38

Обзор Netpeak Checker 2.1 — мультифункционального инструмента для массового анализа и сравнения сайтов

Обзор Netpeak Checker 2.1 — мультифункционального инструмента для массового анализа и сравнения сайтов Netpeak Checker – это мультифункциональный инструмент для массового анализа и сравнения сайтов, который помогает выполнять самые разнообразные задачи в области интернет-маркетинга....

18 04 2026 11:46:50

Как продать кровати в Facebook — кейс магазина мебели matrason.ua

Результаты кампании динамического ремаркетинга для соцсетей...

17 04 2026 3:26:33

Сколько стоил клик в Google Ads в Украине в четвертом квартале 2020 года — исследование Netpeak

Данные, приведенные в исследовании, могут помочь в составлении медиапланов по продвижению в интернете. Читать дальше....

16 04 2026 20:40:10

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

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

15 04 2026 7:29:36

Как отслеживать ускоренные мобильные страницы (AMP) в Google ***ytics

Что такое ускоренные мобильные страницы и как их посмотреть в Google ***ytics...

14 04 2026 10:19:20

Работа с автоматическими типами кампаний на Facebook

Работа с автоматическими типами кампаний на Facebook Как вести рекламные кампании и что делать на разных этапах настройки. Делимся опытом: примерами, кейсами и рекомендациями. Узнать больше и настроить свои РК, как боженька!...

13 04 2026 6:18:17

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

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

12 04 2026 2:58:31

SEO-среда: 7 способов улучшить поведенческие факторы сайта

SEO-среда: 7 способов улучшить поведенческие факторы сайта Совет Константина Леоновича (Sape.ru), 4 наших + 2 бонусных...

11 04 2026 6:40:41

Как менее чем за два года увеличить органический трафик на 162% и транзакции на 85%. Кейс masterzoo.ua

Как менее чем за два года увеличить органический трафик на 162% и транзакции на 85%. Кейс masterzoo.ua Мы сменили CMS, не просев в трафике, и превратили каталог товаров в полноценный интернет-магазин....

10 04 2026 17:40:33

Как работать с закладками в Power BI — подробное руководство

Как работать с закладками в Power BI — подробное руководство В этой статье я покажу пример визуальной работы с закладкой и пошагово разберу процесс их создания и применения для удобства визуализации данных...

09 04 2026 23:54:42

Неочевидные причины блокировки аккаунта в Google Merchant Center

Неочевидные причины блокировки аккаунта в Google Merchant Center Как без проблем пересылать данные в Google Покупки....

08 04 2026 13:34:41

Как мотивировать клиентов оставить отзыв

Как мотивировать клиентов оставить отзыв Лестные отзывы от клинта в интернете невозможно переоценить. Если вы владелец малого бизнеса и только разpaбатываете и внедряете свою маркетинговую стратегию, книга «По рекомендации» будет вам полезной...

07 04 2026 19:49:59

Как получать удовольствие от жизни. Советы из книги «Поток»

Как получать удовольствие от жизни. Советы из книги «Поток» Психологический бестселлер. Как достичь гармонии во всех делах и начать получать удовольствие от жизни, — об этом читайте в новой рецензии Константина Рябенко на книгу Михая Чиксентмихайи «Поток»....

06 04 2026 21:49:23

Оптимизация ремаркетинга в Facebook — подробное руководство

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

05 04 2026 6:30:10

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

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

04 04 2026 6:50:39

Портрет украинского фрилансера — исследование Freelancehunt.

Портрет украинского фрилансера — исследование Freelancehunt. Ежегодный прирост рынка фриланса в Украине составляет в среднем 35%. В прошлом году зарегистрировано более 200 тысяч проектов на общую сумму 385 млн гривен....

03 04 2026 17:18:14

Аутсорсинг в Украине — интервью с Женей Розинским о способах развития IT-нации

Аутсорсинг в Украине — интервью с Женей Розинским о способах развития IT-нации Айти эксперт Женя Розинский о том, почему нацию айти развивают продуктовые бизнесы, а не outsourcing сервисы...

02 04 2026 14:53:56

Кейс по email-маркетингу для интернет-магазина подарков — ROMI 100%

Кейс по email-маркетингу для интернет-магазина подарков — ROMI 100% Direct way. Как вложить 200 у.е. и получить 800 у.е....

01 04 2026 19:24:13

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