Поэтому я подумал, что при кластеризации с billing_ID я должен увидеть увеличение производительности панели инструментов
Обратите внимание на следующие моменты:
Структура кластера
Поле Cluster состоит из массива полей, таких как блоки, от внешнего к внутреннему, состояние As в BigQuery link
Когда вы кластеризуете таблицу, используя несколько столбцов, важен порядок указанных столбцов. Порядок указанных столбцов определяет порядок сортировки данных.
Это означает, что, как писал @Gordon, в вашем запросе часть WHERE
должна начинаться с внешнего поля во внутреннее, чтобы максимально эффективно использовать поле кластера. В вашем случае, если userId является частью WHERE
, вам нужно изменить поле кластера, чтобы оно соответствовало этому
Ограничение кластера
Кластер обычно лучше работает для запросов, которые сканируют более 1 ГБ данных, поэтому, если вы не сканируете этот объем данных, вы не увидите ожидаемого улучшения
Кластер с таблицами проглатывания
Предполагая, что ваш dara не статичен, и вы продолжаете добавлять данные в вашу таблицу, datagcp , вы должны знать, что кластеризация индексации - это процесс, который BigQuery выполняет автономно для операции вставки и отдельный для секционирования .
Побочным эффектом является то, что ваша кластеризация со временем «ослабнет». Чтобы решить эту проблему, вам нужно будет использовать команду merge
для перестройки кластера, чтобы получить максимальную отдачу от кластера
Из документов:
«Со временем, когда все больше и больше операций изменяют таблицу, степень сортировки данных начинает ослабевать, и таблица становится частично отсортированной».