Кластеризация в BigQuery с использованием CREATE TABLE - PullRequest
1 голос
/ 10 мая 2019

Не уверен, правильно ли я кластеризую.В основном я смотрю на GCP Billing Info, скажем, на 50 клиентов.У каждого клиента есть Billing_ID, и я кластеризую по этому billing_ID.Я использую кластерную таблицу для информационной панели студии данных

См. Приведенный ниже SQL-запрос, чтобы увидеть, что я делаю сейчас

CREATE OR REPLACE TABLE `dashboardgcp`
  PARTITION BY DATE(usage_start_time)
  CLUSTER BY billing_account_id
  AS
SELECT
  *
FROM
  `datagcp`
WHERE
 usage_start_time BETWEEN TIMESTAMP('2019-01-01')
  AND TIMESTAMP(CURRENT_DATE)

Это успешно кластеризовано, как я, я просто неЗаметное увеличение производительности запросов!

1 Ответ

1 голос
/ 10 мая 2019

Поэтому я подумал, что при кластеризации с billing_ID я должен увидеть увеличение производительности панели инструментов

Обратите внимание на следующие моменты:

Структура кластера
Поле Cluster состоит из массива полей, таких как блоки, от внешнего к внутреннему, состояние As в BigQuery link

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

Это означает, что, как писал @Gordon, в вашем запросе часть WHERE должна начинаться с внешнего поля во внутреннее, чтобы максимально эффективно использовать поле кластера. В вашем случае, если userId является частью WHERE, вам нужно изменить поле кластера, чтобы оно соответствовало этому

Ограничение кластера
Кластер обычно лучше работает для запросов, которые сканируют более 1 ГБ данных, поэтому, если вы не сканируете этот объем данных, вы не увидите ожидаемого улучшения

Кластер с таблицами проглатывания
Предполагая, что ваш dara не статичен, и вы продолжаете добавлять данные в вашу таблицу, datagcp , вы должны знать, что кластеризация индексации - это процесс, который BigQuery выполняет автономно для операции вставки и отдельный для секционирования .
Побочным эффектом является то, что ваша кластеризация со временем «ослабнет». Чтобы решить эту проблему, вам нужно будет использовать команду merge для перестройки кластера, чтобы получить максимальную отдачу от кластера

Из документов:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...