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



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

Списки в Twitter: зачем составлять и как вынести пользу

Списки в Twitter: зачем составлять и как вынести пользу В Twitter удобно собрать список потенциальных клиентов, чтобы время от времени посматривать за их новостями...

18 01 2025 5:27:30

Как мы подняли МRR с нуля до 24 тысяч долларов без бюджета, комaнды и маркетинговой стратегии

Как мы подняли МRR с нуля до 24 тысяч долларов без бюджета, комaнды и маркетинговой стратегии Опыт стартапа Paperform для стартаперов, которые боятся начать из-за ограниченного бюджета и/или отсутствия знаний в маркетинге. Надеемся, эта история вдохновит предпринимателей и поможет меньше сомневаться на счет запуска без бюджета....

17 01 2025 17:40:30

Как подключить API Google Search Console к Google Таблицам

Как подключить API Google Search Console к Google Таблицам Новая инструкция, которую можно применять к любым задачам в Google Таблицах....

16 01 2025 2:49:17

Контент-маркетинг на США: 51 публикация за 5 месяцев

Контент-маркетинг на США: 51 публикация за 5 месяцев Кейс: контент-маркетинг сервиса в США, или как SerpStat покорил англоязычный мир...

15 01 2025 13:32:29

Какие посты заходят и почему торг уместен — итоги продвижения телеграм-канала «Артём Бородатюк» за 2021 год

Какие посты заходят и почему торг уместен — итоги продвижения телеграм-канала «Артём Бородатюк» за 2021 год Делимся итогами продвижения телеграм-канала «Артём Бородатюк» за 2021 год...

14 01 2025 4:21:54

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

Сколько стоил клик в Google Ads в Украине в третьем квартале 2020 года — исследование Netpeak Данные, приведенные в исследовании, помогут в составлении медиапланов по продвижению в интернете. Понимания стоимость конверсии и необходимое количество конверсий, вы можете прогнозировать, сколько денег на рекламу нужно выделить....

13 01 2025 17:15:54

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

Краткое пособие для новичков по типам рекламных кампаний в Google Ads Google Adwords: типы рекламных кампаний и объявлений, тонкостях настройки... Все, о чем вы боялись спросить... Или не боялись, а просто не знали, о чем спрашивать....

12 01 2025 6:19:13

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

4 кейса с шагами, рекомендациями и результатами, которые помогут грамотно распределить средства на рекламу....

11 01 2025 15:19:46

Основные виды контента и правила оформления в зависимости от вида

Контент может информировать, вовлекать и продавать, при этом для каждой цели нужен свой тип контента...

10 01 2025 15:38:24

Реклама в Google Shopping для сайта б/у техники — рост продаж на 280% за 8 месяцев

Реклама в Google Shopping для сайта б/у техники — рост продаж на 280% за 8 месяцев Как продавать новую и б/у технику, ювелирные изделия в интернете. Эксперимент показал, что в Google Shopping можно продавать не только новые товары. Узнать больше!...

09 01 2025 12:53:23

Как загрузить данные из API Google ***ytics в R: часть 2

Пример использования пакета google***yticsR от Марка Эдмондса...

08 01 2025 11:23:45

Сколько стоил клик в Google Ads и Facebook в Украине в первом квартале 2019 года

Сколько стоил клик в Google Ads и Facebook в Украине в первом квартале 2019 года Данные по 42,5 млн кликов в 25 тематиках и 391 городу...

07 01 2025 8:59:32

Как вернуть украденный аккаунт Instagram

Как вернуть украденный аккаунт Instagram Короткий кейс и рекомендации по защите аккаунта от взлома....

06 01 2025 3:32:46

Как объединить источники данных в Google Data Studio

Как объединить источники данных в Google Data Studio Как пользоваться «Совмещением данных» с учетом всех особенностей инструмента...

05 01 2025 1:17:18

7 признаков хорошего отдела по работе с клиентами

7 признаков хорошего отдела по работе с клиентами Структура того, чем обладают сотрудники департаментов работы с клиентами лучших компаний....

04 01 2025 7:59:51

Главред блога Netpeak про управление задачами и собой

Главред блога Netpeak про управление задачами и собой Неля Серебро рассказывает про внутреннюю кухню блога Netpeak...

03 01 2025 13:11:39

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

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

02 01 2025 13:22:34

Один из самых популярных мессенджеров в мире: продвигаемся в Telegram

Один из самых популярных мессенджеров в мире: продвигаемся в Telegram Правила, законы, платное и бесплатное продвижение в Telegram...

01 01 2025 10:19:24

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

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

31 12 2024 12:51:24

Где лучше догонять пользователей: в Facebook или Google Рекламе — кейс интернет-магазина

Где лучше догонять пользователей: в Facebook или Google Рекламе — кейс интернет-магазина При использовании похожих инструментов важно не переборщить с количеством рекламы...

30 12 2024 20:35:54

Результаты рейтинга зарплат специалистов в сфере интернет-маркетинга за первое полугодие 2018

Результаты рейтинга зарплат специалистов в сфере интернет-маркетинга за первое полугодие 2018 SEO-специалисты в Киеве получают в два раза больше, чем жители других городов Украины. Middle лидирует среди должностей как PPC, так и SEO-специалистов. Самая высокооплачиваемая должность — Head of PPC $1900. Узнать больше!...

29 12 2024 11:42:51

200 лучших минус-слов в Google Рекламе

200 лучших минус-слов в Google Рекламе Список минус-слов для Google Рекламы для B2B сайтов....

28 12 2024 10:27:41

Настраиваем особые правила в AdWords Editor

Настраиваем особые правила в AdWords Editor Функционал для специалистов и новичков: как настраивать особые правила. Знания, которые помогают предотвратить грубые ошибки в рекламе товаров и услуг. Читать дальше!...

27 12 2024 18:12:34

Почему я уволился из SEO-агентства

Почему я уволился из SEO-агентства Перед обращением за услугами продвижения задайте себе вопрос: готов ли я выделить львиную долю своего времени и сил на серьезное развитие проекта? При отрицательном ответе не стоит и начинать. И другие вопросы о SEO-продвижении...

26 12 2024 4:35:30

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

Разбор типичных ошибок в рекламе Google Shopping как обязательного инструмента рекламы в Google. О минус-словах, геолокации, структуре сайта и обновлении объявлений. Что именно важно? Читайте дальше!...

25 12 2024 14:33:11

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

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

24 12 2024 13:36:17

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

Сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане во втором квартале 2019 года Алексей Селезнев, руководитель отдела аналитики Netpeak делится статистикой по самым дорогим и самым дешевым тематикам, регионам размещения рекламы, каналам и устройствам. Узнать больше!...

23 12 2024 20:36:31

White paper: что за маркетинговый зверь?

Хороший пост с примерами продающих «Белых книг»....

22 12 2024 23:11:45

Какой сервис крауд-маркетинга выбрать

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

21 12 2024 5:13:24

Что такое умные торговые кампании и как они работают

Спойлер: чтобы получить наилучший результат с наименьшими усилиями и затратами времени....

20 12 2024 1:57:50

Корпоративный блог. Каким он должен быть и примеры для подражания

Корпоративный блог. Каким он должен быть и примеры для подражания Подборка корпоративных медиа, попав на страницы которых, не хочется их покидать....

19 12 2024 23:21:10

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

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

18 12 2024 23:44:20

Как мы увеличили ROMI на 433% в рентабельных рекламных кампаниях: кейс интернет-магазина ФК «Динамо» (Киев)

Как мы увеличили ROMI на 433% в рентабельных рекламных кампаниях: кейс интернет-магазина ФК «Динамо» (Киев) Фубольный клуб. Как увеличить ROMI (возврат маркетинговых инвестиций) в рекламных кампаниях — рассказываем на примере киевского интернет-магазина «Динамо»...

17 12 2024 21:40:49

Как не платить за клики без конверсий?

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

16 12 2024 20:40:28

Когортный анализ в Google ***ytics: пошаговая инструкция

Когортный анализ в Google ***ytics: пошаговая инструкция Когорта в google ***ytics позволяет снять любые претензии в духе «прошел уже целый месяц, где результаты»....

15 12 2024 4:57:41

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

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

14 12 2024 12:26:56

Первопроходцы в нише ремонта мобильных телефонов в Казахстане — история Satel.kz

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

13 12 2024 0:17:11

Как выбрать редактора для корпоративного сайта

Как выбрать редактора для корпоративного сайта Нужен ли вашему проекту редактор? Как правильно его выбрать и оценить на собеседовании, а затем и в процессе работы?...

12 12 2024 13:19:52

23 фишки контекстной рекламы — итоги круглого стола экспертов РИФ

Интересные маркетинговые методы, эффективные профессиональные хитрости и много другое прозвучало на круглом столе по фишкам контекстной рекламы...

11 12 2024 3:13:15

Как провести аудит рекламных кампаний в Google Ads

Как провести аудит рекламных кампаний в Google Ads Повышаем эффективность рекламных кампаний. Как рекламодателю-новичку самостоятельно провести аудит своих кампаний в Google Ads, а также про наиболее частые ошибки новичков, связанные с работой и аудитами кампаний в Google Ads. Читайте дальше!...

10 12 2024 12:29:12

Как настроить автоматическое обновление отчетности из Google ***ytics, Google Search Console и Serpstat

Как настроить автоматическое обновление отчетности из Google ***ytics, Google Search Console и Serpstat SEO-dashboard для сбора данных в Google-таблицы и отправка отчетов по email. Решение, которое поможет заметить глобальные изменения в потоках трафика. Узнать больше!...

09 12 2024 16:18:34

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

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

08 12 2024 8:48:22

Как найти фейковые 404 страницы с помощью Google Tag Manager

Как найти фейковые 404 страницы с помощью Google Tag Manager Как помешать фейковым 404 страницам испортить статистику вашего сайта?...

07 12 2024 9:57:58

Разбираем архетипические образы в рекламе

Разбираем архетипические образы в рекламе Хорошая история состоит из узнаваемых образов, которые вызывают у пользователя ассоциации с личными переживаниями....

06 12 2024 9:31:26

Как добиваться от подчинённых выполнения поручений

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

05 12 2024 4:53:14

Линкбилдинг для элитной клиники в США: плюс 528% к количеству звонков за два года

Линкбилдинг для элитной клиники в США: плюс 528% к количеству звонков за два года Адаптивный линкбилдинг: будьте полезны людям, а не поисковикам....

04 12 2024 20:53:31

Как устроен маркетинг в OLX.ua — рассказывает Marketing Director Алексей Ломоносов

Не стучитесь к Алексею на ФБ с предложением что-то придумать для бренда. У Ломоносова целый тред таких непрочитанных сообщений. Узнать больше....

03 12 2024 11:21:35

Как отслеживать работу PBN и оперативно реагировать на изменения

Как отслеживать работу PBN и оперативно реагировать на изменения Как контролировать множество сайтов — полезные сервисы и советы для вебмастеров. Одно дело — несколько десятков сайтов, а что если сотни или тысячи? Как раз это подробно и разберем....

02 12 2024 6:11:46

Как оптимизировать страницу 404

Как оптимизировать страницу 404 Значит так, делаем из лимонов лимонад — «выжимаем» максимум из ошибки 404...

01 12 2024 1:20:59

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

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

30 11 2024 15:36:16

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