🔵 BigQuery Deep Dive
Партиционирование, кластеризация, оптимизация, управление затратами, BigQuery ML
🗄️ Partitioning
Партиционирование таблиц — разделение данных на физические сегменты. Ingestion time партиционирование (по умолчанию). Column partitioning: DATE, TIMESTAMP, INTEGER. Partition pruning — использование столбца партиции в фильтре WHERE → сканируется меньше данных → снижаются затраты. Максимум 4000 партиций.
⚡ Clustering
Дополнительная сортировка внутри партиции. Cluster columns: от 1 до 4 столбцов. Фильтр или агрегация по кластерному столбцу — ускорение за счёт block pruning. Partitioning + Clustering вместе: partitioning — макроуровень, clustering — микроуровень. Auto-reclustering — BigQuery управляет этим самостоятельно.
💰 Cost Optimization
On-demand: оплата за сканируемые ТБ ($6.25/ТБ). Capacity pricing: slot commitments (monthly/annual). `SELECT *` — сканирует все столбцы = дорого! Materialized Views — кэширование результатов часто используемых запросов. BI Engine — ускорение запросов в оперативной памяти. `bq --dry_run` — предварительный расчёт стоимости.
🤖 BigQuery ML
Обучение и применение ML-моделей на SQL. Supported models: Linear/Logistic Regression, k-Means clustering, Matrix Factorization, XGBoost, TensorFlow import, Autoencoder. `CREATE MODEL`, `ML.PREDICT`, `ML.EVALUATE`. Данные в SQL — без Python/Jupyter. Масштаб проекта: хранилище BigQuery.
📊 Partitioning vs Clustering
| Характеристика | Partitioning | Clustering |
|---|---|---|
| Механизм | Физическое разбиение файлов | Сортировка внутри партиции |
| Назначение | Macro data skipping | Micro data skipping (block) |
| Столбец фильтра | Partition column (WHERE) | 1–4 cluster column (WHERE/GROUP) |
| Максимум | 4000 партиций | 4 столбца |
| Совместно | Да, совместно оптимально | Да, совместно оптимально |
💡 Ключевые моменты
- Partitioning: физическое разбиение (DATE, INT range)
- Clustering: сортировка внутри партиции, 1–4 столбца
- Partition pruning: WHERE фильтр → меньше сканируемых данных → дешевле
- SELECT *: все столбцы = дорого, выбирайте только нужные столбцы
- BigQuery ML: обучение и предсказание модели на SQL
- Materialized View: кэширование результатов частых запросов
🎯 Советы для экзамена
- Partition column: если не используется в WHERE → сканируются все партиции!
- Cluster column: при использовании в GROUP BY или WHERE срабатывает block pruning
- SELECT * → все столбцы; при колоночном хранении запрашивайте только нужные столбцы
- BigQuery ML — ML на SQL для дата-сайентистов: без навыков Python
- bq --dry_run — просмотр стоимости без выполнения реального запроса (оценка затрат)
⚠️ Частые ошибки
- Считать partitioning и clustering одним и тем же — partitioning=уровень файлов, clustering=уровень блоков
- Считать Materialized View обычным View: Materialized = вычислен и сохранён, обычный = вычисляется при каждом запуске
- Считать, что BigQuery ML поддерживает все типы ML-моделей — список поддерживаемых моделей ограничен
🧠 Для запоминания: "PC Power" = Partitioning (разбиение файлов) + Clustering (сортировка внутри) = идеальная пара для оптимизации BigQuery. "SELECT * = Деньги на ветер" — всегда выбирайте конкретные столбцы
Проверьте себя по теме «BigQuery Deep Dive»
Бесплатные интерактивные тесты, пробный экзамен и полные уроки — на платформе CertMaster.
Начать бесплатно →