Добавьте одну строку SQL для оптимизации ваших таблиц BigQuery

Оптимизируйте таблицы BigQuery с помощью одной SQL-строки

Кластеризация: простой способ группировки схожих строк и предотвращения ненужной обработки данных

В моей предыдущей статье я объяснил, как оптимизировать SQL-запросы с помощью разбиения на части:

Используйте разбиения, Люк! Простой и проверенный способ оптимизации SQL-запросов

Если вы когда-либо писали SQL-запрос, который выполняется очень долго, то эта статья для вас

towardsdatascience.com

Теперь я пишу продолжение! (Шутка для папы, кому-нибудь?)

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

Что такое кластеризованная таблица?

В BigQuery кластеризованная таблица – это таблица, в которой похожие строки группируются вместе в физических “блоках”.

Например, представьте себе таблицу с именем user_signups, которая отслеживает всех людей, регистрирующих аккаунт на вымышленном веб-сайте. Она имеет четыре столбца:

  • registration_date: дата создания аккаунта пользователя
  • country: страна, где пользователь находится
  • tier: план пользователя (“Бесплатный” или “Платный”)
  • username: имя пользователя

Если мы хотим, мы можем кластеризовать таблицу по полю country, чтобы пользователи из одной и той же страны находились рядом друг с другом в таблице:

Изображение от автора

Как видите, каждый “блок” в таблице содержит пользователей из определенной страны. В кластеризованной таблице данные остаются теми же, просто упорядочены более эффективно.

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

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