Партиціювання та кластеризація — це два потужних інструменти для оптимізації даних у BigQuery, які допомагають зменшити витрати та покращити продуктивність.
Партиціювання дозволяє розділяти дані на частини, зазвичай за датою або часовим міткою, що дозволяє BigQuery пропускати непотрібні частини даних і економити ресурси. Кластеризація ж організовує дані всередині партицій, сортуячи їх за обраними стовпцями. Це дозволяє значно скоротити обсяг сканованих даних, об'єднуючи схожі рядки разом.
Уявіть це як двошаровий підхід: партиції розділяють дані за великими логічними одиницями, а кластеризація ще більше структурує ці дані для швидшого доступу.
Перед тим як застосовувати ці техніки, важливо проаналізувати, як користувачі зазвичай використовують запити. Якщо вони часто фільтрують дані за датою чи часовими мітками або певними стовпцями, то саме ці стовпці мають стати основою для партиціювання та кластеризації.
Є кілька типових методів партиціювання, наприклад, за датою чи часом (для логів подій або часових рядів) або за діапазоном цілих чисел (наприклад, для user_id
чи product_id
). Для аналітичних задач зазвичай вибирають партиціювання за датою/часом.
Після цього можна вибрати стовпці для кластеризації. Вони повинні бути такими, які використовуються для фільтрації або агрегації, наприклад, region
, category
чи customer_id
. Важливо не перевантажувати таблицю занадто великою кількістю стовпців для кластеризації, щоб не знизити ефективність.
Далі, створюючи партиційовану та кластеризовану таблицю, можна використовувати запит для партиціювання за датою та кластеризації за країною та user_id
. Це допоможе скоротити обсяг оброблюваних даних, зберігаючи тільки релевантні для запиту частини.
Після створення таблиці ви можете перевірити деталі та виконати запит для вимірювання продуктивності. Якщо використовуєте dbt, можна налаштувати партиціювання та кластеризацію за допомогою відповідних налаштувань.
Для ефективного обслуговування важливо регулярно моніторити запити, витрати та продуктивність. Крім того, не забудьте про автоматичну перекластеризацію даних та налаштування терміну придатності таблиць або партицій для автоматичного очищення старих даних, що допоможе зменшити витрати.
Нарешті, важливо не використовувати більше чотирьох стовпців для кластеризації, оскільки занадто велика кількість може знизити ефективність.
Використання партиціювання та кластеризації дозволяє BigQuery працювати з великими наборами даних швидко і економно, значно зменшуючи обсяг сканованих даних і витрати на обробку.
Перекладено з: Optimizing tables in GBQ with partitions & clusters