У меня есть таблица Google BigQuery, содержащая 500 000 строк, которые я настроил для разделения на поле TIMESTAMP с именем Date и кластеризации с помощью поля STRING с именем EventCategory (это всего лишь пример таблицы, содержащей более 500 миллионов строк).
У меня есть копия таблицы, которая не разделена и не кластеризована.
Я выполняю следующий запрос для обеих таблиц:
SELECT
*
FROM
`table_name`
WHERE
EventCategory = "email"
Всего 2400 строк, где EventCategory - это "электронная почта".Когда я запускаю запрос к некластеризованной таблице, я получаю следующее:
Когда я запускаю запрос к кластеризованной таблице, я получаю следующее:
Вот схема как некластеризованной, так и кластеризованной таблицы:
Date TIMESTAMP NULLABLE
UserId STRING NULLABLE
EventCategory STRING NULLABLE
EventAction STRING NULLABLE
EventLabel STRING NULLABLE
EventValue STRING NULLABLE
По сути, нет никакой разницы междудва запроса и сколько данных они просматривают, и я не могу понять, почему?Я подтвердил, что кластеризованная таблица разбита на части и кластеризована, потому что в пользовательском интерфейсе BigQuery в деталях таблицы это фактически говорит об этом, и выполнение запроса с фильтрацией по дате значительно уменьшает размер искомых данных и показывает, что предполагаемый размер запроса будет намного меньше.
Любая помощь здесь будет принята с благодарностью!
ОБНОВЛЕНИЕ:
Если я изменю запрос на:
SELECT
*
FROM
`table_name`
WHERE
EventCategory = "ad"
Я получаю следующий результат:
Есть 53640 строк с EventCategory "ad", и похоже, что кластеризация привела к сканированию меньшего количества данных таблицыХотя и не намного меньше (529,2 МБ по сравнению с 586 МБ).
Таким образом, похоже, что кластеризация работает, но данные не сгруппированы должным образом в таблице?Как бы я это исправить?Я попытался повторно создать таблицу несколько раз с использованием DDL и даже сохранить данные таблицы в JSON в GCS, а затем импортировать их в новую многораздельную и кластеризованную таблицу, но она ничего не изменила.
разделение даты сидеть на вершине кластеризации?Имеется в виду, что BigQuery сначала группирует по дате, а затем группирует по кластерам в этих группах дат?Если это так, я думаю, что это, вероятно, объяснит это, но это сделает кластеризацию не очень полезной.